gitlab.com/CoiaPrant/sqlite3@v1.19.1/internal/testfixture/testfixture_freebsd_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_freebsd_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  	BUFSIZ                                = 1024
    28  	EOF                                   = -1
    29  	EXPERT_CONFIG_SAMPLE                  = 1
    30  	EXPERT_REPORT_CANDIDATES              = 4
    31  	EXPERT_REPORT_INDEXES                 = 2
    32  	EXPERT_REPORT_PLAN                    = 3
    33  	EXPERT_REPORT_SQL                     = 1
    34  	FILENAME_MAX                          = 1024
    35  	FOPEN_MAX                             = 20
    36  	FTS5_TOKENIZE_AUX                     = 0x0008
    37  	FTS5_TOKENIZE_DOCUMENT                = 0x0004
    38  	FTS5_TOKENIZE_PREFIX                  = 0x0002
    39  	FTS5_TOKENIZE_QUERY                   = 0x0001
    40  	FTS5_TOKEN_COLOCATED                  = 0x0001
    41  	FULLY_WITHIN                          = 2
    42  	HAVE_USLEEP                           = 1
    43  	IDX_HASH_SIZE                         = 1023
    44  	L_ctermid                             = 1024
    45  	L_cuserid                             = 17
    46  	L_tmpnam                              = 1024
    47  	NDEBUG                                = 1
    48  	NOT_WITHIN                            = 0
    49  	PARTLY_WITHIN                         = 1
    50  	P_tmpdir                              = "/tmp/"
    51  	SEEK_CUR                              = 1
    52  	SEEK_END                              = 2
    53  	SEEK_SET                              = 0
    54  	SQLITE3_H                             = 0
    55  	SQLITE3_TEXT                          = 3
    56  	SQLITEEXPERT_H                        = 1
    57  	SQLITE_ABORT                          = 4
    58  	SQLITE_ABORT_ROLLBACK                 = 516
    59  	SQLITE_ACCESS_EXISTS                  = 0
    60  	SQLITE_ACCESS_READ                    = 2
    61  	SQLITE_ACCESS_READWRITE               = 1
    62  	SQLITE_ALTER_TABLE                    = 26
    63  	SQLITE_ANALYZE                        = 28
    64  	SQLITE_ANY                            = 5
    65  	SQLITE_API                            = 0
    66  	SQLITE_APICALL                        = 0
    67  	SQLITE_ATTACH                         = 24
    68  	SQLITE_AUTH                           = 23
    69  	SQLITE_AUTH_USER                      = 279
    70  	SQLITE_BLOB                           = 4
    71  	SQLITE_BUSY                           = 5
    72  	SQLITE_BUSY_RECOVERY                  = 261
    73  	SQLITE_BUSY_SNAPSHOT                  = 517
    74  	SQLITE_BUSY_TIMEOUT                   = 773
    75  	SQLITE_CALLBACK                       = 0
    76  	SQLITE_CANTOPEN                       = 14
    77  	SQLITE_CANTOPEN_CONVPATH              = 1038
    78  	SQLITE_CANTOPEN_DIRTYWAL              = 1294
    79  	SQLITE_CANTOPEN_FULLPATH              = 782
    80  	SQLITE_CANTOPEN_ISDIR                 = 526
    81  	SQLITE_CANTOPEN_NOTEMPDIR             = 270
    82  	SQLITE_CANTOPEN_SYMLINK               = 1550
    83  	SQLITE_CDECL                          = 0
    84  	SQLITE_CHANGESETAPPLY_INVERT          = 0x0002
    85  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT     = 0x0001
    86  	SQLITE_CHANGESETSTART_INVERT          = 0x0002
    87  	SQLITE_CHANGESET_ABORT                = 2
    88  	SQLITE_CHANGESET_CONFLICT             = 3
    89  	SQLITE_CHANGESET_CONSTRAINT           = 4
    90  	SQLITE_CHANGESET_DATA                 = 1
    91  	SQLITE_CHANGESET_FOREIGN_KEY          = 5
    92  	SQLITE_CHANGESET_NOTFOUND             = 2
    93  	SQLITE_CHANGESET_OMIT                 = 0
    94  	SQLITE_CHANGESET_REPLACE              = 1
    95  	SQLITE_CHECKPOINT_FULL                = 1
    96  	SQLITE_CHECKPOINT_PASSIVE             = 0
    97  	SQLITE_CHECKPOINT_RESTART             = 2
    98  	SQLITE_CHECKPOINT_TRUNCATE            = 3
    99  	SQLITE_CKSUMVFS_STATIC                = 1
   100  	SQLITE_CONFIG_COVERING_INDEX_SCAN     = 20
   101  	SQLITE_CONFIG_GETMALLOC               = 5
   102  	SQLITE_CONFIG_GETMUTEX                = 11
   103  	SQLITE_CONFIG_GETPCACHE               = 15
   104  	SQLITE_CONFIG_GETPCACHE2              = 19
   105  	SQLITE_CONFIG_HEAP                    = 8
   106  	SQLITE_CONFIG_LOG                     = 16
   107  	SQLITE_CONFIG_LOOKASIDE               = 13
   108  	SQLITE_CONFIG_MALLOC                  = 4
   109  	SQLITE_CONFIG_MEMDB_MAXSIZE           = 29
   110  	SQLITE_CONFIG_MEMSTATUS               = 9
   111  	SQLITE_CONFIG_MMAP_SIZE               = 22
   112  	SQLITE_CONFIG_MULTITHREAD             = 2
   113  	SQLITE_CONFIG_MUTEX                   = 10
   114  	SQLITE_CONFIG_PAGECACHE               = 7
   115  	SQLITE_CONFIG_PCACHE                  = 14
   116  	SQLITE_CONFIG_PCACHE2                 = 18
   117  	SQLITE_CONFIG_PCACHE_HDRSZ            = 24
   118  	SQLITE_CONFIG_PMASZ                   = 25
   119  	SQLITE_CONFIG_SCRATCH                 = 6
   120  	SQLITE_CONFIG_SERIALIZED              = 3
   121  	SQLITE_CONFIG_SINGLETHREAD            = 1
   122  	SQLITE_CONFIG_SMALL_MALLOC            = 27
   123  	SQLITE_CONFIG_SORTERREF_SIZE          = 28
   124  	SQLITE_CONFIG_SQLLOG                  = 21
   125  	SQLITE_CONFIG_STMTJRNL_SPILL          = 26
   126  	SQLITE_CONFIG_URI                     = 17
   127  	SQLITE_CONFIG_WIN32_HEAPSIZE          = 23
   128  	SQLITE_CONSTRAINT                     = 19
   129  	SQLITE_CONSTRAINT_CHECK               = 275
   130  	SQLITE_CONSTRAINT_COMMITHOOK          = 531
   131  	SQLITE_CONSTRAINT_DATATYPE            = 3091
   132  	SQLITE_CONSTRAINT_FOREIGNKEY          = 787
   133  	SQLITE_CONSTRAINT_FUNCTION            = 1043
   134  	SQLITE_CONSTRAINT_NOTNULL             = 1299
   135  	SQLITE_CONSTRAINT_PINNED              = 2835
   136  	SQLITE_CONSTRAINT_PRIMARYKEY          = 1555
   137  	SQLITE_CONSTRAINT_ROWID               = 2579
   138  	SQLITE_CONSTRAINT_TRIGGER             = 1811
   139  	SQLITE_CONSTRAINT_UNIQUE              = 2067
   140  	SQLITE_CONSTRAINT_VTAB                = 2323
   141  	SQLITE_COPY                           = 0
   142  	SQLITE_CORE                           = 1
   143  	SQLITE_CORRUPT                        = 11
   144  	SQLITE_CORRUPT_INDEX                  = 779
   145  	SQLITE_CORRUPT_SEQUENCE               = 523
   146  	SQLITE_CORRUPT_VTAB                   = 267
   147  	SQLITE_CREATE_INDEX                   = 1
   148  	SQLITE_CREATE_TABLE                   = 2
   149  	SQLITE_CREATE_TEMP_INDEX              = 3
   150  	SQLITE_CREATE_TEMP_TABLE              = 4
   151  	SQLITE_CREATE_TEMP_TRIGGER            = 5
   152  	SQLITE_CREATE_TEMP_VIEW               = 6
   153  	SQLITE_CREATE_TRIGGER                 = 7
   154  	SQLITE_CREATE_VIEW                    = 8
   155  	SQLITE_CREATE_VTABLE                  = 29
   156  	SQLITE_DBCONFIG_DEFENSIVE             = 1010
   157  	SQLITE_DBCONFIG_DQS_DDL               = 1014
   158  	SQLITE_DBCONFIG_DQS_DML               = 1013
   159  	SQLITE_DBCONFIG_ENABLE_FKEY           = 1002
   160  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004
   161  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005
   162  	SQLITE_DBCONFIG_ENABLE_QPSG           = 1007
   163  	SQLITE_DBCONFIG_ENABLE_TRIGGER        = 1003
   164  	SQLITE_DBCONFIG_ENABLE_VIEW           = 1015
   165  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    = 1012
   166  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    = 1016
   167  	SQLITE_DBCONFIG_LOOKASIDE             = 1001
   168  	SQLITE_DBCONFIG_MAINDBNAME            = 1000
   169  	SQLITE_DBCONFIG_MAX                   = 1017
   170  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      = 1006
   171  	SQLITE_DBCONFIG_RESET_DATABASE        = 1009
   172  	SQLITE_DBCONFIG_TRIGGER_EQP           = 1008
   173  	SQLITE_DBCONFIG_TRUSTED_SCHEMA        = 1017
   174  	SQLITE_DBCONFIG_WRITABLE_SCHEMA       = 1011
   175  	SQLITE_DBSTATUS_CACHE_HIT             = 7
   176  	SQLITE_DBSTATUS_CACHE_MISS            = 8
   177  	SQLITE_DBSTATUS_CACHE_SPILL           = 12
   178  	SQLITE_DBSTATUS_CACHE_USED            = 1
   179  	SQLITE_DBSTATUS_CACHE_USED_SHARED     = 11
   180  	SQLITE_DBSTATUS_CACHE_WRITE           = 9
   181  	SQLITE_DBSTATUS_DEFERRED_FKS          = 10
   182  	SQLITE_DBSTATUS_LOOKASIDE_HIT         = 4
   183  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   = 6
   184  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   = 5
   185  	SQLITE_DBSTATUS_LOOKASIDE_USED        = 0
   186  	SQLITE_DBSTATUS_MAX                   = 12
   187  	SQLITE_DBSTATUS_SCHEMA_USED           = 2
   188  	SQLITE_DBSTATUS_STMT_USED             = 3
   189  	SQLITE_DEFAULT_MEMSTATUS              = 0
   190  	SQLITE_DEFAULT_PAGE_SIZE              = 1024
   191  	SQLITE_DELETE                         = 9
   192  	SQLITE_DENY                           = 1
   193  	SQLITE_DEPRECATED                     = 0
   194  	SQLITE_DESERIALIZE_FREEONCLOSE        = 1
   195  	SQLITE_DESERIALIZE_READONLY           = 4
   196  	SQLITE_DESERIALIZE_RESIZEABLE         = 2
   197  	SQLITE_DETACH                         = 25
   198  	SQLITE_DETERMINISTIC                  = 0x000000800
   199  	SQLITE_DIRECTONLY                     = 0x000080000
   200  	SQLITE_DONE                           = 101
   201  	SQLITE_DROP_INDEX                     = 10
   202  	SQLITE_DROP_TABLE                     = 11
   203  	SQLITE_DROP_TEMP_INDEX                = 12
   204  	SQLITE_DROP_TEMP_TABLE                = 13
   205  	SQLITE_DROP_TEMP_TRIGGER              = 14
   206  	SQLITE_DROP_TEMP_VIEW                 = 15
   207  	SQLITE_DROP_TRIGGER                   = 16
   208  	SQLITE_DROP_VIEW                      = 17
   209  	SQLITE_DROP_VTABLE                    = 30
   210  	SQLITE_EMPTY                          = 16
   211  	SQLITE_ENABLE_BYTECODE_VTAB           = 1
   212  	SQLITE_ENABLE_COLUMN_METADATA         = 1
   213  	SQLITE_ENABLE_DBPAGE_VTAB             = 1
   214  	SQLITE_ENABLE_DBSTAT_VTAB             = 1
   215  	SQLITE_ENABLE_DESERIALIZE             = 1
   216  	SQLITE_ENABLE_EXPLAIN_COMMENTS        = 1
   217  	SQLITE_ENABLE_FTS5                    = 1
   218  	SQLITE_ENABLE_GEOPOLY                 = 1
   219  	SQLITE_ENABLE_MATH_FUNCTIONS          = 1
   220  	SQLITE_ENABLE_MEMORY_MANAGEMENT       = 1
   221  	SQLITE_ENABLE_OFFSET_SQL_FUNC         = 1
   222  	SQLITE_ENABLE_PREUPDATE_HOOK          = 1
   223  	SQLITE_ENABLE_RBU                     = 1
   224  	SQLITE_ENABLE_RTREE                   = 1
   225  	SQLITE_ENABLE_SESSION                 = 1
   226  	SQLITE_ENABLE_SNAPSHOT                = 1
   227  	SQLITE_ENABLE_STAT4                   = 1
   228  	SQLITE_ENABLE_STMTVTAB                = 1
   229  	SQLITE_ENABLE_UNLOCK_NOTIFY           = 1
   230  	SQLITE_ERROR                          = 1
   231  	SQLITE_ERROR_MISSING_COLLSEQ          = 257
   232  	SQLITE_ERROR_RETRY                    = 513
   233  	SQLITE_ERROR_SNAPSHOT                 = 769
   234  	SQLITE_EXPERIMENTAL                   = 0
   235  	SQLITE_FAIL                           = 3
   236  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE       = 31
   237  	SQLITE_FCNTL_BUSYHANDLER              = 15
   238  	SQLITE_FCNTL_CHUNK_SIZE               = 6
   239  	SQLITE_FCNTL_CKPT_DONE                = 37
   240  	SQLITE_FCNTL_CKPT_START               = 39
   241  	SQLITE_FCNTL_CKSM_FILE                = 41
   242  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE      = 32
   243  	SQLITE_FCNTL_COMMIT_PHASETWO          = 22
   244  	SQLITE_FCNTL_DATA_VERSION             = 35
   245  	SQLITE_FCNTL_EXTERNAL_READER          = 40
   246  	SQLITE_FCNTL_FILE_POINTER             = 7
   247  	SQLITE_FCNTL_GET_LOCKPROXYFILE        = 2
   248  	SQLITE_FCNTL_HAS_MOVED                = 20
   249  	SQLITE_FCNTL_JOURNAL_POINTER          = 28
   250  	SQLITE_FCNTL_LAST_ERRNO               = 4
   251  	SQLITE_FCNTL_LOCKSTATE                = 1
   252  	SQLITE_FCNTL_LOCK_TIMEOUT             = 34
   253  	SQLITE_FCNTL_MMAP_SIZE                = 18
   254  	SQLITE_FCNTL_OVERWRITE                = 11
   255  	SQLITE_FCNTL_PDB                      = 30
   256  	SQLITE_FCNTL_PERSIST_WAL              = 10
   257  	SQLITE_FCNTL_POWERSAFE_OVERWRITE      = 13
   258  	SQLITE_FCNTL_PRAGMA                   = 14
   259  	SQLITE_FCNTL_RBU                      = 26
   260  	SQLITE_FCNTL_RESERVE_BYTES            = 38
   261  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE    = 33
   262  	SQLITE_FCNTL_SET_LOCKPROXYFILE        = 3
   263  	SQLITE_FCNTL_SIZE_HINT                = 5
   264  	SQLITE_FCNTL_SIZE_LIMIT               = 36
   265  	SQLITE_FCNTL_SYNC                     = 21
   266  	SQLITE_FCNTL_SYNC_OMITTED             = 8
   267  	SQLITE_FCNTL_TEMPFILENAME             = 16
   268  	SQLITE_FCNTL_TRACE                    = 19
   269  	SQLITE_FCNTL_VFSNAME                  = 12
   270  	SQLITE_FCNTL_VFS_POINTER              = 27
   271  	SQLITE_FCNTL_WAL_BLOCK                = 24
   272  	SQLITE_FCNTL_WIN32_AV_RETRY           = 9
   273  	SQLITE_FCNTL_WIN32_GET_HANDLE         = 29
   274  	SQLITE_FCNTL_WIN32_SET_HANDLE         = 23
   275  	SQLITE_FCNTL_ZIPVFS                   = 25
   276  	SQLITE_FLOAT                          = 2
   277  	SQLITE_FORMAT                         = 24
   278  	SQLITE_FULL                           = 13
   279  	SQLITE_FUNCTION                       = 31
   280  	SQLITE_GET_LOCKPROXYFILE              = 2
   281  	SQLITE_IGNORE                         = 2
   282  	SQLITE_INDEX_CONSTRAINT_EQ            = 2
   283  	SQLITE_INDEX_CONSTRAINT_FUNCTION      = 150
   284  	SQLITE_INDEX_CONSTRAINT_GE            = 32
   285  	SQLITE_INDEX_CONSTRAINT_GLOB          = 66
   286  	SQLITE_INDEX_CONSTRAINT_GT            = 4
   287  	SQLITE_INDEX_CONSTRAINT_IS            = 72
   288  	SQLITE_INDEX_CONSTRAINT_ISNOT         = 69
   289  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL     = 70
   290  	SQLITE_INDEX_CONSTRAINT_ISNULL        = 71
   291  	SQLITE_INDEX_CONSTRAINT_LE            = 8
   292  	SQLITE_INDEX_CONSTRAINT_LIKE          = 65
   293  	SQLITE_INDEX_CONSTRAINT_LIMIT         = 73
   294  	SQLITE_INDEX_CONSTRAINT_LT            = 16
   295  	SQLITE_INDEX_CONSTRAINT_MATCH         = 64
   296  	SQLITE_INDEX_CONSTRAINT_NE            = 68
   297  	SQLITE_INDEX_CONSTRAINT_OFFSET        = 74
   298  	SQLITE_INDEX_CONSTRAINT_REGEXP        = 67
   299  	SQLITE_INDEX_SCAN_UNIQUE              = 1
   300  	SQLITE_INNOCUOUS                      = 0x000200000
   301  	SQLITE_INSERT                         = 18
   302  	SQLITE_INTEGER                        = 1
   303  	SQLITE_INTERNAL                       = 2
   304  	SQLITE_INTERRUPT                      = 9
   305  	SQLITE_IOCAP_ATOMIC                   = 0x00000001
   306  	SQLITE_IOCAP_ATOMIC16K                = 0x00000040
   307  	SQLITE_IOCAP_ATOMIC1K                 = 0x00000004
   308  	SQLITE_IOCAP_ATOMIC2K                 = 0x00000008
   309  	SQLITE_IOCAP_ATOMIC32K                = 0x00000080
   310  	SQLITE_IOCAP_ATOMIC4K                 = 0x00000010
   311  	SQLITE_IOCAP_ATOMIC512                = 0x00000002
   312  	SQLITE_IOCAP_ATOMIC64K                = 0x00000100
   313  	SQLITE_IOCAP_ATOMIC8K                 = 0x00000020
   314  	SQLITE_IOCAP_BATCH_ATOMIC             = 0x00004000
   315  	SQLITE_IOCAP_IMMUTABLE                = 0x00002000
   316  	SQLITE_IOCAP_POWERSAFE_OVERWRITE      = 0x00001000
   317  	SQLITE_IOCAP_SAFE_APPEND              = 0x00000200
   318  	SQLITE_IOCAP_SEQUENTIAL               = 0x00000400
   319  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN    = 0x00000800
   320  	SQLITE_IOERR                          = 10
   321  	SQLITE_IOERR_ACCESS                   = 3338
   322  	SQLITE_IOERR_AUTH                     = 7178
   323  	SQLITE_IOERR_BEGIN_ATOMIC             = 7434
   324  	SQLITE_IOERR_BLOCKED                  = 2826
   325  	SQLITE_IOERR_CHECKRESERVEDLOCK        = 3594
   326  	SQLITE_IOERR_CLOSE                    = 4106
   327  	SQLITE_IOERR_COMMIT_ATOMIC            = 7690
   328  	SQLITE_IOERR_CONVPATH                 = 6666
   329  	SQLITE_IOERR_CORRUPTFS                = 8458
   330  	SQLITE_IOERR_DATA                     = 8202
   331  	SQLITE_IOERR_DELETE                   = 2570
   332  	SQLITE_IOERR_DELETE_NOENT             = 5898
   333  	SQLITE_IOERR_DIR_CLOSE                = 4362
   334  	SQLITE_IOERR_DIR_FSYNC                = 1290
   335  	SQLITE_IOERR_FSTAT                    = 1802
   336  	SQLITE_IOERR_FSYNC                    = 1034
   337  	SQLITE_IOERR_GETTEMPPATH              = 6410
   338  	SQLITE_IOERR_LOCK                     = 3850
   339  	SQLITE_IOERR_MMAP                     = 6154
   340  	SQLITE_IOERR_NOMEM                    = 3082
   341  	SQLITE_IOERR_RDLOCK                   = 2314
   342  	SQLITE_IOERR_READ                     = 266
   343  	SQLITE_IOERR_ROLLBACK_ATOMIC          = 7946
   344  	SQLITE_IOERR_SEEK                     = 5642
   345  	SQLITE_IOERR_SHMLOCK                  = 5130
   346  	SQLITE_IOERR_SHMMAP                   = 5386
   347  	SQLITE_IOERR_SHMOPEN                  = 4618
   348  	SQLITE_IOERR_SHMSIZE                  = 4874
   349  	SQLITE_IOERR_SHORT_READ               = 522
   350  	SQLITE_IOERR_TRUNCATE                 = 1546
   351  	SQLITE_IOERR_UNLOCK                   = 2058
   352  	SQLITE_IOERR_VNODE                    = 6922
   353  	SQLITE_IOERR_WRITE                    = 778
   354  	SQLITE_LAST_ERRNO                     = 4
   355  	SQLITE_LIKE_DOESNT_MATCH_BLOBS        = 1
   356  	SQLITE_LIMIT_ATTACHED                 = 7
   357  	SQLITE_LIMIT_COLUMN                   = 2
   358  	SQLITE_LIMIT_COMPOUND_SELECT          = 4
   359  	SQLITE_LIMIT_EXPR_DEPTH               = 3
   360  	SQLITE_LIMIT_FUNCTION_ARG             = 6
   361  	SQLITE_LIMIT_LENGTH                   = 0
   362  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH      = 8
   363  	SQLITE_LIMIT_SQL_LENGTH               = 1
   364  	SQLITE_LIMIT_TRIGGER_DEPTH            = 10
   365  	SQLITE_LIMIT_VARIABLE_NUMBER          = 9
   366  	SQLITE_LIMIT_VDBE_OP                  = 5
   367  	SQLITE_LIMIT_WORKER_THREADS           = 11
   368  	SQLITE_LOCKED                         = 6
   369  	SQLITE_LOCKED_SHAREDCACHE             = 262
   370  	SQLITE_LOCKED_VTAB                    = 518
   371  	SQLITE_LOCK_EXCLUSIVE                 = 4
   372  	SQLITE_LOCK_NONE                      = 0
   373  	SQLITE_LOCK_PENDING                   = 3
   374  	SQLITE_LOCK_RESERVED                  = 2
   375  	SQLITE_LOCK_SHARED                    = 1
   376  	SQLITE_MISMATCH                       = 20
   377  	SQLITE_MISUSE                         = 21
   378  	SQLITE_MUTEX_APPDEF                   = 1
   379  	SQLITE_MUTEX_FAST                     = 0
   380  	SQLITE_MUTEX_NOOP                     = 1
   381  	SQLITE_MUTEX_RECURSIVE                = 1
   382  	SQLITE_MUTEX_STATIC_APP1              = 8
   383  	SQLITE_MUTEX_STATIC_APP2              = 9
   384  	SQLITE_MUTEX_STATIC_APP3              = 10
   385  	SQLITE_MUTEX_STATIC_LRU               = 6
   386  	SQLITE_MUTEX_STATIC_LRU2              = 7
   387  	SQLITE_MUTEX_STATIC_MAIN              = 2
   388  	SQLITE_MUTEX_STATIC_MASTER            = 2
   389  	SQLITE_MUTEX_STATIC_MEM               = 3
   390  	SQLITE_MUTEX_STATIC_MEM2              = 4
   391  	SQLITE_MUTEX_STATIC_OPEN              = 4
   392  	SQLITE_MUTEX_STATIC_PMEM              = 7
   393  	SQLITE_MUTEX_STATIC_PRNG              = 5
   394  	SQLITE_MUTEX_STATIC_VFS1              = 11
   395  	SQLITE_MUTEX_STATIC_VFS2              = 12
   396  	SQLITE_MUTEX_STATIC_VFS3              = 13
   397  	SQLITE_NOLFS                          = 22
   398  	SQLITE_NOMEM                          = 7
   399  	SQLITE_NOTADB                         = 26
   400  	SQLITE_NOTFOUND                       = 12
   401  	SQLITE_NOTICE                         = 27
   402  	SQLITE_NOTICE_RECOVER_ROLLBACK        = 539
   403  	SQLITE_NOTICE_RECOVER_WAL             = 283
   404  	SQLITE_NULL                           = 5
   405  	SQLITE_OK                             = 0
   406  	SQLITE_OK_LOAD_PERMANENTLY            = 256
   407  	SQLITE_OK_SYMLINK                     = 512
   408  	SQLITE_OMIT_LOAD_EXTENSION            = 1
   409  	SQLITE_OPEN_AUTOPROXY                 = 0x00000020
   410  	SQLITE_OPEN_CREATE                    = 0x00000004
   411  	SQLITE_OPEN_DELETEONCLOSE             = 0x00000008
   412  	SQLITE_OPEN_EXCLUSIVE                 = 0x00000010
   413  	SQLITE_OPEN_EXRESCODE                 = 0x02000000
   414  	SQLITE_OPEN_FULLMUTEX                 = 0x00010000
   415  	SQLITE_OPEN_MAIN_DB                   = 0x00000100
   416  	SQLITE_OPEN_MAIN_JOURNAL              = 0x00000800
   417  	SQLITE_OPEN_MASTER_JOURNAL            = 0x00004000
   418  	SQLITE_OPEN_MEMORY                    = 0x00000080
   419  	SQLITE_OPEN_NOFOLLOW                  = 0x01000000
   420  	SQLITE_OPEN_NOMUTEX                   = 0x00008000
   421  	SQLITE_OPEN_PRIVATECACHE              = 0x00040000
   422  	SQLITE_OPEN_READONLY                  = 0x00000001
   423  	SQLITE_OPEN_READWRITE                 = 0x00000002
   424  	SQLITE_OPEN_SHAREDCACHE               = 0x00020000
   425  	SQLITE_OPEN_SUBJOURNAL                = 0x00002000
   426  	SQLITE_OPEN_SUPER_JOURNAL             = 0x00004000
   427  	SQLITE_OPEN_TEMP_DB                   = 0x00000200
   428  	SQLITE_OPEN_TEMP_JOURNAL              = 0x00001000
   429  	SQLITE_OPEN_TRANSIENT_DB              = 0x00000400
   430  	SQLITE_OPEN_URI                       = 0x00000040
   431  	SQLITE_OPEN_WAL                       = 0x00080000
   432  	SQLITE_PERM                           = 3
   433  	SQLITE_PRAGMA                         = 19
   434  	SQLITE_PREPARE_NORMALIZE              = 0x02
   435  	SQLITE_PREPARE_NO_VTAB                = 0x04
   436  	SQLITE_PREPARE_PERSISTENT             = 0x01
   437  	SQLITE_PROTOCOL                       = 15
   438  	SQLITE_RANGE                          = 25
   439  	SQLITE_READ                           = 20
   440  	SQLITE_READONLY                       = 8
   441  	SQLITE_READONLY_CANTINIT              = 1288
   442  	SQLITE_READONLY_CANTLOCK              = 520
   443  	SQLITE_READONLY_DBMOVED               = 1032
   444  	SQLITE_READONLY_DIRECTORY             = 1544
   445  	SQLITE_READONLY_RECOVERY              = 264
   446  	SQLITE_READONLY_ROLLBACK              = 776
   447  	SQLITE_RECURSIVE                      = 33
   448  	SQLITE_REINDEX                        = 27
   449  	SQLITE_REPLACE                        = 5
   450  	SQLITE_ROLLBACK                       = 1
   451  	SQLITE_ROW                            = 100
   452  	SQLITE_SAVEPOINT                      = 32
   453  	SQLITE_SCANSTAT_EST                   = 2
   454  	SQLITE_SCANSTAT_EXPLAIN               = 4
   455  	SQLITE_SCANSTAT_NAME                  = 3
   456  	SQLITE_SCANSTAT_NLOOP                 = 0
   457  	SQLITE_SCANSTAT_NVISIT                = 1
   458  	SQLITE_SCANSTAT_SELECTID              = 5
   459  	SQLITE_SCHEMA                         = 17
   460  	SQLITE_SELECT                         = 21
   461  	SQLITE_SERIALIZE_NOCOPY               = 0x001
   462  	SQLITE_SERIES_CONSTRAINT_VERIFY       = 1
   463  	SQLITE_SERVER                         = 1
   464  	SQLITE_SESSION_CONFIG_STRMSIZE        = 1
   465  	SQLITE_SESSION_OBJCONFIG_SIZE         = 1
   466  	SQLITE_SET_LOCKPROXYFILE              = 3
   467  	SQLITE_SHM_EXCLUSIVE                  = 8
   468  	SQLITE_SHM_LOCK                       = 2
   469  	SQLITE_SHM_NLOCK                      = 8
   470  	SQLITE_SHM_SHARED                     = 4
   471  	SQLITE_SHM_UNLOCK                     = 1
   472  	SQLITE_SOUNDEX                        = 1
   473  	SQLITE_SOURCE_ID                      = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   474  	SQLITE_STATUS_MALLOC_COUNT            = 9
   475  	SQLITE_STATUS_MALLOC_SIZE             = 5
   476  	SQLITE_STATUS_MEMORY_USED             = 0
   477  	SQLITE_STATUS_PAGECACHE_OVERFLOW      = 2
   478  	SQLITE_STATUS_PAGECACHE_SIZE          = 7
   479  	SQLITE_STATUS_PAGECACHE_USED          = 1
   480  	SQLITE_STATUS_PARSER_STACK            = 6
   481  	SQLITE_STATUS_SCRATCH_OVERFLOW        = 4
   482  	SQLITE_STATUS_SCRATCH_SIZE            = 8
   483  	SQLITE_STATUS_SCRATCH_USED            = 3
   484  	SQLITE_STDCALL                        = 0
   485  	SQLITE_STMTSTATUS_AUTOINDEX           = 3
   486  	SQLITE_STMTSTATUS_FILTER_HIT          = 8
   487  	SQLITE_STMTSTATUS_FILTER_MISS         = 7
   488  	SQLITE_STMTSTATUS_FULLSCAN_STEP       = 1
   489  	SQLITE_STMTSTATUS_MEMUSED             = 99
   490  	SQLITE_STMTSTATUS_REPREPARE           = 5
   491  	SQLITE_STMTSTATUS_RUN                 = 6
   492  	SQLITE_STMTSTATUS_SORT                = 2
   493  	SQLITE_STMTSTATUS_VM_STEP             = 4
   494  	SQLITE_SUBTYPE                        = 0x000100000
   495  	SQLITE_SYNC_DATAONLY                  = 0x00010
   496  	SQLITE_SYNC_FULL                      = 0x00003
   497  	SQLITE_SYNC_NORMAL                    = 0x00002
   498  	SQLITE_SYSAPI                         = 0
   499  	SQLITE_TEMP_STORE                     = 1
   500  	SQLITE_TEST                           = 1
   501  	SQLITE_TESTCTRL_ALWAYS                = 13
   502  	SQLITE_TESTCTRL_ASSERT                = 12
   503  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   = 10
   504  	SQLITE_TESTCTRL_BITVEC_TEST           = 8
   505  	SQLITE_TESTCTRL_BYTEORDER             = 22
   506  	SQLITE_TESTCTRL_EXPLAIN_STMT          = 19
   507  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   = 29
   508  	SQLITE_TESTCTRL_FAULT_INSTALL         = 9
   509  	SQLITE_TESTCTRL_FIRST                 = 5
   510  	SQLITE_TESTCTRL_IMPOSTER              = 25
   511  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS    = 17
   512  	SQLITE_TESTCTRL_ISINIT                = 23
   513  	SQLITE_TESTCTRL_ISKEYWORD             = 16
   514  	SQLITE_TESTCTRL_LAST                  = 33
   515  	SQLITE_TESTCTRL_LOCALTIME_FAULT       = 18
   516  	SQLITE_TESTCTRL_LOGEST                = 33
   517  	SQLITE_TESTCTRL_NEVER_CORRUPT         = 20
   518  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD  = 19
   519  	SQLITE_TESTCTRL_OPTIMIZATIONS         = 15
   520  	SQLITE_TESTCTRL_PARSER_COVERAGE       = 26
   521  	SQLITE_TESTCTRL_PENDING_BYTE          = 11
   522  	SQLITE_TESTCTRL_PRNG_RESET            = 7
   523  	SQLITE_TESTCTRL_PRNG_RESTORE          = 6
   524  	SQLITE_TESTCTRL_PRNG_SAVE             = 5
   525  	SQLITE_TESTCTRL_PRNG_SEED             = 28
   526  	SQLITE_TESTCTRL_RESERVE               = 14
   527  	SQLITE_TESTCTRL_RESULT_INTREAL        = 27
   528  	SQLITE_TESTCTRL_SCRATCHMALLOC         = 17
   529  	SQLITE_TESTCTRL_SEEK_COUNT            = 30
   530  	SQLITE_TESTCTRL_SORTER_MMAP           = 24
   531  	SQLITE_TESTCTRL_TRACEFLAGS            = 31
   532  	SQLITE_TESTCTRL_TUNE                  = 32
   533  	SQLITE_TESTCTRL_VDBE_COVERAGE         = 21
   534  	SQLITE_TEXT                           = 3
   535  	SQLITE_THREADSAFE                     = 1
   536  	SQLITE_TOOBIG                         = 18
   537  	SQLITE_TRACE_CLOSE                    = 0x08
   538  	SQLITE_TRACE_PROFILE                  = 0x02
   539  	SQLITE_TRACE_ROW                      = 0x04
   540  	SQLITE_TRACE_STMT                     = 0x01
   541  	SQLITE_TRANSACTION                    = 22
   542  	SQLITE_TXN_NONE                       = 0
   543  	SQLITE_TXN_READ                       = 1
   544  	SQLITE_TXN_WRITE                      = 2
   545  	SQLITE_UPDATE                         = 23
   546  	SQLITE_UTF16                          = 4
   547  	SQLITE_UTF16BE                        = 3
   548  	SQLITE_UTF16LE                        = 2
   549  	SQLITE_UTF16_ALIGNED                  = 8
   550  	SQLITE_UTF8                           = 1
   551  	SQLITE_VERSION                        = "3.39.3"
   552  	SQLITE_VERSION_NUMBER                 = 3039003
   553  	SQLITE_VTAB_CONSTRAINT_SUPPORT        = 1
   554  	SQLITE_VTAB_DIRECTONLY                = 3
   555  	SQLITE_VTAB_INNOCUOUS                 = 2
   556  	SQLITE_WARNING                        = 28
   557  	SQLITE_WARNING_AUTOINDEX              = 284
   558  	SQLITE_WIN32_DATA_DIRECTORY_TYPE      = 1
   559  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE      = 2
   560  	TMP_MAX                               = 308915776
   561  	UNIQUE_TABLE_NAME                     = "t592690916721053953805701627921227776"
   562  	X_ASSERT_H_                           = 0
   563  	X_ERRNO_T_DEFINED                     = 0
   564  	X_FILE_OFFSET_BITS                    = 64
   565  	X_FSTDIO                              = 0
   566  	X_FTRUNCATE_DECLARED                  = 0
   567  	X_FTS5_H                              = 0
   568  	X_HAVE_SQLITE_CONFIG_H                = 1
   569  	X_IOFBF                               = 0
   570  	X_IOLBF                               = 1
   571  	X_IONBF                               = 2
   572  	X_LOCALE_T_DEFINED                    = 0
   573  	X_LP64                                = 1
   574  	X_LSEEK_DECLARED                      = 0
   575  	X_MACHINE_STDARG_H_                   = 0
   576  	X_MACHINE__LIMITS_H_                  = 0
   577  	X_MACHINE__TYPES_H_                   = 0
   578  	X_MMAP_DECLARED                       = 0
   579  	X_Nonnull                             = 0
   580  	X_Null_unspecified                    = 0
   581  	X_Nullable                            = 0
   582  	X_OFF64_T_DECLARED                    = 0
   583  	X_OFF_T_DECLARED                      = 0
   584  	X_RSIZE_T_DEFINED                     = 0
   585  	X_SIZE_T_DECLARED                     = 0
   586  	X_SQLITE3RTREE_H_                     = 0
   587  	X_SSIZE_T_DECLARED                    = 0
   588  	X_STDFILE_DECLARED                    = 0
   589  	X_STDIO_H_                            = 0
   590  	X_STDSTREAM_DECLARED                  = 0
   591  	X_STRINGS_H_                          = 0
   592  	X_STRING_H_                           = 0
   593  	X_SWAB_DECLARED                       = 0
   594  	X_SYS_CDEFS_H_                        = 0
   595  	X_SYS__STDARG_H_                      = 0
   596  	X_SYS__TYPES_H_                       = 0
   597  	X_TRUNCATE_DECLARED                   = 0
   598  	X_VA_LIST_DECLARED                    = 0
   599  	X_XLOCALE_STRING1_H                   = 0
   600  	X_XLOCALE_STRINGS1_H                  = 0
   601  	Unix                                  = 1
   602  	CRTIMPORT                             = 0
   603  	DLLIMPORT                             = 0
   604  	INLINE                                = 0
   605  	MP_DIGIT_DECLARED                     = 0
   606  	MP_INT_DECLARED                       = 0
   607  	NUM_STATIC_TOKENS                     = 20
   608  	SQLITE_TCLAPI                         = 0
   609  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   610  	TCL_ALL_EVENTS                        = -3
   611  	TCL_ALPHA_RELEASE                     = 0
   612  	TCL_APPEND_VALUE                      = 4
   613  	TCL_ARGV_CONSTANT                     = 15
   614  	TCL_ARGV_END                          = 23
   615  	TCL_ARGV_FLOAT                        = 19
   616  	TCL_ARGV_FUNC                         = 20
   617  	TCL_ARGV_GENFUNC                      = 21
   618  	TCL_ARGV_HELP                         = 22
   619  	TCL_ARGV_INT                          = 16
   620  	TCL_ARGV_REST                         = 18
   621  	TCL_ARGV_STRING                       = 17
   622  	TCL_BETA_RELEASE                      = 1
   623  	TCL_BREAK                             = 3
   624  	TCL_CANCEL_UNWIND                     = 0x100000
   625  	TCL_CHANNEL_THREAD_INSERT             = 0
   626  	TCL_CHANNEL_THREAD_REMOVE             = 1
   627  	TCL_CLOSE_READ                        = 2
   628  	TCL_CLOSE_WRITE                       = 4
   629  	TCL_CONTINUE                          = 4
   630  	TCL_CONVERT_MULTIBYTE                 = -1
   631  	TCL_CONVERT_NOSPACE                   = -4
   632  	TCL_CONVERT_SYNTAX                    = -2
   633  	TCL_CONVERT_UNKNOWN                   = -3
   634  	TCL_CREATE_HARD_LINK                  = 0x02
   635  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   636  	TCL_CUSTOM_PTR_KEYS                   = -1
   637  	TCL_CUSTOM_TYPE_KEYS                  = -2
   638  	TCL_DONT_QUOTE_HASH                   = 8
   639  	TCL_DONT_USE_BRACES                   = 1
   640  	TCL_DONT_WAIT                         = 2
   641  	TCL_DOUBLE_SPACE                      = 27
   642  	TCL_DSTRING_STATIC_SIZE               = 200
   643  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   644  	TCL_ENCODING_END                      = 0x02
   645  	TCL_ENCODING_NO_TERMINATE             = 0x08
   646  	TCL_ENCODING_START                    = 0x01
   647  	TCL_ENCODING_STOPONERROR              = 0x04
   648  	TCL_ENFORCE_MODE                      = 16
   649  	TCL_ENSEMBLE_PREFIX                   = 0x02
   650  	TCL_ERROR                             = 1
   651  	TCL_EVAL_DIRECT                       = 0x040000
   652  	TCL_EVAL_GLOBAL                       = 0x020000
   653  	TCL_EVAL_INVOKE                       = 0x080000
   654  	TCL_EVAL_NOERR                        = 0x200000
   655  	TCL_EXACT                             = 1
   656  	TCL_EXCEPTION                         = 8
   657  	TCL_FILE_EVENTS                       = 8
   658  	TCL_FINAL_RELEASE                     = 2
   659  	TCL_GLOBAL_ONLY                       = 1
   660  	TCL_GLOB_PERM_HIDDEN                  = 2
   661  	TCL_GLOB_PERM_R                       = 4
   662  	TCL_GLOB_PERM_RONLY                   = 1
   663  	TCL_GLOB_PERM_W                       = 8
   664  	TCL_GLOB_PERM_X                       = 16
   665  	TCL_GLOB_TYPE_BLOCK                   = 1
   666  	TCL_GLOB_TYPE_CHAR                    = 2
   667  	TCL_GLOB_TYPE_DIR                     = 4
   668  	TCL_GLOB_TYPE_FILE                    = 16
   669  	TCL_GLOB_TYPE_LINK                    = 32
   670  	TCL_GLOB_TYPE_MOUNT                   = 128
   671  	TCL_GLOB_TYPE_PIPE                    = 8
   672  	TCL_GLOB_TYPE_SOCK                    = 64
   673  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   674  	TCL_HASH_KEY_STORE_HASH               = 1
   675  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   676  	TCL_HASH_KEY_TYPE_VERSION             = 1
   677  	TCL_IDLE_EVENTS                       = 32
   678  	TCL_INTEGER_SPACE                     = 24
   679  	TCL_INTERP_DESTROYED                  = 0x100
   680  	TCL_LEAVE_ERR_MSG                     = 0x200
   681  	TCL_LIMIT_COMMANDS                    = 0x01
   682  	TCL_LIMIT_TIME                        = 0x02
   683  	TCL_LINK_BOOLEAN                      = 3
   684  	TCL_LINK_CHAR                         = 6
   685  	TCL_LINK_DOUBLE                       = 2
   686  	TCL_LINK_FLOAT                        = 13
   687  	TCL_LINK_INT                          = 1
   688  	TCL_LINK_LONG                         = 11
   689  	TCL_LINK_READ_ONLY                    = 0x80
   690  	TCL_LINK_SHORT                        = 8
   691  	TCL_LINK_STRING                       = 4
   692  	TCL_LINK_UCHAR                        = 7
   693  	TCL_LINK_UINT                         = 10
   694  	TCL_LINK_ULONG                        = 12
   695  	TCL_LINK_USHORT                       = 9
   696  	TCL_LINK_WIDE_INT                     = 5
   697  	TCL_LINK_WIDE_UINT                    = 14
   698  	TCL_LIST_ELEMENT                      = 8
   699  	TCL_LL_MODIFIER                       = "ll"
   700  	TCL_LOAD_GLOBAL                       = 1
   701  	TCL_LOAD_LAZY                         = 2
   702  	TCL_MAJOR_VERSION                     = 8
   703  	TCL_MATCH_NOCASE                      = 1
   704  	TCL_MAX_PREC                          = 17
   705  	TCL_MINOR_VERSION                     = 6
   706  	TCL_MODE_BLOCKING                     = 0
   707  	TCL_MODE_NONBLOCKING                  = 1
   708  	TCL_NAMESPACE_ONLY                    = 2
   709  	TCL_NORETURN1                         = 0
   710  	TCL_NO_EVAL                           = 0x010000
   711  	TCL_OK                                = 0
   712  	TCL_ONE_WORD_KEYS                     = 1
   713  	TCL_PARSE_BAD_NUMBER                  = 9
   714  	TCL_PARSE_BRACE_EXTRA                 = 2
   715  	TCL_PARSE_MISSING_BRACE               = 3
   716  	TCL_PARSE_MISSING_BRACKET             = 4
   717  	TCL_PARSE_MISSING_PAREN               = 5
   718  	TCL_PARSE_MISSING_QUOTE               = 6
   719  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   720  	TCL_PARSE_PART1                       = 0x400
   721  	TCL_PARSE_QUOTE_EXTRA                 = 1
   722  	TCL_PARSE_SUCCESS                     = 0
   723  	TCL_PARSE_SYNTAX                      = 8
   724  	TCL_PATCH_LEVEL                       = "8.6.12"
   725  	TCL_READABLE                          = 2
   726  	TCL_REG_ADVANCED                      = 000003
   727  	TCL_REG_ADVF                          = 000002
   728  	TCL_REG_BASIC                         = 000000
   729  	TCL_REG_CANMATCH                      = 001000
   730  	TCL_REG_EXPANDED                      = 000040
   731  	TCL_REG_EXTENDED                      = 000001
   732  	TCL_REG_NEWLINE                       = 000300
   733  	TCL_REG_NLANCH                        = 000200
   734  	TCL_REG_NLSTOP                        = 000100
   735  	TCL_REG_NOCASE                        = 000010
   736  	TCL_REG_NOSUB                         = 000020
   737  	TCL_REG_NOTBOL                        = 0001
   738  	TCL_REG_NOTEOL                        = 0002
   739  	TCL_REG_QUOTE                         = 000004
   740  	TCL_RELEASE_LEVEL                     = 2
   741  	TCL_RELEASE_SERIAL                    = 12
   742  	TCL_RESULT_SIZE                       = 200
   743  	TCL_RETURN                            = 2
   744  	TCL_SERVICE_ALL                       = 1
   745  	TCL_SERVICE_NONE                      = 0
   746  	TCL_SMALL_HASH_TABLE                  = 4
   747  	TCL_STDERR                            = 8
   748  	TCL_STDIN                             = 2
   749  	TCL_STDOUT                            = 4
   750  	TCL_STORAGE_CLASS                     = 0
   751  	TCL_STRING_KEYS                       = 0
   752  	TCL_SUBST_ALL                         = 007
   753  	TCL_SUBST_BACKSLASHES                 = 004
   754  	TCL_SUBST_COMMANDS                    = 001
   755  	TCL_SUBST_VARIABLES                   = 002
   756  	TCL_THREAD_CREATE_RETURN              = 0
   757  	TCL_THREAD_JOINABLE                   = 1
   758  	TCL_THREAD_NOFLAGS                    = 0
   759  	TCL_THREAD_STACK_DEFAULT              = 0
   760  	TCL_TIMER_EVENTS                      = 16
   761  	TCL_TOKEN_BS                          = 8
   762  	TCL_TOKEN_COMMAND                     = 16
   763  	TCL_TOKEN_EXPAND_WORD                 = 256
   764  	TCL_TOKEN_OPERATOR                    = 128
   765  	TCL_TOKEN_SIMPLE_WORD                 = 2
   766  	TCL_TOKEN_SUB_EXPR                    = 64
   767  	TCL_TOKEN_TEXT                        = 4
   768  	TCL_TOKEN_VARIABLE                    = 32
   769  	TCL_TOKEN_WORD                        = 1
   770  	TCL_TRACE_ARRAY                       = 0x800
   771  	TCL_TRACE_DELETE                      = 0x4000
   772  	TCL_TRACE_DESTROYED                   = 0x80
   773  	TCL_TRACE_OLD_STYLE                   = 0x1000
   774  	TCL_TRACE_READS                       = 0x10
   775  	TCL_TRACE_RENAME                      = 0x2000
   776  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   777  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   778  	TCL_TRACE_UNSETS                      = 0x40
   779  	TCL_TRACE_WRITES                      = 0x20
   780  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   781  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   782  	TCL_UTF_MAX                           = 3
   783  	TCL_VERSION                           = "8.6"
   784  	TCL_WINDOW_EVENTS                     = 4
   785  	TCL_WRITABLE                          = 4
   786  	TCL_ZLIB_COMPRESS_BEST                = 9
   787  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   788  	TCL_ZLIB_COMPRESS_FAST                = 1
   789  	TCL_ZLIB_COMPRESS_NONE                = 0
   790  	TCL_ZLIB_FINALIZE                     = 4
   791  	TCL_ZLIB_FLUSH                        = 2
   792  	TCL_ZLIB_FORMAT_AUTO                  = 8
   793  	TCL_ZLIB_FORMAT_GZIP                  = 4
   794  	TCL_ZLIB_FORMAT_RAW                   = 1
   795  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   796  	TCL_ZLIB_FULLFLUSH                    = 3
   797  	TCL_ZLIB_NO_FLUSH                     = 0
   798  	TCL_ZLIB_STREAM_DEFLATE               = 16
   799  	TCL_ZLIB_STREAM_INFLATE               = 32
   800  	X_CLIENTDATA                          = 0
   801  	X_TCL                                 = 0
   802  	X_TCLDECLS                            = 0
   803  	X_TCLPLATDECLS                        = 0
   804  	X_FTSINT_H                            = 0
   805  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   806  	APND_MARK_FOS_SZ                      = 8
   807  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   808  	APND_MARK_PREFIX_SZ                   = 17
   809  	APND_MARK_SIZE                        = 25
   810  	APND_MAX_SIZE                         = 1073741824
   811  	APND_ROUNDUP                          = 4096
   812  	SQLITE3EXT_H                          = 0
   813  	SQLITE_EXTENSION_INIT1                = 0
   814  	SQLITE_EXTENSION_INIT3                = 0
   815  	AMATCH_COL_COMMAND                    = 3
   816  	AMATCH_COL_DISTANCE                   = 1
   817  	AMATCH_COL_LANGUAGE                   = 2
   818  	AMATCH_COL_NWORD                      = 4
   819  	AMATCH_COL_WORD                       = 0
   820  	AMATCH_MX_COST                        = 1000
   821  	AMATCH_MX_LANGID                      = 2147483647
   822  	AMATCH_MX_LENGTH                      = 50
   823  	EXIT_FAILURE                          = 1
   824  	EXIT_SUCCESS                          = 0
   825  	RAND_MAX                              = 0x7fffffff
   826  	X_CACHED_RUNES                        = 256
   827  	X_CRMASK                              = -256
   828  	X_CTYPE_A                             = 0x00000100
   829  	X_CTYPE_B                             = 0x00020000
   830  	X_CTYPE_C                             = 0x00000200
   831  	X_CTYPE_D                             = 0x00000400
   832  	X_CTYPE_G                             = 0x00000800
   833  	X_CTYPE_H_                            = 0
   834  	X_CTYPE_I                             = 0x00080000
   835  	X_CTYPE_L                             = 0x00001000
   836  	X_CTYPE_N                             = 0x00400000
   837  	X_CTYPE_P                             = 0x00002000
   838  	X_CTYPE_Q                             = 0x00200000
   839  	X_CTYPE_R                             = 0x00040000
   840  	X_CTYPE_S                             = 0x00004000
   841  	X_CTYPE_SW0                           = 0x20000000
   842  	X_CTYPE_SW1                           = 0x40000000
   843  	X_CTYPE_SW2                           = 0x80000000
   844  	X_CTYPE_SW3                           = 0xc0000000
   845  	X_CTYPE_SWM                           = 0xe0000000
   846  	X_CTYPE_SWS                           = 30
   847  	X_CTYPE_T                             = 0x00100000
   848  	X_CTYPE_U                             = 0x00008000
   849  	X_CTYPE_X                             = 0x00010000
   850  	X_MKDTEMP_DECLARED                    = 0
   851  	X_MKSTEMP_DECLARED                    = 0
   852  	X_MKTEMP_DECLARED                     = 0
   853  	X_RUNETYPE_H_                         = 0
   854  	X_RUNE_MAGIC_1                        = "RuneMagi"
   855  	X_RUNE_T_DECLARED                     = 0
   856  	X_STDLIB_H_                           = 0
   857  	X_WCHAR_T_DECLARED                    = 0
   858  	X_XLOCALE_CTYPE_H                     = 0
   859  	X_XLOCALE_RUN_FUNCTIONS_DEFINED       = 1
   860  	CARRAY_COLUMN_COUNT                   = 2
   861  	CARRAY_COLUMN_CTYPE                   = 3
   862  	CARRAY_COLUMN_POINTER                 = 1
   863  	CARRAY_COLUMN_VALUE                   = 0
   864  	CARRAY_DOUBLE                         = 2
   865  	CARRAY_INT32                          = 0
   866  	CARRAY_INT64                          = 1
   867  	CARRAY_TEXT                           = 3
   868  	CLOSURE_COL_DEPTH                     = 1
   869  	CLOSURE_COL_ID                        = 0
   870  	CLOSURE_COL_IDCOLUMN                  = 4
   871  	CLOSURE_COL_PARENTCOLUMN              = 5
   872  	CLOSURE_COL_ROOT                      = 2
   873  	CLOSURE_COL_TABLENAME                 = 3
   874  	CSVTEST_FIDX                          = 0x0001
   875  	CSV_INBUFSZ                           = 1024
   876  	CSV_MXERR                             = 200
   877  	EXPLN_COLUMN_ADDR                     = 0
   878  	EXPLN_COLUMN_COMMENT                  = 7
   879  	EXPLN_COLUMN_OPCODE                   = 1
   880  	EXPLN_COLUMN_P1                       = 2
   881  	EXPLN_COLUMN_P2                       = 3
   882  	EXPLN_COLUMN_P3                       = 4
   883  	EXPLN_COLUMN_P4                       = 5
   884  	EXPLN_COLUMN_P5                       = 6
   885  	EXPLN_COLUMN_SQL                      = 8
   886  	ACCESSPERMS                           = 511
   887  	ALLPERMS                              = 4095
   888  	AT_EACCESS                            = 0x0100
   889  	AT_EMPTY_PATH                         = 0x4000
   890  	AT_FDCWD                              = -100
   891  	AT_REMOVEDIR                          = 0x0800
   892  	AT_RESOLVE_BENEATH                    = 0x2000
   893  	AT_SYMLINK_FOLLOW                     = 0x0400
   894  	AT_SYMLINK_NOFOLLOW                   = 0x0200
   895  	BIG_ENDIAN                            = 4321
   896  	BYTE_ORDER                            = 1234
   897  	CLK_TCK                               = 128
   898  	CLOCKS_PER_SEC                        = 128
   899  	CLOCK_BOOTTIME                        = 5
   900  	CLOCK_MONOTONIC                       = 4
   901  	CLOCK_MONOTONIC_COARSE                = 12
   902  	CLOCK_MONOTONIC_FAST                  = 12
   903  	CLOCK_MONOTONIC_PRECISE               = 11
   904  	CLOCK_PROCESS_CPUTIME_ID              = 15
   905  	CLOCK_PROF                            = 2
   906  	CLOCK_REALTIME                        = 0
   907  	CLOCK_REALTIME_COARSE                 = 10
   908  	CLOCK_REALTIME_FAST                   = 10
   909  	CLOCK_REALTIME_PRECISE                = 9
   910  	CLOCK_SECOND                          = 13
   911  	CLOCK_THREAD_CPUTIME_ID               = 14
   912  	CLOCK_UPTIME                          = 5
   913  	CLOCK_UPTIME_FAST                     = 8
   914  	CLOCK_UPTIME_PRECISE                  = 7
   915  	CLOCK_VIRTUAL                         = 1
   916  	CLOSE_RANGE_CLOEXEC                   = 4
   917  	CPUCLOCK_WHICH_PID                    = 0
   918  	CPUCLOCK_WHICH_TID                    = 1
   919  	DEFFILEMODE                           = 438
   920  	DIRBLKSIZ                             = 1024
   921  	DST_AUST                              = 2
   922  	DST_CAN                               = 6
   923  	DST_EET                               = 5
   924  	DST_MET                               = 4
   925  	DST_NONE                              = 0
   926  	DST_USA                               = 1
   927  	DST_WET                               = 3
   928  	DTF_HIDEW                             = 0x0001
   929  	DTF_NODUP                             = 0x0002
   930  	DTF_REWIND                            = 0x0004
   931  	DT_BLK                                = 6
   932  	DT_CHR                                = 2
   933  	DT_DIR                                = 4
   934  	DT_FIFO                               = 1
   935  	DT_LNK                                = 10
   936  	DT_REG                                = 8
   937  	DT_SOCK                               = 12
   938  	DT_UNKNOWN                            = 0
   939  	DT_WHT                                = 14
   940  	E2BIG                                 = 7
   941  	EACCES                                = 13
   942  	EADDRINUSE                            = 48
   943  	EADDRNOTAVAIL                         = 49
   944  	EAFNOSUPPORT                          = 47
   945  	EAGAIN                                = 35
   946  	EALREADY                              = 37
   947  	EAUTH                                 = 80
   948  	EBADF                                 = 9
   949  	EBADMSG                               = 89
   950  	EBADRPC                               = 72
   951  	EBUSY                                 = 16
   952  	ECANCELED                             = 85
   953  	ECAPMODE                              = 94
   954  	ECHILD                                = 10
   955  	ECONNABORTED                          = 53
   956  	ECONNREFUSED                          = 61
   957  	ECONNRESET                            = 54
   958  	EDEADLK                               = 11
   959  	EDESTADDRREQ                          = 39
   960  	EDOM                                  = 33
   961  	EDOOFUS                               = 88
   962  	EDQUOT                                = 69
   963  	EEXIST                                = 17
   964  	EFAULT                                = 14
   965  	EFBIG                                 = 27
   966  	EFTYPE                                = 79
   967  	EHOSTDOWN                             = 64
   968  	EHOSTUNREACH                          = 65
   969  	EIDRM                                 = 82
   970  	EILSEQ                                = 86
   971  	EINPROGRESS                           = 36
   972  	EINTEGRITY                            = 97
   973  	EINTR                                 = 4
   974  	EINVAL                                = 22
   975  	EIO                                   = 5
   976  	EISCONN                               = 56
   977  	EISDIR                                = 21
   978  	ELAST                                 = 97
   979  	ELOOP                                 = 62
   980  	EMFILE                                = 24
   981  	EMLINK                                = 31
   982  	EMSGSIZE                              = 40
   983  	EMULTIHOP                             = 90
   984  	ENAMETOOLONG                          = 63
   985  	ENEEDAUTH                             = 81
   986  	ENETDOWN                              = 50
   987  	ENETRESET                             = 52
   988  	ENETUNREACH                           = 51
   989  	ENFILE                                = 23
   990  	ENOATTR                               = 87
   991  	ENOBUFS                               = 55
   992  	ENODEV                                = 19
   993  	ENOENT                                = 2
   994  	ENOEXEC                               = 8
   995  	ENOLCK                                = 77
   996  	ENOLINK                               = 91
   997  	ENOMEM                                = 12
   998  	ENOMSG                                = 83
   999  	ENOPROTOOPT                           = 42
  1000  	ENOSPC                                = 28
  1001  	ENOSYS                                = 78
  1002  	ENOTBLK                               = 15
  1003  	ENOTCAPABLE                           = 93
  1004  	ENOTCONN                              = 57
  1005  	ENOTDIR                               = 20
  1006  	ENOTEMPTY                             = 66
  1007  	ENOTRECOVERABLE                       = 95
  1008  	ENOTSOCK                              = 38
  1009  	ENOTSUP                               = 45
  1010  	ENOTTY                                = 25
  1011  	ENXIO                                 = 6
  1012  	EOPNOTSUPP                            = 45
  1013  	EOVERFLOW                             = 84
  1014  	EOWNERDEAD                            = 96
  1015  	EPERM                                 = 1
  1016  	EPFNOSUPPORT                          = 46
  1017  	EPIPE                                 = 32
  1018  	EPROCLIM                              = 67
  1019  	EPROCUNAVAIL                          = 76
  1020  	EPROGMISMATCH                         = 75
  1021  	EPROGUNAVAIL                          = 74
  1022  	EPROTO                                = 92
  1023  	EPROTONOSUPPORT                       = 43
  1024  	EPROTOTYPE                            = 41
  1025  	ERANGE                                = 34
  1026  	EREMOTE                               = 71
  1027  	EROFS                                 = 30
  1028  	ERPCMISMATCH                          = 73
  1029  	ESHUTDOWN                             = 58
  1030  	ESOCKTNOSUPPORT                       = 44
  1031  	ESPIPE                                = 29
  1032  	ESRCH                                 = 3
  1033  	ESTALE                                = 70
  1034  	ETIMEDOUT                             = 60
  1035  	ETOOMANYREFS                          = 59
  1036  	ETXTBSY                               = 26
  1037  	EUSERS                                = 68
  1038  	EWOULDBLOCK                           = 35
  1039  	EXDEV                                 = 18
  1040  	FAPPEND                               = 8
  1041  	FASYNC                                = 64
  1042  	FDSYNC                                = 16777216
  1043  	FD_CLOEXEC                            = 1
  1044  	FD_NONE                               = -200
  1045  	FD_SETSIZE                            = 1024
  1046  	FFSYNC                                = 128
  1047  	FNDELAY                               = 4
  1048  	FNONBLOCK                             = 4
  1049  	FRDAHEAD                              = 512
  1050  	FREAD                                 = 0x0001
  1051  	FSDIR_COLUMN_DATA                     = 3
  1052  	FSDIR_COLUMN_DIR                      = 5
  1053  	FSDIR_COLUMN_MODE                     = 1
  1054  	FSDIR_COLUMN_MTIME                    = 2
  1055  	FSDIR_COLUMN_NAME                     = 0
  1056  	FSDIR_COLUMN_PATH                     = 4
  1057  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1058  	FWRITE                                = 0x0002
  1059  	F_ADD_SEALS                           = 19
  1060  	F_CANCEL                              = 5
  1061  	F_DUP2FD                              = 10
  1062  	F_DUP2FD_CLOEXEC                      = 18
  1063  	F_DUPFD                               = 0
  1064  	F_DUPFD_CLOEXEC                       = 17
  1065  	F_GETFD                               = 1
  1066  	F_GETFL                               = 3
  1067  	F_GETLK                               = 11
  1068  	F_GETOWN                              = 5
  1069  	F_GET_SEALS                           = 20
  1070  	F_ISUNIONSTACK                        = 21
  1071  	F_KINFO                               = 22
  1072  	F_LOCK                                = 1
  1073  	F_OGETLK                              = 7
  1074  	F_OK                                  = 0
  1075  	F_OSETLK                              = 8
  1076  	F_OSETLKW                             = 9
  1077  	F_RDAHEAD                             = 16
  1078  	F_RDLCK                               = 1
  1079  	F_READAHEAD                           = 15
  1080  	F_SEAL_GROW                           = 0x0004
  1081  	F_SEAL_SEAL                           = 0x0001
  1082  	F_SEAL_SHRINK                         = 0x0002
  1083  	F_SEAL_WRITE                          = 0x0008
  1084  	F_SETFD                               = 2
  1085  	F_SETFL                               = 4
  1086  	F_SETLK                               = 12
  1087  	F_SETLKW                              = 13
  1088  	F_SETLK_REMOTE                        = 14
  1089  	F_SETOWN                              = 6
  1090  	F_TEST                                = 3
  1091  	F_TLOCK                               = 2
  1092  	F_ULOCK                               = 0
  1093  	F_UNLCK                               = 2
  1094  	F_UNLCKSYS                            = 4
  1095  	F_WRLCK                               = 3
  1096  	ITIMER_PROF                           = 2
  1097  	ITIMER_REAL                           = 0
  1098  	ITIMER_VIRTUAL                        = 1
  1099  	LITTLE_ENDIAN                         = 1234
  1100  	LOCK_EX                               = 0x02
  1101  	LOCK_NB                               = 0x04
  1102  	LOCK_SH                               = 0x01
  1103  	LOCK_UN                               = 0x08
  1104  	L_INCR                                = 1
  1105  	L_SET                                 = 0
  1106  	L_XTND                                = 2
  1107  	MAXNAMLEN                             = 255
  1108  	O_ACCMODE                             = 0x0003
  1109  	O_APPEND                              = 0x0008
  1110  	O_ASYNC                               = 0x0040
  1111  	O_CLOEXEC                             = 0x00100000
  1112  	O_CREAT                               = 0x0200
  1113  	O_DIRECT                              = 0x00010000
  1114  	O_DIRECTORY                           = 0x00020000
  1115  	O_DSYNC                               = 0x01000000
  1116  	O_EMPTY_PATH                          = 0x02000000
  1117  	O_EXCL                                = 0x0800
  1118  	O_EXEC                                = 0x00040000
  1119  	O_EXLOCK                              = 0x0020
  1120  	O_FSYNC                               = 0x0080
  1121  	O_NDELAY                              = 4
  1122  	O_NOCTTY                              = 0x8000
  1123  	O_NOFOLLOW                            = 0x0100
  1124  	O_NONBLOCK                            = 0x0004
  1125  	O_PATH                                = 0x00400000
  1126  	O_RDONLY                              = 0x0000
  1127  	O_RDWR                                = 0x0002
  1128  	O_RESOLVE_BENEATH                     = 0x00800000
  1129  	O_SEARCH                              = 262144
  1130  	O_SHLOCK                              = 0x0010
  1131  	O_SYNC                                = 0x0080
  1132  	O_TRUNC                               = 0x0400
  1133  	O_TTY_INIT                            = 0x00080000
  1134  	O_VERIFY                              = 0x00200000
  1135  	O_WRONLY                              = 0x0001
  1136  	PDP_ENDIAN                            = 3412
  1137  	POSIX_FADV_DONTNEED                   = 4
  1138  	POSIX_FADV_NOREUSE                    = 5
  1139  	POSIX_FADV_NORMAL                     = 0
  1140  	POSIX_FADV_RANDOM                     = 1
  1141  	POSIX_FADV_SEQUENTIAL                 = 2
  1142  	POSIX_FADV_WILLNEED                   = 3
  1143  	RFCENVG                               = 2048
  1144  	RFCFDG                                = 4096
  1145  	RFCNAMEG                              = 1024
  1146  	RFENVG                                = 2
  1147  	RFFDG                                 = 4
  1148  	RFFLAGS                               = 2416930932
  1149  	RFHIGHPID                             = 262144
  1150  	RFKERNELONLY                          = 268828672
  1151  	RFLINUXTHPN                           = 65536
  1152  	RFMEM                                 = 32
  1153  	RFNAMEG                               = 1
  1154  	RFNOTEG                               = 8
  1155  	RFNOWAIT                              = 64
  1156  	RFPPWAIT                              = 2147483648
  1157  	RFPROC                                = 16
  1158  	RFPROCDESC                            = 268435456
  1159  	RFSIGSHARE                            = 16384
  1160  	RFSPAWN                               = 2147483648
  1161  	RFSTOPPED                             = 131072
  1162  	RFTHREAD                              = 8192
  1163  	RFTSIGMASK                            = 0xFF
  1164  	RFTSIGSHIFT                           = 20
  1165  	RFTSIGZMB                             = 524288
  1166  	R_OK                                  = 0x04
  1167  	SBT_MAX                               = 0x7fffffffffffffff
  1168  	SEEK_DATA                             = 3
  1169  	SEEK_HOLE                             = 4
  1170  	SF_APPEND                             = 0x00040000
  1171  	SF_ARCHIVED                           = 0x00010000
  1172  	SF_IMMUTABLE                          = 0x00020000
  1173  	SF_NOUNLINK                           = 0x00100000
  1174  	SF_SETTABLE                           = 0xffff0000
  1175  	SF_SNAPSHOT                           = 0x00200000
  1176  	STDERR_FILENO                         = 2
  1177  	STDIN_FILENO                          = 0
  1178  	STDOUT_FILENO                         = 1
  1179  	SWAPOFF_FORCE                         = 0x00000001
  1180  	S_BLKSIZE                             = 512
  1181  	S_IEXEC                               = 64
  1182  	S_IFBLK                               = 0060000
  1183  	S_IFCHR                               = 0020000
  1184  	S_IFDIR                               = 0040000
  1185  	S_IFIFO                               = 0010000
  1186  	S_IFLNK                               = 0120000
  1187  	S_IFMT                                = 0170000
  1188  	S_IFREG                               = 0100000
  1189  	S_IFSOCK                              = 0140000
  1190  	S_IFWHT                               = 0160000
  1191  	S_IREAD                               = 256
  1192  	S_IRGRP                               = 0000040
  1193  	S_IROTH                               = 0000004
  1194  	S_IRUSR                               = 0000400
  1195  	S_IRWXG                               = 0000070
  1196  	S_IRWXO                               = 0000007
  1197  	S_IRWXU                               = 0000700
  1198  	S_ISGID                               = 0002000
  1199  	S_ISTXT                               = 0001000
  1200  	S_ISUID                               = 0004000
  1201  	S_ISVTX                               = 0001000
  1202  	S_IWGRP                               = 0000020
  1203  	S_IWOTH                               = 0000002
  1204  	S_IWRITE                              = 128
  1205  	S_IWUSR                               = 0000200
  1206  	S_IXGRP                               = 0000010
  1207  	S_IXOTH                               = 0000001
  1208  	S_IXUSR                               = 0000100
  1209  	TIMER_ABSTIME                         = 0x1
  1210  	TIMER_RELTIME                         = 0x0
  1211  	TIME_UTC                              = 1
  1212  	UF_APPEND                             = 0x00000004
  1213  	UF_ARCHIVE                            = 0x00000800
  1214  	UF_HIDDEN                             = 0x00008000
  1215  	UF_IMMUTABLE                          = 0x00000002
  1216  	UF_NODUMP                             = 0x00000001
  1217  	UF_NOUNLINK                           = 0x00000010
  1218  	UF_OFFLINE                            = 0x00000200
  1219  	UF_OPAQUE                             = 0x00000008
  1220  	UF_READONLY                           = 0x00001000
  1221  	UF_REPARSE                            = 0x00000400
  1222  	UF_SETTABLE                           = 0x0000ffff
  1223  	UF_SPARSE                             = 0x00000100
  1224  	UF_SYSTEM                             = 0x00000080
  1225  	UTIME_NOW                             = -1
  1226  	UTIME_OMIT                            = -2
  1227  	W_OK                                  = 0x02
  1228  	X_OK                                  = 0x01
  1229  	X_ACCMODE_T_DECLARED                  = 0
  1230  	X_BIG_ENDIAN                          = 4321
  1231  	X_BLKCNT_T_DECLARED                   = 0
  1232  	X_BLKSIZE_T_DECLARED                  = 0
  1233  	X_BYTE_ORDER                          = 1234
  1234  	X_CAP_IOCTL_T_DECLARED                = 0
  1235  	X_CAP_RIGHTS_T_DECLARED               = 0
  1236  	X_CLOCKID_T_DECLARED                  = 0
  1237  	X_CLOCK_T_DECLARED                    = 0
  1238  	X_CS_PATH                             = 1
  1239  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS      = 2
  1240  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS     = 3
  1241  	X_CS_POSIX_V6_ILP32_OFF32_LIBS        = 4
  1242  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS     = 5
  1243  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS    = 6
  1244  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS       = 7
  1245  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS       = 8
  1246  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS      = 9
  1247  	X_CS_POSIX_V6_LP64_OFF64_LIBS         = 10
  1248  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS     = 11
  1249  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS    = 12
  1250  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS       = 13
  1251  	X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS   = 14
  1252  	X_DEV_T_DECLARED                      = 0
  1253  	X_DIRENT_H_                           = 0
  1254  	X_FFLAGS_T_DECLARED                   = 0
  1255  	X_FSBLKCNT_T_DECLARED                 = 0
  1256  	X_GETOPT_DECLARED                     = 0
  1257  	X_GID_T_DECLARED                      = 0
  1258  	X_ID_T_DECLARED                       = 0
  1259  	X_INO_T_DECLARED                      = 0
  1260  	X_INT16_T_DECLARED                    = 0
  1261  	X_INT32_T_DECLARED                    = 0
  1262  	X_INT64_T_DECLARED                    = 0
  1263  	X_INT8_T_DECLARED                     = 0
  1264  	X_INTMAX_T_DECLARED                   = 0
  1265  	X_INTPTR_T_DECLARED                   = 0
  1266  	X_IN_ADDR_T_DECLARED                  = 0
  1267  	X_IN_PORT_T_DECLARED                  = 0
  1268  	X_KEY_T_DECLARED                      = 0
  1269  	X_LITTLE_ENDIAN                       = 1234
  1270  	X_LWPID_T_DECLARED                    = 0
  1271  	X_MACHINE_ENDIAN_H_                   = 0
  1272  	X_MKNOD_DECLARED                      = 0
  1273  	X_MODE_T_DECLARED                     = 0
  1274  	X_MQD_T_DECLARED                      = 0
  1275  	X_NLINK_T_DECLARED                    = 0
  1276  	X_OPTRESET_DECLARED                   = 0
  1277  	X_PC_ACL_EXTENDED                     = 59
  1278  	X_PC_ACL_NFS4                         = 64
  1279  	X_PC_ACL_PATH_MAX                     = 60
  1280  	X_PC_ALLOC_SIZE_MIN                   = 10
  1281  	X_PC_ASYNC_IO                         = 53
  1282  	X_PC_CAP_PRESENT                      = 61
  1283  	X_PC_CHOWN_RESTRICTED                 = 7
  1284  	X_PC_FILESIZEBITS                     = 12
  1285  	X_PC_INF_PRESENT                      = 62
  1286  	X_PC_LINK_MAX                         = 1
  1287  	X_PC_MAC_PRESENT                      = 63
  1288  	X_PC_MAX_CANON                        = 2
  1289  	X_PC_MAX_INPUT                        = 3
  1290  	X_PC_MIN_HOLE_SIZE                    = 21
  1291  	X_PC_NAME_MAX                         = 4
  1292  	X_PC_NO_TRUNC                         = 8
  1293  	X_PC_PATH_MAX                         = 5
  1294  	X_PC_PIPE_BUF                         = 6
  1295  	X_PC_PRIO_IO                          = 54
  1296  	X_PC_REC_INCR_XFER_SIZE               = 14
  1297  	X_PC_REC_MAX_XFER_SIZE                = 15
  1298  	X_PC_REC_MIN_XFER_SIZE                = 16
  1299  	X_PC_REC_XFER_ALIGN                   = 17
  1300  	X_PC_SYMLINK_MAX                      = 18
  1301  	X_PC_SYNC_IO                          = 55
  1302  	X_PC_VDISABLE                         = 9
  1303  	X_PDP_ENDIAN                          = 3412
  1304  	X_PID_T_DECLARED                      = 0
  1305  	X_POSIX2_CHAR_TERM                    = 1
  1306  	X_POSIX2_C_BIND                       = 200112
  1307  	X_POSIX2_C_DEV                        = -1
  1308  	X_POSIX2_FORT_DEV                     = -1
  1309  	X_POSIX2_FORT_RUN                     = 200112
  1310  	X_POSIX2_LOCALEDEF                    = -1
  1311  	X_POSIX2_PBS                          = -1
  1312  	X_POSIX2_PBS_ACCOUNTING               = -1
  1313  	X_POSIX2_PBS_CHECKPOINT               = -1
  1314  	X_POSIX2_PBS_LOCATE                   = -1
  1315  	X_POSIX2_PBS_MESSAGE                  = -1
  1316  	X_POSIX2_PBS_TRACK                    = -1
  1317  	X_POSIX2_SW_DEV                       = -1
  1318  	X_POSIX2_UPE                          = 200112
  1319  	X_POSIX2_VERSION                      = 199212
  1320  	X_POSIX_ADVISORY_INFO                 = 200112
  1321  	X_POSIX_ASYNCHRONOUS_IO               = 200112
  1322  	X_POSIX_BARRIERS                      = 200112
  1323  	X_POSIX_CHOWN_RESTRICTED              = 1
  1324  	X_POSIX_CLOCK_SELECTION               = -1
  1325  	X_POSIX_CPUTIME                       = 200112
  1326  	X_POSIX_FSYNC                         = 200112
  1327  	X_POSIX_IPV6                          = 0
  1328  	X_POSIX_JOB_CONTROL                   = 1
  1329  	X_POSIX_MAPPED_FILES                  = 200112
  1330  	X_POSIX_MEMLOCK                       = -1
  1331  	X_POSIX_MEMLOCK_RANGE                 = 200112
  1332  	X_POSIX_MEMORY_PROTECTION             = 200112
  1333  	X_POSIX_MESSAGE_PASSING               = 200112
  1334  	X_POSIX_MONOTONIC_CLOCK               = 200112
  1335  	X_POSIX_NO_TRUNC                      = 1
  1336  	X_POSIX_PRIORITIZED_IO                = -1
  1337  	X_POSIX_PRIORITY_SCHEDULING           = 0
  1338  	X_POSIX_RAW_SOCKETS                   = 200112
  1339  	X_POSIX_READER_WRITER_LOCKS           = 200112
  1340  	X_POSIX_REALTIME_SIGNALS              = 200112
  1341  	X_POSIX_REGEXP                        = 1
  1342  	X_POSIX_SEMAPHORES                    = 200112
  1343  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200112
  1344  	X_POSIX_SHELL                         = 1
  1345  	X_POSIX_SPAWN                         = 200112
  1346  	X_POSIX_SPIN_LOCKS                    = 200112
  1347  	X_POSIX_SPORADIC_SERVER               = -1
  1348  	X_POSIX_SYNCHRONIZED_IO               = -1
  1349  	X_POSIX_THREADS                       = 200112
  1350  	X_POSIX_THREAD_ATTR_STACKADDR         = 200112
  1351  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200112
  1352  	X_POSIX_THREAD_CPUTIME                = 200112
  1353  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = 200112
  1354  	X_POSIX_THREAD_PRIO_INHERIT           = 200112
  1355  	X_POSIX_THREAD_PRIO_PROTECT           = 200112
  1356  	X_POSIX_THREAD_PROCESS_SHARED         = 200112
  1357  	X_POSIX_THREAD_SAFE_FUNCTIONS         = -1
  1358  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1359  	X_POSIX_TIMEOUTS                      = 200112
  1360  	X_POSIX_TIMERS                        = 200112
  1361  	X_POSIX_TRACE                         = -1
  1362  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1363  	X_POSIX_TRACE_INHERIT                 = -1
  1364  	X_POSIX_TRACE_LOG                     = -1
  1365  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1366  	X_POSIX_VDISABLE                      = 0xff
  1367  	X_POSIX_VERSION                       = 200112
  1368  	X_PTHREAD_T_DECLARED                  = 0
  1369  	X_QUAD_HIGHWORD                       = 1
  1370  	X_QUAD_LOWWORD                        = 0
  1371  	X_RLIM_T_DECLARED                     = 0
  1372  	X_SC_2_CHAR_TERM                      = 20
  1373  	X_SC_2_C_BIND                         = 18
  1374  	X_SC_2_C_DEV                          = 19
  1375  	X_SC_2_FORT_DEV                       = 21
  1376  	X_SC_2_FORT_RUN                       = 22
  1377  	X_SC_2_LOCALEDEF                      = 23
  1378  	X_SC_2_PBS                            = 59
  1379  	X_SC_2_PBS_ACCOUNTING                 = 60
  1380  	X_SC_2_PBS_CHECKPOINT                 = 61
  1381  	X_SC_2_PBS_LOCATE                     = 62
  1382  	X_SC_2_PBS_MESSAGE                    = 63
  1383  	X_SC_2_PBS_TRACK                      = 64
  1384  	X_SC_2_SW_DEV                         = 24
  1385  	X_SC_2_UPE                            = 25
  1386  	X_SC_2_VERSION                        = 17
  1387  	X_SC_ADVISORY_INFO                    = 65
  1388  	X_SC_AIO_LISTIO_MAX                   = 42
  1389  	X_SC_AIO_MAX                          = 43
  1390  	X_SC_AIO_PRIO_DELTA_MAX               = 44
  1391  	X_SC_ARG_MAX                          = 1
  1392  	X_SC_ASYNCHRONOUS_IO                  = 28
  1393  	X_SC_ATEXIT_MAX                       = 107
  1394  	X_SC_BARRIERS                         = 66
  1395  	X_SC_BC_BASE_MAX                      = 9
  1396  	X_SC_BC_DIM_MAX                       = 10
  1397  	X_SC_BC_SCALE_MAX                     = 11
  1398  	X_SC_BC_STRING_MAX                    = 12
  1399  	X_SC_CHILD_MAX                        = 2
  1400  	X_SC_CLK_TCK                          = 3
  1401  	X_SC_CLOCK_SELECTION                  = 67
  1402  	X_SC_COLL_WEIGHTS_MAX                 = 13
  1403  	X_SC_CPUSET_SIZE                      = 122
  1404  	X_SC_CPUTIME                          = 68
  1405  	X_SC_DELAYTIMER_MAX                   = 45
  1406  	X_SC_EXPR_NEST_MAX                    = 14
  1407  	X_SC_FILE_LOCKING                     = 69
  1408  	X_SC_FSYNC                            = 38
  1409  	X_SC_GETGR_R_SIZE_MAX                 = 70
  1410  	X_SC_GETPW_R_SIZE_MAX                 = 71
  1411  	X_SC_HOST_NAME_MAX                    = 72
  1412  	X_SC_IOV_MAX                          = 56
  1413  	X_SC_IPV6                             = 118
  1414  	X_SC_JOB_CONTROL                      = 6
  1415  	X_SC_LINE_MAX                         = 15
  1416  	X_SC_LOGIN_NAME_MAX                   = 73
  1417  	X_SC_MAPPED_FILES                     = 29
  1418  	X_SC_MEMLOCK                          = 30
  1419  	X_SC_MEMLOCK_RANGE                    = 31
  1420  	X_SC_MEMORY_PROTECTION                = 32
  1421  	X_SC_MESSAGE_PASSING                  = 33
  1422  	X_SC_MONOTONIC_CLOCK                  = 74
  1423  	X_SC_MQ_OPEN_MAX                      = 46
  1424  	X_SC_MQ_PRIO_MAX                      = 75
  1425  	X_SC_NGROUPS_MAX                      = 4
  1426  	X_SC_NPROCESSORS_CONF                 = 57
  1427  	X_SC_NPROCESSORS_ONLN                 = 58
  1428  	X_SC_OPEN_MAX                         = 5
  1429  	X_SC_PAGESIZE                         = 47
  1430  	X_SC_PAGE_SIZE                        = 47
  1431  	X_SC_PHYS_PAGES                       = 121
  1432  	X_SC_PRIORITIZED_IO                   = 34
  1433  	X_SC_PRIORITY_SCHEDULING              = 35
  1434  	X_SC_RAW_SOCKETS                      = 119
  1435  	X_SC_READER_WRITER_LOCKS              = 76
  1436  	X_SC_REALTIME_SIGNALS                 = 36
  1437  	X_SC_REGEXP                           = 77
  1438  	X_SC_RE_DUP_MAX                       = 16
  1439  	X_SC_RTSIG_MAX                        = 48
  1440  	X_SC_SAVED_IDS                        = 7
  1441  	X_SC_SEMAPHORES                       = 37
  1442  	X_SC_SEM_NSEMS_MAX                    = 49
  1443  	X_SC_SEM_VALUE_MAX                    = 50
  1444  	X_SC_SHARED_MEMORY_OBJECTS            = 39
  1445  	X_SC_SHELL                            = 78
  1446  	X_SC_SIGQUEUE_MAX                     = 51
  1447  	X_SC_SPAWN                            = 79
  1448  	X_SC_SPIN_LOCKS                       = 80
  1449  	X_SC_SPORADIC_SERVER                  = 81
  1450  	X_SC_STREAM_MAX                       = 26
  1451  	X_SC_SYMLOOP_MAX                      = 120
  1452  	X_SC_SYNCHRONIZED_IO                  = 40
  1453  	X_SC_THREADS                          = 96
  1454  	X_SC_THREAD_ATTR_STACKADDR            = 82
  1455  	X_SC_THREAD_ATTR_STACKSIZE            = 83
  1456  	X_SC_THREAD_CPUTIME                   = 84
  1457  	X_SC_THREAD_DESTRUCTOR_ITERATIONS     = 85
  1458  	X_SC_THREAD_KEYS_MAX                  = 86
  1459  	X_SC_THREAD_PRIORITY_SCHEDULING       = 89
  1460  	X_SC_THREAD_PRIO_INHERIT              = 87
  1461  	X_SC_THREAD_PRIO_PROTECT              = 88
  1462  	X_SC_THREAD_PROCESS_SHARED            = 90
  1463  	X_SC_THREAD_SAFE_FUNCTIONS            = 91
  1464  	X_SC_THREAD_SPORADIC_SERVER           = 92
  1465  	X_SC_THREAD_STACK_MIN                 = 93
  1466  	X_SC_THREAD_THREADS_MAX               = 94
  1467  	X_SC_TIMEOUTS                         = 95
  1468  	X_SC_TIMERS                           = 41
  1469  	X_SC_TIMER_MAX                        = 52
  1470  	X_SC_TRACE                            = 97
  1471  	X_SC_TRACE_EVENT_FILTER               = 98
  1472  	X_SC_TRACE_INHERIT                    = 99
  1473  	X_SC_TRACE_LOG                        = 100
  1474  	X_SC_TTY_NAME_MAX                     = 101
  1475  	X_SC_TYPED_MEMORY_OBJECTS             = 102
  1476  	X_SC_TZNAME_MAX                       = 27
  1477  	X_SC_V6_ILP32_OFF32                   = 103
  1478  	X_SC_V6_ILP32_OFFBIG                  = 104
  1479  	X_SC_V6_LP64_OFF64                    = 105
  1480  	X_SC_V6_LPBIG_OFFBIG                  = 106
  1481  	X_SC_VERSION                          = 8
  1482  	X_SC_XOPEN_CRYPT                      = 108
  1483  	X_SC_XOPEN_ENH_I18N                   = 109
  1484  	X_SC_XOPEN_LEGACY                     = 110
  1485  	X_SC_XOPEN_REALTIME                   = 111
  1486  	X_SC_XOPEN_REALTIME_THREADS           = 112
  1487  	X_SC_XOPEN_SHM                        = 113
  1488  	X_SC_XOPEN_STREAMS                    = 114
  1489  	X_SC_XOPEN_UNIX                       = 115
  1490  	X_SC_XOPEN_VERSION                    = 116
  1491  	X_SC_XOPEN_XCU_VERSION                = 117
  1492  	X_SELECT_DECLARED                     = 0
  1493  	X_SIGSET_T_DECLARED                   = 0
  1494  	X_SIG_MAXSIG                          = 128
  1495  	X_SIG_WORDS                           = 4
  1496  	X_SUSECONDS_T_DECLARED                = 0
  1497  	X_SYS_DIRENT_H_                       = 0
  1498  	X_SYS_ERRNO_H_                        = 0
  1499  	X_SYS_FCNTL_H_                        = 0
  1500  	X_SYS_SELECT_H_                       = 0
  1501  	X_SYS_STAT_H_                         = 0
  1502  	X_SYS_SYS__CLOCK_ID_H                 = 0
  1503  	X_SYS_TIMESPEC_H_                     = 0
  1504  	X_SYS_TIME_H_                         = 0
  1505  	X_SYS_TYPES_H_                        = 0
  1506  	X_SYS_UNISTD_H_                       = 0
  1507  	X_SYS__ENDIAN_H_                      = 0
  1508  	X_SYS__PTHREADTYPES_H_                = 0
  1509  	X_SYS__SIGSET_H_                      = 0
  1510  	X_SYS__STDINT_H_                      = 0
  1511  	X_SYS__TIMESPEC_H_                    = 0
  1512  	X_SYS__TIMEVAL_H_                     = 0
  1513  	X_TIMER_T_DECLARED                    = 0
  1514  	X_TIME_H_                             = 0
  1515  	X_TIME_T_DECLARED                     = 0
  1516  	X_UID_T_DECLARED                      = 0
  1517  	X_UINT16_T_DECLARED                   = 0
  1518  	X_UINT32_T_DECLARED                   = 0
  1519  	X_UINT64_T_DECLARED                   = 0
  1520  	X_UINT8_T_DECLARED                    = 0
  1521  	X_UINTMAX_T_DECLARED                  = 0
  1522  	X_UINTPTR_T_DECLARED                  = 0
  1523  	X_UNISTD_H_                           = 0
  1524  	X_USECONDS_T_DECLARED                 = 0
  1525  	X_UTIME_H_                            = 0
  1526  	X_V6_ILP32_OFF32                      = -1
  1527  	X_V6_ILP32_OFFBIG                     = 0
  1528  	X_V6_LP64_OFF64                       = 0
  1529  	X_V6_LPBIG_OFFBIG                     = -1
  1530  	X_XLOCALE_LOCALE1_H                   = 0
  1531  	X_XOPEN_CRYPT                         = -1
  1532  	X_XOPEN_ENH_I18N                      = -1
  1533  	X_XOPEN_LEGACY                        = -1
  1534  	X_XOPEN_REALTIME                      = -1
  1535  	X_XOPEN_REALTIME_THREADS              = -1
  1536  	X_XOPEN_SHM                           = 1
  1537  	X_XOPEN_STREAMS                       = -1
  1538  	X_XOPEN_UNIX                          = -1
  1539  	FUZZER_HASH                           = 4001
  1540  	FUZZER_MX_COST                        = 1000
  1541  	FUZZER_MX_LENGTH                      = 50
  1542  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1543  	FUZZER_MX_RULEID                      = 2147483647
  1544  	FUZZER_NQUEUE                         = 20
  1545  	CC_AND                                = 24
  1546  	CC_BANG                               = 15
  1547  	CC_COMMA                              = 23
  1548  	CC_DIGIT                              = 3
  1549  	CC_DOLLAR                             = 4
  1550  	CC_DOT                                = 26
  1551  	CC_EQ                                 = 14
  1552  	CC_GT                                 = 13
  1553  	CC_ID                                 = 2
  1554  	CC_ILLEGAL                            = 27
  1555  	CC_KYWD                               = 1
  1556  	CC_LP                                 = 17
  1557  	CC_LT                                 = 12
  1558  	CC_MINUS                              = 11
  1559  	CC_PERCENT                            = 22
  1560  	CC_PIPE                               = 10
  1561  	CC_PLUS                               = 20
  1562  	CC_QUOTE                              = 8
  1563  	CC_QUOTE2                             = 9
  1564  	CC_RP                                 = 18
  1565  	CC_SEMI                               = 19
  1566  	CC_SLASH                              = 16
  1567  	CC_SPACE                              = 7
  1568  	CC_STAR                               = 21
  1569  	CC_TILDA                              = 25
  1570  	CC_VARALPHA                           = 5
  1571  	CC_VARNUM                             = 6
  1572  	CC_X                                  = 0
  1573  	TK_BITAND                             = 3
  1574  	TK_BITNOT                             = 3
  1575  	TK_BITOR                              = 3
  1576  	TK_BLOB                               = 2
  1577  	TK_COMMA                              = 3
  1578  	TK_CONCAT                             = 3
  1579  	TK_DOT                                = 3
  1580  	TK_EQ                                 = 3
  1581  	TK_ERROR                              = 4
  1582  	TK_FLOAT                              = 2
  1583  	TK_GE                                 = 3
  1584  	TK_GT                                 = 3
  1585  	TK_ID                                 = 1
  1586  	TK_ILLEGAL                            = 4
  1587  	TK_INTEGER                            = 2
  1588  	TK_LE                                 = 3
  1589  	TK_LITERAL                            = 2
  1590  	TK_LP                                 = 3
  1591  	TK_LSHIFT                             = 3
  1592  	TK_LT                                 = 3
  1593  	TK_MINUS                              = 3
  1594  	TK_NAME                               = 1
  1595  	TK_NE                                 = 3
  1596  	TK_PLUS                               = 3
  1597  	TK_PUNCT                              = 3
  1598  	TK_REM                                = 3
  1599  	TK_RP                                 = 3
  1600  	TK_RSHIFT                             = 3
  1601  	TK_SEMI                               = 3
  1602  	TK_SLASH                              = 3
  1603  	TK_SPACE                              = 0
  1604  	TK_STAR                               = 3
  1605  	TK_STRING                             = 2
  1606  	TK_VARIABLE                           = 2
  1607  	Deliberate_fall_through               = 0
  1608  	QPVTAB_A                              = 6
  1609  	QPVTAB_B                              = 7
  1610  	QPVTAB_C                              = 8
  1611  	QPVTAB_CN                             = 2
  1612  	QPVTAB_D                              = 9
  1613  	QPVTAB_E                              = 10
  1614  	QPVTAB_FLAGS                          = 11
  1615  	QPVTAB_IX                             = 1
  1616  	QPVTAB_NONE                           = 12
  1617  	QPVTAB_OP                             = 3
  1618  	QPVTAB_RHS                            = 5
  1619  	QPVTAB_UX                             = 4
  1620  	QPVTAB_VN                             = 0
  1621  	RE_EOF                                = 0
  1622  	RE_OP_ACCEPT                          = 6
  1623  	RE_OP_ANY                             = 2
  1624  	RE_OP_ANYSTAR                         = 3
  1625  	RE_OP_BOUNDARY                        = 17
  1626  	RE_OP_CC_EXC                          = 8
  1627  	RE_OP_CC_INC                          = 7
  1628  	RE_OP_CC_RANGE                        = 10
  1629  	RE_OP_CC_VALUE                        = 9
  1630  	RE_OP_DIGIT                           = 13
  1631  	RE_OP_FORK                            = 4
  1632  	RE_OP_GOTO                            = 5
  1633  	RE_OP_MATCH                           = 1
  1634  	RE_OP_NOTDIGIT                        = 14
  1635  	RE_OP_NOTSPACE                        = 16
  1636  	RE_OP_NOTWORD                         = 12
  1637  	RE_OP_SPACE                           = 15
  1638  	RE_OP_WORD                            = 11
  1639  	SERIES_COLUMN_START                   = 1
  1640  	SERIES_COLUMN_STEP                    = 3
  1641  	SERIES_COLUMN_STOP                    = 2
  1642  	SERIES_COLUMN_VALUE                   = 0
  1643  	CCLASS_B                              = 2
  1644  	CCLASS_C                              = 3
  1645  	CCLASS_D                              = 4
  1646  	CCLASS_DIGIT                          = 10
  1647  	CCLASS_H                              = 5
  1648  	CCLASS_L                              = 6
  1649  	CCLASS_M                              = 8
  1650  	CCLASS_OTHER                          = 12
  1651  	CCLASS_R                              = 7
  1652  	CCLASS_SILENT                         = 0
  1653  	CCLASS_SPACE                          = 11
  1654  	CCLASS_VOWEL                          = 1
  1655  	CCLASS_Y                              = 9
  1656  	FINAL_INS_COST_DIV                    = 4
  1657  	SCRIPT_ARABIC                         = 0x0010
  1658  	SCRIPT_CYRILLIC                       = 0x0002
  1659  	SCRIPT_GREEK                          = 0x0004
  1660  	SCRIPT_HEBREW                         = 0x0008
  1661  	SCRIPT_LATIN                          = 0x0001
  1662  	SPELLFIX_COL_COMMAND                  = 11
  1663  	SPELLFIX_COL_DISTANCE                 = 2
  1664  	SPELLFIX_COL_LANGID                   = 3
  1665  	SPELLFIX_COL_MATCHLEN                 = 5
  1666  	SPELLFIX_COL_PHONEHASH                = 6
  1667  	SPELLFIX_COL_RANK                     = 1
  1668  	SPELLFIX_COL_SCOPE                    = 8
  1669  	SPELLFIX_COL_SCORE                    = 4
  1670  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1671  	SPELLFIX_COL_SRCHCNT                  = 9
  1672  	SPELLFIX_COL_TOP                      = 7
  1673  	SPELLFIX_COL_WORD                     = 0
  1674  	SPELLFIX_IDXNUM_DIST                  = 48
  1675  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1676  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1677  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1678  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1679  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1680  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1681  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1682  	SPELLFIX_MX_HASH                      = 32
  1683  	SPELLFIX_MX_RUN                       = 1
  1684  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1685  	TOTYPE_BIGENDIAN                      = 0
  1686  	TOTYPE_LITTLEENDIAN                   = 1
  1687  	SWARMVTAB_MAX_OPEN                    = 9
  1688  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1689  	SQLITE_RBU_STATE_DONE                 = 4
  1690  	SQLITE_RBU_STATE_ERROR                = 5
  1691  	SQLITE_RBU_STATE_MOVE                 = 2
  1692  	SQLITE_RBU_STATE_OAL                  = 1
  1693  	X_SQLITE3RBU_H                        = 0
  1694  	BTREE_APPEND                          = 0x08
  1695  	BTREE_APPLICATION_ID                  = 8
  1696  	BTREE_AUTOVACUUM_FULL                 = 1
  1697  	BTREE_AUTOVACUUM_INCR                 = 2
  1698  	BTREE_AUTOVACUUM_NONE                 = 0
  1699  	BTREE_AUXDELETE                       = 0x04
  1700  	BTREE_BLOBKEY                         = 2
  1701  	BTREE_BULKLOAD                        = 0x00000001
  1702  	BTREE_DATA_VERSION                    = 15
  1703  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1704  	BTREE_FILE_FORMAT                     = 2
  1705  	BTREE_FORDELETE                       = 0x00000008
  1706  	BTREE_FREE_PAGE_COUNT                 = 0
  1707  	BTREE_HINT_RANGE                      = 0
  1708  	BTREE_INCR_VACUUM                     = 7
  1709  	BTREE_INTKEY                          = 1
  1710  	BTREE_LARGEST_ROOT_PAGE               = 4
  1711  	BTREE_MEMORY                          = 2
  1712  	BTREE_OMIT_JOURNAL                    = 1
  1713  	BTREE_PREFORMAT                       = 0x80
  1714  	BTREE_SAVEPOSITION                    = 0x02
  1715  	BTREE_SCHEMA_VERSION                  = 1
  1716  	BTREE_SEEK_EQ                         = 0x00000002
  1717  	BTREE_SINGLE                          = 4
  1718  	BTREE_TEXT_ENCODING                   = 5
  1719  	BTREE_UNORDERED                       = 8
  1720  	BTREE_USER_VERSION                    = 6
  1721  	BTREE_WRCSR                           = 0x00000004
  1722  	COLFLAG_BUSY                          = 0x0100
  1723  	COLFLAG_GENERATED                     = 0x0060
  1724  	COLFLAG_HASCOLL                       = 0x0200
  1725  	COLFLAG_HASTYPE                       = 0x0004
  1726  	COLFLAG_HIDDEN                        = 0x0002
  1727  	COLFLAG_NOEXPAND                      = 0x0400
  1728  	COLFLAG_NOINSERT                      = 0x0062
  1729  	COLFLAG_NOTAVAIL                      = 0x0080
  1730  	COLFLAG_PRIMKEY                       = 0x0001
  1731  	COLFLAG_SORTERREF                     = 0x0010
  1732  	COLFLAG_STORED                        = 0x0040
  1733  	COLFLAG_UNIQUE                        = 0x0008
  1734  	COLFLAG_VIRTUAL                       = 0x0020
  1735  	COLNAME_COLUMN                        = 4
  1736  	COLNAME_DATABASE                      = 2
  1737  	COLNAME_DECLTYPE                      = 1
  1738  	COLNAME_N                             = 5
  1739  	COLNAME_NAME                          = 0
  1740  	COLNAME_TABLE                         = 3
  1741  	COLTYPE_ANY                           = 1
  1742  	COLTYPE_BLOB                          = 2
  1743  	COLTYPE_CUSTOM                        = 0
  1744  	COLTYPE_INT                           = 3
  1745  	COLTYPE_INTEGER                       = 4
  1746  	COLTYPE_REAL                          = 5
  1747  	COLTYPE_TEXT                          = 6
  1748  	DBFLAG_EncodingFixed                  = 0x0040
  1749  	DBFLAG_InternalFunc                   = 0x0020
  1750  	DBFLAG_PreferBuiltin                  = 0x0002
  1751  	DBFLAG_SchemaChange                   = 0x0001
  1752  	DBFLAG_SchemaKnownOk                  = 0x0010
  1753  	DBFLAG_Vacuum                         = 0x0004
  1754  	DBFLAG_VacuumInto                     = 0x0008
  1755  	DB_ResetWanted                        = 0x0008
  1756  	DB_SchemaLoaded                       = 0x0001
  1757  	DB_UnresetViews                       = 0x0002
  1758  	ENAME_NAME                            = 0
  1759  	ENAME_SPAN                            = 1
  1760  	ENAME_TAB                             = 2
  1761  	EP_Agg                                = 0x000010
  1762  	EP_CanBeNull                          = 0x200000
  1763  	EP_Collate                            = 0x000200
  1764  	EP_Commuted                           = 0x000400
  1765  	EP_ConstFunc                          = 0x100000
  1766  	EP_DblQuoted                          = 0x000080
  1767  	EP_Distinct                           = 0x000004
  1768  	EP_FixedCol                           = 0x000020
  1769  	EP_FromDDL                            = 0x40000000
  1770  	EP_HasFunc                            = 0x000008
  1771  	EP_IfNullRow                          = 0x040000
  1772  	EP_Immutable                          = 0x02
  1773  	EP_InfixFunc                          = 0x000100
  1774  	EP_InnerON                            = 0x000002
  1775  	EP_IntValue                           = 0x000800
  1776  	EP_IsFalse                            = 0x20000000
  1777  	EP_IsTrue                             = 0x10000000
  1778  	EP_Leaf                               = 0x800000
  1779  	EP_MemToken                           = 0x020000
  1780  	EP_NoReduce                           = 0x01
  1781  	EP_OuterON                            = 0x000001
  1782  	EP_Propagate                          = 4194824
  1783  	EP_Quoted                             = 0x4000000
  1784  	EP_Reduced                            = 0x004000
  1785  	EP_Skip                               = 0x002000
  1786  	EP_Static                             = 0x8000000
  1787  	EP_Subquery                           = 0x400000
  1788  	EP_Subrtn                             = 0x2000000
  1789  	EP_TokenOnly                          = 0x010000
  1790  	EP_Unlikely                           = 0x080000
  1791  	EP_VarSelect                          = 0x000040
  1792  	EP_Win                                = 0x008000
  1793  	EP_WinFunc                            = 0x1000000
  1794  	EP_xIsSelect                          = 0x001000
  1795  	EU4_EXPR                              = 2
  1796  	EU4_IDX                               = 1
  1797  	EU4_NONE                              = 0
  1798  	EXCLUSIVE_LOCK                        = 4
  1799  	EXPRDUP_REDUCE                        = 0x0001
  1800  	GCC_VERSION                           = 4002001
  1801  	HAVE_DLFCN_H                          = 1
  1802  	HAVE_FCHOWN                           = 1
  1803  	HAVE_FDATASYNC                        = 1
  1804  	HAVE_GMTIME_R                         = 1
  1805  	HAVE_INT16_T                          = 1
  1806  	HAVE_INT32_T                          = 1
  1807  	HAVE_INT64_T                          = 1
  1808  	HAVE_INT8_T                           = 1
  1809  	HAVE_INTPTR_T                         = 1
  1810  	HAVE_INTTYPES_H                       = 1
  1811  	HAVE_ISNAN                            = 1
  1812  	HAVE_LOCALTIME_R                      = 1
  1813  	HAVE_LSTAT                            = 1
  1814  	HAVE_MALLOC_H                         = 1
  1815  	HAVE_MALLOC_USABLE_SIZE               = 1
  1816  	HAVE_MEMORY_H                         = 1
  1817  	HAVE_PREAD                            = 1
  1818  	HAVE_PWRITE                           = 1
  1819  	HAVE_READLINK                         = 1
  1820  	HAVE_STDINT_H                         = 1
  1821  	HAVE_STDLIB_H                         = 1
  1822  	HAVE_STRCHRNUL                        = 1
  1823  	HAVE_STRINGS_H                        = 1
  1824  	HAVE_STRING_H                         = 1
  1825  	HAVE_SYS_STAT_H                       = 1
  1826  	HAVE_SYS_TYPES_H                      = 1
  1827  	HAVE_UINT16_T                         = 1
  1828  	HAVE_UINT32_T                         = 1
  1829  	HAVE_UINT64_T                         = 1
  1830  	HAVE_UINT8_T                          = 1
  1831  	HAVE_UINTPTR_T                        = 1
  1832  	HAVE_UNISTD_H                         = 1
  1833  	HAVE_UTIME                            = 1
  1834  	INITFLAG_AlterAdd                     = 0x0003
  1835  	INITFLAG_AlterDrop                    = 0x0002
  1836  	INITFLAG_AlterMask                    = 0x0003
  1837  	INITFLAG_AlterRename                  = 0x0001
  1838  	INLINEFUNC_affinity                   = 4
  1839  	INLINEFUNC_coalesce                   = 0
  1840  	INLINEFUNC_expr_compare               = 3
  1841  	INLINEFUNC_expr_implies_expr          = 2
  1842  	INLINEFUNC_iif                        = 5
  1843  	INLINEFUNC_implies_nonnull_row        = 1
  1844  	INLINEFUNC_sqlite_offset              = 6
  1845  	INLINEFUNC_unlikely                   = 99
  1846  	INT16_MAX                             = 0x7fff
  1847  	INT16_MIN                             = -32768
  1848  	INT32_MAX                             = 0x7fffffff
  1849  	INT32_MIN                             = -2147483648
  1850  	INT64_MAX                             = 0x7fffffffffffffff
  1851  	INT64_MIN                             = -9223372036854775808
  1852  	INT8_MAX                              = 0x7f
  1853  	INT8_MIN                              = -128
  1854  	INTMAX_MAX                            = 9223372036854775807
  1855  	INTMAX_MIN                            = -9223372036854775808
  1856  	INTPTR_MAX                            = 9223372036854775807
  1857  	INTPTR_MIN                            = -9223372036854775808
  1858  	INT_FAST16_MAX                        = 2147483647
  1859  	INT_FAST16_MIN                        = -2147483648
  1860  	INT_FAST32_MAX                        = 2147483647
  1861  	INT_FAST32_MIN                        = -2147483648
  1862  	INT_FAST64_MAX                        = 9223372036854775807
  1863  	INT_FAST64_MIN                        = -9223372036854775808
  1864  	INT_FAST8_MAX                         = 2147483647
  1865  	INT_FAST8_MIN                         = -2147483648
  1866  	INT_LEAST16_MAX                       = 32767
  1867  	INT_LEAST16_MIN                       = -32768
  1868  	INT_LEAST32_MAX                       = 2147483647
  1869  	INT_LEAST32_MIN                       = -2147483648
  1870  	INT_LEAST64_MAX                       = 9223372036854775807
  1871  	INT_LEAST64_MIN                       = -9223372036854775808
  1872  	INT_LEAST8_MAX                        = 127
  1873  	INT_LEAST8_MIN                        = -128
  1874  	IN_INDEX_EPH                          = 2
  1875  	IN_INDEX_INDEX_ASC                    = 3
  1876  	IN_INDEX_INDEX_DESC                   = 4
  1877  	IN_INDEX_LOOP                         = 0x0004
  1878  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1879  	IN_INDEX_NOOP                         = 5
  1880  	IN_INDEX_NOOP_OK                      = 0x0001
  1881  	IN_INDEX_ROWID                        = 1
  1882  	JT_CROSS                              = 0x02
  1883  	JT_ERROR                              = 0x80
  1884  	JT_INNER                              = 0x01
  1885  	JT_LEFT                               = 0x08
  1886  	JT_LTORJ                              = 0x40
  1887  	JT_NATURAL                            = 0x04
  1888  	JT_OUTER                              = 0x20
  1889  	JT_RIGHT                              = 0x10
  1890  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1891  	KEYINFO_ORDER_DESC                    = 0x01
  1892  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1893  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1894  	LOCATE_NOERR                          = 0x02
  1895  	LOCATE_VIEW                           = 0x01
  1896  	LOOKASIDE_SMALL                       = 128
  1897  	LT_OBJDIR                             = ".libs/"
  1898  	M10d_Any                              = 1
  1899  	M10d_No                               = 2
  1900  	M10d_Yes                              = 0
  1901  	MEMTYPE_HEAP                          = 0x01
  1902  	MEMTYPE_LOOKASIDE                     = 0x02
  1903  	MEMTYPE_PCACHE                        = 0x04
  1904  	MSVC_VERSION                          = 0
  1905  	NC_AllowAgg                           = 0x000001
  1906  	NC_AllowWin                           = 0x004000
  1907  	NC_Complex                            = 0x002000
  1908  	NC_FromDDL                            = 0x040000
  1909  	NC_GenCol                             = 0x000008
  1910  	NC_HasAgg                             = 0x000010
  1911  	NC_HasWin                             = 0x008000
  1912  	NC_IdxExpr                            = 0x000020
  1913  	NC_InAggFunc                          = 0x020000
  1914  	NC_IsCheck                            = 0x000004
  1915  	NC_IsDDL                              = 0x010000
  1916  	NC_MinMaxAgg                          = 0x001000
  1917  	NC_NoSelect                           = 0x080000
  1918  	NC_OrderAgg                           = 0x8000000
  1919  	NC_PartIdx                            = 0x000002
  1920  	NC_SelfRef                            = 0x00002e
  1921  	NC_UAggInfo                           = 0x000100
  1922  	NC_UBaseReg                           = 0x000400
  1923  	NC_UEList                             = 0x000080
  1924  	NC_UUpsert                            = 0x000200
  1925  	NC_VarSelect                          = 0x000040
  1926  	NO_LOCK                               = 0
  1927  	OE_Abort                              = 2
  1928  	OE_Cascade                            = 10
  1929  	OE_Default                            = 11
  1930  	OE_Fail                               = 3
  1931  	OE_Ignore                             = 4
  1932  	OE_None                               = 0
  1933  	OE_Replace                            = 5
  1934  	OE_Restrict                           = 7
  1935  	OE_Rollback                           = 1
  1936  	OE_SetDflt                            = 9
  1937  	OE_SetNull                            = 8
  1938  	OE_Update                             = 6
  1939  	OMIT_TEMPDB                           = 0
  1940  	ONEPASS_MULTI                         = 2
  1941  	ONEPASS_OFF                           = 0
  1942  	ONEPASS_SINGLE                        = 1
  1943  	OPFLAG_APPEND                         = 0x08
  1944  	OPFLAG_AUXDELETE                      = 0x04
  1945  	OPFLAG_BULKCSR                        = 0x01
  1946  	OPFLAG_EPHEM                          = 0x01
  1947  	OPFLAG_FORDELETE                      = 0x08
  1948  	OPFLAG_ISNOOP                         = 0x40
  1949  	OPFLAG_ISUPDATE                       = 0x04
  1950  	OPFLAG_LASTROWID                      = 0x20
  1951  	OPFLAG_LENGTHARG                      = 0x40
  1952  	OPFLAG_NCHANGE                        = 0x01
  1953  	OPFLAG_NOCHNG                         = 0x01
  1954  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1955  	OPFLAG_P2ISREG                        = 0x10
  1956  	OPFLAG_PERMUTE                        = 0x01
  1957  	OPFLAG_PREFORMAT                      = 0x80
  1958  	OPFLAG_SAVEPOSITION                   = 0x02
  1959  	OPFLAG_SEEKEQ                         = 0x02
  1960  	OPFLAG_TYPEOFARG                      = 0x80
  1961  	OPFLAG_USESEEKRESULT                  = 0x10
  1962  	OPFLG_IN1                             = 0x02
  1963  	OPFLG_IN2                             = 0x04
  1964  	OPFLG_IN3                             = 0x08
  1965  	OPFLG_JUMP                            = 0x01
  1966  	OPFLG_OUT2                            = 0x10
  1967  	OPFLG_OUT3                            = 0x20
  1968  	OP_Abortable                          = 186
  1969  	OP_Add                                = 106
  1970  	OP_AddImm                             = 86
  1971  	OP_Affinity                           = 96
  1972  	OP_AggFinal                           = 165
  1973  	OP_AggInverse                         = 161
  1974  	OP_AggStep                            = 162
  1975  	OP_AggStep1                           = 163
  1976  	OP_AggValue                           = 164
  1977  	OP_And                                = 44
  1978  	OP_AutoCommit                         = 1
  1979  	OP_BeginSubrtn                        = 74
  1980  	OP_BitAnd                             = 102
  1981  	OP_BitNot                             = 114
  1982  	OP_BitOr                              = 103
  1983  	OP_Blob                               = 77
  1984  	OP_Cast                               = 88
  1985  	OP_Checkpoint                         = 3
  1986  	OP_Clear                              = 145
  1987  	OP_Close                              = 122
  1988  	OP_ClrSubtype                         = 179
  1989  	OP_CollSeq                            = 85
  1990  	OP_Column                             = 94
  1991  	OP_ColumnsUsed                        = 123
  1992  	OP_Compare                            = 90
  1993  	OP_Concat                             = 111
  1994  	OP_Copy                               = 80
  1995  	OP_Count                              = 98
  1996  	OP_CreateBtree                        = 147
  1997  	OP_CursorHint                         = 182
  1998  	OP_CursorLock                         = 167
  1999  	OP_CursorUnlock                       = 168
  2000  	OP_DecrJumpZero                       = 60
  2001  	OP_DeferredSeek                       = 141
  2002  	OP_Delete                             = 130
  2003  	OP_Destroy                            = 144
  2004  	OP_Divide                             = 109
  2005  	OP_DropIndex                          = 152
  2006  	OP_DropTable                          = 151
  2007  	OP_DropTrigger                        = 154
  2008  	OP_ElseEq                             = 58
  2009  	OP_EndCoroutine                       = 68
  2010  	OP_Eq                                 = 53
  2011  	OP_Expire                             = 166
  2012  	OP_Explain                            = 185
  2013  	OP_Filter                             = 63
  2014  	OP_FilterAdd                          = 180
  2015  	OP_FinishSeek                         = 143
  2016  	OP_FkCheck                            = 83
  2017  	OP_FkCounter                          = 158
  2018  	OP_FkIfZero                           = 48
  2019  	OP_Found                              = 28
  2020  	OP_Function                           = 66
  2021  	OP_Ge                                 = 57
  2022  	OP_Gosub                              = 9
  2023  	OP_Goto                               = 8
  2024  	OP_Gt                                 = 54
  2025  	OP_Halt                               = 70
  2026  	OP_HaltIfNull                         = 69
  2027  	OP_IdxDelete                          = 140
  2028  	OP_IdxGE                              = 42
  2029  	OP_IdxGT                              = 40
  2030  	OP_IdxInsert                          = 138
  2031  	OP_IdxLE                              = 39
  2032  	OP_IdxLT                              = 41
  2033  	OP_IdxRowid                           = 142
  2034  	OP_If                                 = 15
  2035  	OP_IfNoHope                           = 25
  2036  	OP_IfNot                              = 16
  2037  	OP_IfNotOpen                          = 24
  2038  	OP_IfNotZero                          = 59
  2039  	OP_IfNullRow                          = 18
  2040  	OP_IfPos                              = 49
  2041  	OP_IfSmaller                          = 32
  2042  	OP_IncrVacuum                         = 61
  2043  	OP_Init                               = 64
  2044  	OP_InitCoroutine                      = 10
  2045  	OP_Insert                             = 128
  2046  	OP_Int64                              = 72
  2047  	OP_IntCopy                            = 82
  2048  	OP_Integer                            = 71
  2049  	OP_IntegrityCk                        = 155
  2050  	OP_IsNull                             = 50
  2051  	OP_IsNullOrType                       = 17
  2052  	OP_IsTrue                             = 91
  2053  	OP_JournalMode                        = 4
  2054  	OP_Jump                               = 13
  2055  	OP_Last                               = 31
  2056  	OP_Le                                 = 55
  2057  	OP_LoadAnalysis                       = 150
  2058  	OP_Lt                                 = 56
  2059  	OP_MakeRecord                         = 97
  2060  	OP_MaxPgcnt                           = 178
  2061  	OP_MemMax                             = 159
  2062  	OP_Move                               = 79
  2063  	OP_Multiply                           = 108
  2064  	OP_MustBeInt                          = 12
  2065  	OP_Ne                                 = 52
  2066  	OP_NewRowid                           = 127
  2067  	OP_Next                               = 38
  2068  	OP_NoConflict                         = 26
  2069  	OP_Noop                               = 184
  2070  	OP_Not                                = 19
  2071  	OP_NotExists                          = 30
  2072  	OP_NotFound                           = 27
  2073  	OP_NotNull                            = 51
  2074  	OP_Null                               = 75
  2075  	OP_NullRow                            = 136
  2076  	OP_Offset                             = 93
  2077  	OP_OffsetLimit                        = 160
  2078  	OP_Once                               = 14
  2079  	OP_OpenAutoindex                      = 116
  2080  	OP_OpenDup                            = 115
  2081  	OP_OpenEphemeral                      = 118
  2082  	OP_OpenPseudo                         = 121
  2083  	OP_OpenRead                           = 112
  2084  	OP_OpenWrite                          = 113
  2085  	OP_Or                                 = 43
  2086  	OP_Pagecount                          = 177
  2087  	OP_Param                              = 157
  2088  	OP_ParseSchema                        = 149
  2089  	OP_Permutation                        = 89
  2090  	OP_Prev                               = 37
  2091  	OP_Program                            = 47
  2092  	OP_PureFunc                           = 65
  2093  	OP_ReadCookie                         = 99
  2094  	OP_Real                               = 153
  2095  	OP_RealAffinity                       = 87
  2096  	OP_ReleaseReg                         = 183
  2097  	OP_Remainder                          = 110
  2098  	OP_ReopenIdx                          = 101
  2099  	OP_ResetCount                         = 131
  2100  	OP_ResetSorter                        = 146
  2101  	OP_ResultRow                          = 84
  2102  	OP_Return                             = 67
  2103  	OP_Rewind                             = 35
  2104  	OP_RowCell                            = 129
  2105  	OP_RowData                            = 134
  2106  	OP_RowSetAdd                          = 156
  2107  	OP_RowSetRead                         = 45
  2108  	OP_RowSetTest                         = 46
  2109  	OP_Rowid                              = 135
  2110  	OP_SCopy                              = 81
  2111  	OP_Savepoint                          = 0
  2112  	OP_SeekEnd                            = 137
  2113  	OP_SeekGE                             = 22
  2114  	OP_SeekGT                             = 23
  2115  	OP_SeekHit                            = 125
  2116  	OP_SeekLE                             = 21
  2117  	OP_SeekLT                             = 20
  2118  	OP_SeekRowid                          = 29
  2119  	OP_SeekScan                           = 124
  2120  	OP_Sequence                           = 126
  2121  	OP_SequenceTest                       = 120
  2122  	OP_SetCookie                          = 100
  2123  	OP_ShiftLeft                          = 104
  2124  	OP_ShiftRight                         = 105
  2125  	OP_SoftNull                           = 76
  2126  	OP_Sort                               = 34
  2127  	OP_SorterCompare                      = 132
  2128  	OP_SorterData                         = 133
  2129  	OP_SorterInsert                       = 139
  2130  	OP_SorterNext                         = 36
  2131  	OP_SorterOpen                         = 119
  2132  	OP_SorterSort                         = 33
  2133  	OP_SqlExec                            = 148
  2134  	OP_String                             = 73
  2135  	OP_String8                            = 117
  2136  	OP_Subtract                           = 107
  2137  	OP_TableLock                          = 169
  2138  	OP_Trace                              = 181
  2139  	OP_Transaction                        = 2
  2140  	OP_TypeCheck                          = 95
  2141  	OP_VBegin                             = 170
  2142  	OP_VColumn                            = 175
  2143  	OP_VCreate                            = 171
  2144  	OP_VDestroy                           = 172
  2145  	OP_VFilter                            = 6
  2146  	OP_VInitIn                            = 174
  2147  	OP_VNext                              = 62
  2148  	OP_VOpen                              = 173
  2149  	OP_VRename                            = 176
  2150  	OP_VUpdate                            = 7
  2151  	OP_Vacuum                             = 5
  2152  	OP_Variable                           = 78
  2153  	OP_Yield                              = 11
  2154  	OP_ZeroOrNull                         = 92
  2155  	OS_VXWORKS                            = 0
  2156  	P4_COLLSEQ                            = -2
  2157  	P4_DYNAMIC                            = -6
  2158  	P4_EXPR                               = -9
  2159  	P4_FREE_IF_LE                         = -6
  2160  	P4_FUNCCTX                            = -15
  2161  	P4_FUNCDEF                            = -7
  2162  	P4_INT32                              = -3
  2163  	P4_INT64                              = -13
  2164  	P4_INTARRAY                           = -14
  2165  	P4_KEYINFO                            = -8
  2166  	P4_MEM                                = -10
  2167  	P4_NOTUSED                            = 0
  2168  	P4_REAL                               = -12
  2169  	P4_STATIC                             = -1
  2170  	P4_SUBPROGRAM                         = -4
  2171  	P4_TABLE                              = -5
  2172  	P4_TRANSIENT                          = 0
  2173  	P4_VTAB                               = -11
  2174  	P5_ConstraintCheck                    = 3
  2175  	P5_ConstraintFK                       = 4
  2176  	P5_ConstraintNotNull                  = 1
  2177  	P5_ConstraintUnique                   = 2
  2178  	PACKAGE_BUGREPORT                     = ""
  2179  	PACKAGE_NAME                          = "sqlite"
  2180  	PACKAGE_STRING                        = "sqlite 3.39.3"
  2181  	PACKAGE_TARNAME                       = "sqlite"
  2182  	PACKAGE_VERSION                       = "3.39.3"
  2183  	PAGER_CACHESPILL                      = 0x20
  2184  	PAGER_CKPT_FULLFSYNC                  = 0x10
  2185  	PAGER_FLAGS_MASK                      = 0x38
  2186  	PAGER_FULLFSYNC                       = 0x08
  2187  	PAGER_GET_NOCONTENT                   = 0x01
  2188  	PAGER_GET_READONLY                    = 0x02
  2189  	PAGER_JOURNALMODE_DELETE              = 0
  2190  	PAGER_JOURNALMODE_MEMORY              = 4
  2191  	PAGER_JOURNALMODE_OFF                 = 2
  2192  	PAGER_JOURNALMODE_PERSIST             = 1
  2193  	PAGER_JOURNALMODE_QUERY               = -1
  2194  	PAGER_JOURNALMODE_TRUNCATE            = 3
  2195  	PAGER_JOURNALMODE_WAL                 = 5
  2196  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  2197  	PAGER_LOCKINGMODE_NORMAL              = 0
  2198  	PAGER_LOCKINGMODE_QUERY               = -1
  2199  	PAGER_MEMORY                          = 0x0002
  2200  	PAGER_OMIT_JOURNAL                    = 0x0001
  2201  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  2202  	PAGER_SYNCHRONOUS_FULL                = 0x03
  2203  	PAGER_SYNCHRONOUS_MASK                = 0x07
  2204  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  2205  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  2206  	PARSE_MODE_DECLARE_VTAB               = 1
  2207  	PARSE_MODE_NORMAL                     = 0
  2208  	PARSE_MODE_RENAME                     = 2
  2209  	PARSE_MODE_UNMAP                      = 3
  2210  	PENDING_LOCK                          = 3
  2211  	PGHDR_CLEAN                           = 0x001
  2212  	PGHDR_DIRTY                           = 0x002
  2213  	PGHDR_DONT_WRITE                      = 0x010
  2214  	PGHDR_MMAP                            = 0x020
  2215  	PGHDR_NEED_SYNC                       = 0x008
  2216  	PGHDR_WAL_APPEND                      = 0x040
  2217  	PGHDR_WRITEABLE                       = 0x004
  2218  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2219  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2220  	PRIX16                                = "X"
  2221  	PRIX32                                = "X"
  2222  	PRIX8                                 = "X"
  2223  	PRIXFAST16                            = "X"
  2224  	PRIXFAST32                            = "X"
  2225  	PRIXFAST8                             = "X"
  2226  	PRIXLEAST16                           = "X"
  2227  	PRIXLEAST32                           = "X"
  2228  	PRIXLEAST8                            = "X"
  2229  	PRIXMAX                               = "jX"
  2230  	PRId16                                = "d"
  2231  	PRId32                                = "d"
  2232  	PRId8                                 = "d"
  2233  	PRIdFAST16                            = "d"
  2234  	PRIdFAST32                            = "d"
  2235  	PRIdFAST8                             = "d"
  2236  	PRIdLEAST16                           = "d"
  2237  	PRIdLEAST32                           = "d"
  2238  	PRIdLEAST8                            = "d"
  2239  	PRIdMAX                               = "jd"
  2240  	PRIi16                                = "i"
  2241  	PRIi32                                = "i"
  2242  	PRIi8                                 = "i"
  2243  	PRIiFAST16                            = "i"
  2244  	PRIiFAST32                            = "i"
  2245  	PRIiFAST8                             = "i"
  2246  	PRIiLEAST16                           = "i"
  2247  	PRIiLEAST32                           = "i"
  2248  	PRIiLEAST8                            = "i"
  2249  	PRIiMAX                               = "ji"
  2250  	PRIo16                                = "o"
  2251  	PRIo32                                = "o"
  2252  	PRIo8                                 = "o"
  2253  	PRIoFAST16                            = "o"
  2254  	PRIoFAST32                            = "o"
  2255  	PRIoFAST8                             = "o"
  2256  	PRIoLEAST16                           = "o"
  2257  	PRIoLEAST32                           = "o"
  2258  	PRIoLEAST8                            = "o"
  2259  	PRIoMAX                               = "jo"
  2260  	PRIu16                                = "u"
  2261  	PRIu32                                = "u"
  2262  	PRIu8                                 = "u"
  2263  	PRIuFAST16                            = "u"
  2264  	PRIuFAST32                            = "u"
  2265  	PRIuFAST8                             = "u"
  2266  	PRIuLEAST16                           = "u"
  2267  	PRIuLEAST32                           = "u"
  2268  	PRIuLEAST8                            = "u"
  2269  	PRIuMAX                               = "ju"
  2270  	PRIx16                                = "x"
  2271  	PRIx32                                = "x"
  2272  	PRIx8                                 = "x"
  2273  	PRIxFAST16                            = "x"
  2274  	PRIxFAST32                            = "x"
  2275  	PRIxFAST8                             = "x"
  2276  	PRIxLEAST16                           = "x"
  2277  	PRIxLEAST32                           = "x"
  2278  	PRIxLEAST8                            = "x"
  2279  	PRIxMAX                               = "jx"
  2280  	PTRDIFF_MAX                           = 9223372036854775807
  2281  	PTRDIFF_MIN                           = -9223372036854775808
  2282  	RESERVED_LOCK                         = 2
  2283  	RSIZE_MAX                             = 9223372036854775807
  2284  	SAVEPOINT_BEGIN                       = 0
  2285  	SAVEPOINT_RELEASE                     = 1
  2286  	SAVEPOINT_ROLLBACK                    = 2
  2287  	SCHEMA_ROOT                           = 1
  2288  	SCNd16                                = "hd"
  2289  	SCNd32                                = "d"
  2290  	SCNd8                                 = "hhd"
  2291  	SCNdFAST16                            = "d"
  2292  	SCNdFAST32                            = "d"
  2293  	SCNdFAST8                             = "d"
  2294  	SCNdLEAST16                           = "hd"
  2295  	SCNdLEAST32                           = "d"
  2296  	SCNdLEAST8                            = "hhd"
  2297  	SCNdMAX                               = "jd"
  2298  	SCNi16                                = "hi"
  2299  	SCNi32                                = "i"
  2300  	SCNi8                                 = "hhi"
  2301  	SCNiFAST16                            = "i"
  2302  	SCNiFAST32                            = "i"
  2303  	SCNiFAST8                             = "i"
  2304  	SCNiLEAST16                           = "hi"
  2305  	SCNiLEAST32                           = "i"
  2306  	SCNiLEAST8                            = "hhi"
  2307  	SCNiMAX                               = "ji"
  2308  	SCNo16                                = "ho"
  2309  	SCNo32                                = "o"
  2310  	SCNo8                                 = "hho"
  2311  	SCNoFAST16                            = "o"
  2312  	SCNoFAST32                            = "o"
  2313  	SCNoFAST8                             = "o"
  2314  	SCNoLEAST16                           = "ho"
  2315  	SCNoLEAST32                           = "o"
  2316  	SCNoLEAST8                            = "hho"
  2317  	SCNoMAX                               = "jo"
  2318  	SCNu16                                = "hu"
  2319  	SCNu32                                = "u"
  2320  	SCNu8                                 = "hhu"
  2321  	SCNuFAST16                            = "u"
  2322  	SCNuFAST32                            = "u"
  2323  	SCNuFAST8                             = "u"
  2324  	SCNuLEAST16                           = "hu"
  2325  	SCNuLEAST32                           = "u"
  2326  	SCNuLEAST8                            = "hhu"
  2327  	SCNuMAX                               = "ju"
  2328  	SCNx16                                = "hx"
  2329  	SCNx32                                = "x"
  2330  	SCNx8                                 = "hhx"
  2331  	SCNxFAST16                            = "x"
  2332  	SCNxFAST32                            = "x"
  2333  	SCNxFAST8                             = "x"
  2334  	SCNxLEAST16                           = "hx"
  2335  	SCNxLEAST32                           = "x"
  2336  	SCNxLEAST8                            = "hhx"
  2337  	SCNxMAX                               = "jx"
  2338  	SF_Aggregate                          = 0x0000008
  2339  	SF_All                                = 0x0000002
  2340  	SF_ComplexResult                      = 0x0040000
  2341  	SF_Compound                           = 0x0000100
  2342  	SF_Converted                          = 0x0010000
  2343  	SF_CopyCte                            = 0x4000000
  2344  	SF_Distinct                           = 0x0000001
  2345  	SF_Expanded                           = 0x0000040
  2346  	SF_FixedLimit                         = 0x0004000
  2347  	SF_HasAgg                             = 0x0000010
  2348  	SF_HasTypeInfo                        = 0x0000080
  2349  	SF_IncludeHidden                      = 0x0020000
  2350  	SF_MaybeConvert                       = 0x0008000
  2351  	SF_MinMaxAgg                          = 0x0001000
  2352  	SF_MultiPart                          = 0x2000000
  2353  	SF_MultiValue                         = 0x0000400
  2354  	SF_NestedFrom                         = 0x0000800
  2355  	SF_NoopOrderBy                        = 0x0400000
  2356  	SF_OrderByReqd                        = 0x8000000
  2357  	SF_PushDown                           = 0x1000000
  2358  	SF_Recursive                          = 0x0002000
  2359  	SF_Resolved                           = 0x0000004
  2360  	SF_UFSrcCheck                         = 0x0800000
  2361  	SF_UsesEphemeral                      = 0x0000020
  2362  	SF_Values                             = 0x0000200
  2363  	SF_View                               = 0x0200000
  2364  	SF_WhereBegin                         = 0x0080000
  2365  	SF_WinRewrite                         = 0x0100000
  2366  	SHARED_LOCK                           = 1
  2367  	SHARED_SIZE                           = 510
  2368  	SIG_ATOMIC_MAX                        = 9223372036854775807
  2369  	SIG_ATOMIC_MIN                        = -9223372036854775808
  2370  	SIZE_MAX                              = 18446744073709551615
  2371  	SQLITECONFIG_H                        = 1
  2372  	SQLITEINT_H                           = 0
  2373  	SQLITE_AFF_BLOB                       = 0x41
  2374  	SQLITE_AFF_INTEGER                    = 0x44
  2375  	SQLITE_AFF_MASK                       = 0x47
  2376  	SQLITE_AFF_NONE                       = 0x40
  2377  	SQLITE_AFF_NUMERIC                    = 0x43
  2378  	SQLITE_AFF_REAL                       = 0x45
  2379  	SQLITE_AFF_TEXT                       = 0x42
  2380  	SQLITE_ASCII                          = 1
  2381  	SQLITE_ATOMIC_INTRINSICS              = 0
  2382  	SQLITE_AllOpts                        = 0xffffffff
  2383  	SQLITE_AutoIndex                      = 0x00008000
  2384  	SQLITE_BIGENDIAN                      = 0
  2385  	SQLITE_BTREE_H                        = 0
  2386  	SQLITE_BYTEORDER                      = 1234
  2387  	SQLITE_BalancedMerge                  = 0x00200000
  2388  	SQLITE_BloomFilter                    = 0x00080000
  2389  	SQLITE_BloomPulldown                  = 0x00100000
  2390  	SQLITE_CacheSpill                     = 0x00000020
  2391  	SQLITE_CellSizeCk                     = 0x00200000
  2392  	SQLITE_CkptFullFSync                  = 0x00000010
  2393  	SQLITE_CountOfView                    = 0x00000200
  2394  	SQLITE_CoverIdxScan                   = 0x00000020
  2395  	SQLITE_CursorHints                    = 0x00000400
  2396  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2397  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2398  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2399  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2400  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2401  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2402  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2403  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2404  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2405  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2406  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2407  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2408  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2409  	SQLITE_Defensive                      = 0x10000000
  2410  	SQLITE_DeferFKs                       = 0x00080000
  2411  	SQLITE_DistinctOpt                    = 0x00000010
  2412  	SQLITE_DqsDDL                         = 0x20000000
  2413  	SQLITE_DqsDML                         = 0x40000000
  2414  	SQLITE_ECEL_DUP                       = 0x01
  2415  	SQLITE_ECEL_FACTOR                    = 0x02
  2416  	SQLITE_ECEL_OMITREF                   = 0x08
  2417  	SQLITE_ECEL_REF                       = 0x04
  2418  	SQLITE_EnableQPSG                     = 0x00800000
  2419  	SQLITE_EnableTrigger                  = 0x00040000
  2420  	SQLITE_EnableView                     = 0x80000000
  2421  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2422  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2423  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2424  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2425  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2426  	SQLITE_FUNC_CASE                      = 0x0008
  2427  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2428  	SQLITE_FUNC_COUNT                     = 0x0100
  2429  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2430  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2431  	SQLITE_FUNC_EPHEM                     = 0x0010
  2432  	SQLITE_FUNC_HASH_SZ                   = 23
  2433  	SQLITE_FUNC_INLINE                    = 0x00400000
  2434  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2435  	SQLITE_FUNC_LENGTH                    = 0x0040
  2436  	SQLITE_FUNC_LIKE                      = 0x0004
  2437  	SQLITE_FUNC_MINMAX                    = 0x1000
  2438  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2439  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2440  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2441  	SQLITE_FUNC_TEST                      = 0x4000
  2442  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2443  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2444  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2445  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2446  	SQLITE_FactorOutConst                 = 0x00000008
  2447  	SQLITE_FlttnUnionAll                  = 0x00800000
  2448  	SQLITE_ForeignKeys                    = 0x00004000
  2449  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2450  	SQLITE_FullColNames                   = 0x00000004
  2451  	SQLITE_FullFSync                      = 0x00000008
  2452  	SQLITE_GroupByOrder                   = 0x00000004
  2453  	SQLITE_HASH_H                         = 0
  2454  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2455  	SQLITE_HAVE_OS_TRACE                  = 0
  2456  	SQLITE_IDXTYPE_APPDEF                 = 0
  2457  	SQLITE_IDXTYPE_IPK                    = 3
  2458  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2459  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2460  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2461  	SQLITE_IgnoreChecks                   = 0x00000200
  2462  	SQLITE_JUMPIFNULL                     = 0x10
  2463  	SQLITE_LITTLEENDIAN                   = 1
  2464  	SQLITE_LegacyAlter                    = 0x04000000
  2465  	SQLITE_LegacyFileFmt                  = 0x00000002
  2466  	SQLITE_LoadExtFunc                    = 0x00020000
  2467  	SQLITE_LoadExtension                  = 0x00010000
  2468  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2469  	SQLITE_MAX_ATTACHED                   = 10
  2470  	SQLITE_MAX_COLUMN                     = 2000
  2471  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2472  	SQLITE_MAX_DB                         = 12
  2473  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2474  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2475  	SQLITE_MAX_FILE_FORMAT                = 4
  2476  	SQLITE_MAX_FUNCTION_ARG               = 127
  2477  	SQLITE_MAX_LENGTH                     = 1000000000
  2478  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2479  	SQLITE_MAX_MMAP_SIZE                  = 0x7fff0000
  2480  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2481  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2482  	SQLITE_MAX_PATHLEN                    = 1024
  2483  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2484  	SQLITE_MAX_SYMLINK                    = 200
  2485  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2486  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2487  	SQLITE_MAX_VDBE_OP                    = 250000000
  2488  	SQLITE_MAX_WORKER_THREADS             = 8
  2489  	SQLITE_MSVC_H                         = 0
  2490  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2491  	SQLITE_MX_JUMP_OPCODE                 = 64
  2492  	SQLITE_MinMaxOpt                      = 0x00010000
  2493  	SQLITE_NEED_ERR_NAME                  = 0
  2494  	SQLITE_NOMEM_BKPT                     = 7
  2495  	SQLITE_NOTNULL                        = 0x90
  2496  	SQLITE_NTUNE                          = 6
  2497  	SQLITE_NULLEQ                         = 0x80
  2498  	SQLITE_N_BTREE_META                   = 16
  2499  	SQLITE_N_LIMIT                        = 12
  2500  	SQLITE_N_STDTYPE                      = 6
  2501  	SQLITE_NoCkptOnClose                  = 0x00000800
  2502  	SQLITE_NoSchemaError                  = 0x08000000
  2503  	SQLITE_NullCallback                   = 0x00000100
  2504  	SQLITE_OS_OTHER                       = 0
  2505  	SQLITE_OS_SETUP_H                     = 0
  2506  	SQLITE_OS_UNIX                        = 1
  2507  	SQLITE_OS_WIN                         = 0
  2508  	SQLITE_OmitNoopJoin                   = 0x00000100
  2509  	SQLITE_OmitOrderBy                    = 0x00040000
  2510  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2511  	SQLITE_PAGER_H                        = 0
  2512  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2513  	SQLITE_PREPARE_MASK                   = 0x0f
  2514  	SQLITE_PREPARE_SAVESQL                = 0x80
  2515  	SQLITE_PRINTF_INTERNAL                = 0x01
  2516  	SQLITE_PRINTF_MALLOCED                = 0x04
  2517  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2518  	SQLITE_PTRSIZE                        = 8
  2519  	SQLITE_PropagateConst                 = 0x00008000
  2520  	SQLITE_PushDown                       = 0x00001000
  2521  	SQLITE_QueryFlattener                 = 0x00000001
  2522  	SQLITE_QueryOnly                      = 0x00100000
  2523  	SQLITE_ReadUncommit                   = 0x00000400
  2524  	SQLITE_RecTriggers                    = 0x00002000
  2525  	SQLITE_ReleaseReg                     = 0x00400000
  2526  	SQLITE_ResetDatabase                  = 0x02000000
  2527  	SQLITE_ReverseOrder                   = 0x00001000
  2528  	SQLITE_SO_ASC                         = 0
  2529  	SQLITE_SO_DESC                        = 1
  2530  	SQLITE_SO_UNDEFINED                   = -1
  2531  	SQLITE_STATE_BUSY                     = 0x6d
  2532  	SQLITE_STATE_CLOSED                   = 0xce
  2533  	SQLITE_STATE_ERROR                    = 0xd5
  2534  	SQLITE_STATE_OPEN                     = 0x76
  2535  	SQLITE_STATE_SICK                     = 0xba
  2536  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2537  	SQLITE_SYSTEM_MALLOC                  = 1
  2538  	SQLITE_SeekScan                       = 0x00020000
  2539  	SQLITE_ShortColNames                  = 0x00000040
  2540  	SQLITE_SimplifyJoin                   = 0x00002000
  2541  	SQLITE_SkipScan                       = 0x00004000
  2542  	SQLITE_Stat4                          = 0x00000800
  2543  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2544  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2545  	SQLITE_TOKEN_QUOTED                   = 0x1
  2546  	SQLITE_TRACE_LEGACY                   = 0x40
  2547  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2548  	SQLITE_TRACE_XPROFILE                 = 0x80
  2549  	SQLITE_Transitive                     = 0x00000080
  2550  	SQLITE_TriggerEQP                     = 0x01000000
  2551  	SQLITE_TrustedSchema                  = 0x00000080
  2552  	SQLITE_UTF16NATIVE                    = 2
  2553  	SQLITE_VDBE_H                         = 0
  2554  	SQLITE_VTABRISK_High                  = 2
  2555  	SQLITE_VTABRISK_Low                   = 0
  2556  	SQLITE_VTABRISK_Normal                = 1
  2557  	SQLITE_WSD                            = 0
  2558  	SQLITE_WindowFunc                     = 0x00000002
  2559  	SQLITE_WriteSchema                    = 0x00000001
  2560  	SRT_Coroutine                         = 13
  2561  	SRT_Discard                           = 4
  2562  	SRT_DistFifo                          = 5
  2563  	SRT_DistQueue                         = 6
  2564  	SRT_EphemTab                          = 12
  2565  	SRT_Except                            = 2
  2566  	SRT_Exists                            = 3
  2567  	SRT_Fifo                              = 8
  2568  	SRT_Mem                               = 10
  2569  	SRT_Output                            = 9
  2570  	SRT_Queue                             = 7
  2571  	SRT_Set                               = 11
  2572  	SRT_Table                             = 14
  2573  	SRT_Union                             = 1
  2574  	SRT_Upfrom                            = 15
  2575  	STDC_HEADERS                          = 1
  2576  	TABTYP_NORM                           = 0
  2577  	TABTYP_VIEW                           = 2
  2578  	TABTYP_VTAB                           = 1
  2579  	TF_Autoincrement                      = 0x00000008
  2580  	TF_Ephemeral                          = 0x00004000
  2581  	TF_Eponymous                          = 0x00008000
  2582  	TF_HasGenerated                       = 0x00000060
  2583  	TF_HasHidden                          = 0x00000002
  2584  	TF_HasNotNull                         = 0x00000800
  2585  	TF_HasPrimaryKey                      = 0x00000004
  2586  	TF_HasStat1                           = 0x00000010
  2587  	TF_HasStat4                           = 0x00002000
  2588  	TF_HasStored                          = 0x00000040
  2589  	TF_HasVirtual                         = 0x00000020
  2590  	TF_NoVisibleRowid                     = 0x00000200
  2591  	TF_OOOHidden                          = 0x00000400
  2592  	TF_Readonly                           = 0x00000001
  2593  	TF_Shadow                             = 0x00001000
  2594  	TF_StatsUsed                          = 0x00000100
  2595  	TF_Strict                             = 0x00010000
  2596  	TF_WithoutRowid                       = 0x00000080
  2597  	TK_ABORT                              = 27
  2598  	TK_ACTION                             = 28
  2599  	TK_ADD                                = 163
  2600  	TK_AFTER                              = 29
  2601  	TK_AGG_COLUMN                         = 169
  2602  	TK_AGG_FUNCTION                       = 168
  2603  	TK_ALL                                = 135
  2604  	TK_ALTER                              = 162
  2605  	TK_ALWAYS                             = 96
  2606  	TK_ANALYZE                            = 30
  2607  	TK_AND                                = 44
  2608  	TK_ANY                                = 101
  2609  	TK_AS                                 = 24
  2610  	TK_ASC                                = 31
  2611  	TK_ASTERISK                           = 180
  2612  	TK_ATTACH                             = 32
  2613  	TK_AUTOINCR                           = 126
  2614  	TK_BEFORE                             = 33
  2615  	TK_BEGIN                              = 5
  2616  	TK_BETWEEN                            = 48
  2617  	TK_BY                                 = 34
  2618  	TK_CASCADE                            = 35
  2619  	TK_CASE                               = 157
  2620  	TK_CAST                               = 36
  2621  	TK_CHECK                              = 124
  2622  	TK_COLLATE                            = 113
  2623  	TK_COLUMN                             = 167
  2624  	TK_COLUMNKW                           = 60
  2625  	TK_COMMIT                             = 10
  2626  	TK_CONFLICT                           = 37
  2627  	TK_CONSTRAINT                         = 119
  2628  	TK_CREATE                             = 17
  2629  	TK_CTIME_KW                           = 100
  2630  	TK_CURRENT                            = 85
  2631  	TK_DATABASE                           = 38
  2632  	TK_DEFAULT                            = 120
  2633  	TK_DEFERRABLE                         = 131
  2634  	TK_DEFERRED                           = 7
  2635  	TK_DELETE                             = 128
  2636  	TK_DESC                               = 39
  2637  	TK_DETACH                             = 40
  2638  	TK_DISTINCT                           = 140
  2639  	TK_DO                                 = 61
  2640  	TK_DROP                               = 133
  2641  	TK_EACH                               = 41
  2642  	TK_ELSE                               = 160
  2643  	TK_END                                = 11
  2644  	TK_ESCAPE                             = 58
  2645  	TK_EXCEPT                             = 136
  2646  	TK_EXCLUDE                            = 91
  2647  	TK_EXCLUSIVE                          = 9
  2648  	TK_EXISTS                             = 20
  2649  	TK_EXPLAIN                            = 2
  2650  	TK_FAIL                               = 42
  2651  	TK_FILTER                             = 166
  2652  	TK_FIRST                              = 83
  2653  	TK_FOLLOWING                          = 86
  2654  	TK_FOR                                = 62
  2655  	TK_FOREIGN                            = 132
  2656  	TK_FROM                               = 142
  2657  	TK_FUNCTION                           = 172
  2658  	TK_GENERATED                          = 95
  2659  	TK_GROUP                              = 146
  2660  	TK_GROUPS                             = 92
  2661  	TK_HAVING                             = 147
  2662  	TK_IF                                 = 18
  2663  	TK_IF_NULL_ROW                        = 179
  2664  	TK_IGNORE                             = 63
  2665  	TK_IMMEDIATE                          = 8
  2666  	TK_IN                                 = 49
  2667  	TK_INDEX                              = 161
  2668  	TK_INDEXED                            = 116
  2669  	TK_INITIALLY                          = 64
  2670  	TK_INSERT                             = 127
  2671  	TK_INSTEAD                            = 65
  2672  	TK_INTERSECT                          = 137
  2673  	TK_INTO                               = 151
  2674  	TK_IS                                 = 45
  2675  	TK_ISNOT                              = 171
  2676  	TK_ISNULL                             = 50
  2677  	TK_JOIN                               = 143
  2678  	TK_JOIN_KW                            = 118
  2679  	TK_KEY                                = 67
  2680  	TK_LAST                               = 84
  2681  	TK_LIKE_KW                            = 47
  2682  	TK_LIMIT                              = 148
  2683  	TK_MATCH                              = 46
  2684  	TK_MATERIALIZED                       = 97
  2685  	TK_NO                                 = 66
  2686  	TK_NOT                                = 19
  2687  	TK_NOTHING                            = 152
  2688  	TK_NOTNULL                            = 51
  2689  	TK_NULL                               = 121
  2690  	TK_NULLS                              = 82
  2691  	TK_OF                                 = 68
  2692  	TK_OFFSET                             = 69
  2693  	TK_ON                                 = 115
  2694  	TK_OR                                 = 43
  2695  	TK_ORDER                              = 145
  2696  	TK_OTHERS                             = 93
  2697  	TK_OVER                               = 165
  2698  	TK_PARTITION                          = 87
  2699  	TK_PLAN                               = 4
  2700  	TK_PRAGMA                             = 70
  2701  	TK_PRECEDING                          = 88
  2702  	TK_PRIMARY                            = 122
  2703  	TK_PTR                                = 112
  2704  	TK_QUERY                              = 3
  2705  	TK_RAISE                              = 71
  2706  	TK_RANGE                              = 89
  2707  	TK_RECURSIVE                          = 72
  2708  	TK_REFERENCES                         = 125
  2709  	TK_REGISTER                           = 176
  2710  	TK_REINDEX                            = 98
  2711  	TK_RELEASE                            = 14
  2712  	TK_RENAME                             = 99
  2713  	TK_REPLACE                            = 73
  2714  	TK_RESTRICT                           = 74
  2715  	TK_RETURNING                          = 150
  2716  	TK_ROLLBACK                           = 12
  2717  	TK_ROW                                = 75
  2718  	TK_ROWS                               = 76
  2719  	TK_SAVEPOINT                          = 13
  2720  	TK_SELECT                             = 138
  2721  	TK_SELECT_COLUMN                      = 178
  2722  	TK_SET                                = 130
  2723  	TK_SPAN                               = 181
  2724  	TK_TABLE                              = 16
  2725  	TK_TEMP                               = 21
  2726  	TK_THEN                               = 159
  2727  	TK_TIES                               = 94
  2728  	TK_TO                                 = 15
  2729  	TK_TRANSACTION                        = 6
  2730  	TK_TRIGGER                            = 77
  2731  	TK_TRUEFALSE                          = 170
  2732  	TK_TRUTH                              = 175
  2733  	TK_UMINUS                             = 173
  2734  	TK_UNBOUNDED                          = 90
  2735  	TK_UNION                              = 134
  2736  	TK_UNIQUE                             = 123
  2737  	TK_UPDATE                             = 129
  2738  	TK_UPLUS                              = 174
  2739  	TK_USING                              = 144
  2740  	TK_VACUUM                             = 78
  2741  	TK_VALUES                             = 139
  2742  	TK_VECTOR                             = 177
  2743  	TK_VIEW                               = 79
  2744  	TK_VIRTUAL                            = 80
  2745  	TK_WHEN                               = 158
  2746  	TK_WHERE                              = 149
  2747  	TK_WINDOW                             = 164
  2748  	TK_WITH                               = 81
  2749  	TK_WITHOUT                            = 26
  2750  	TREETRACE_ENABLED                     = 0
  2751  	TRIGGER_AFTER                         = 2
  2752  	TRIGGER_BEFORE                        = 1
  2753  	UINT16_MAX                            = 0xffff
  2754  	UINT32_MAX                            = 0xffffffff
  2755  	UINT64_MAX                            = 0xffffffffffffffff
  2756  	UINT8_MAX                             = 0xff
  2757  	UINTMAX_MAX                           = 18446744073709551615
  2758  	UINTPTR_MAX                           = 18446744073709551615
  2759  	UINT_FAST16_MAX                       = 4294967295
  2760  	UINT_FAST32_MAX                       = 4294967295
  2761  	UINT_FAST64_MAX                       = 18446744073709551615
  2762  	UINT_FAST8_MAX                        = 4294967295
  2763  	UINT_LEAST16_MAX                      = 65535
  2764  	UINT_LEAST32_MAX                      = 4294967295
  2765  	UINT_LEAST64_MAX                      = 18446744073709551615
  2766  	UINT_LEAST8_MAX                       = 255
  2767  	WCHAR_MAX                             = 2147483647
  2768  	WCHAR_MIN                             = -2147483648
  2769  	WHERE_AGG_DISTINCT                    = 0x0400
  2770  	WHERE_DISTINCTBY                      = 0x0080
  2771  	WHERE_DISTINCT_NOOP                   = 0
  2772  	WHERE_DISTINCT_ORDERED                = 2
  2773  	WHERE_DISTINCT_UNIQUE                 = 1
  2774  	WHERE_DISTINCT_UNORDERED              = 3
  2775  	WHERE_DUPLICATES_OK                   = 0x0010
  2776  	WHERE_GROUPBY                         = 0x0040
  2777  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2778  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2779  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2780  	WHERE_ORDERBY_MAX                     = 0x0002
  2781  	WHERE_ORDERBY_MIN                     = 0x0001
  2782  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2783  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2784  	WHERE_RIGHT_JOIN                      = 0x1000
  2785  	WHERE_SORTBYGROUP                     = 0x0200
  2786  	WHERE_USE_LIMIT                       = 0x4000
  2787  	WHERE_WANT_DISTINCT                   = 0x0100
  2788  	WINT_MAX                              = 2147483647
  2789  	WINT_MIN                              = -2147483648
  2790  	WRC_Abort                             = 2
  2791  	WRC_Continue                          = 0
  2792  	WRC_Prune                             = 1
  2793  	XN_EXPR                               = -2
  2794  	XN_ROWID                              = -1
  2795  	X_GCC_MAX_ALIGN_T                     = 0
  2796  	X_GNU_SOURCE                          = 0
  2797  	X_INTTYPES_H_                         = 0
  2798  	X_LARGEFILE_SOURCE                    = 1
  2799  	X_LARGE_FILE                          = 1
  2800  	X_MACHINE_INTTYPES_H_                 = 0
  2801  	X_MACHINE__STDINT_H_                  = 0
  2802  	X_PTRDIFF_T_DECLARED                  = 0
  2803  	X_SQLITE_OS_H_                        = 0
  2804  	X_STDDEF_H_                           = 0
  2805  	X_SYS_STDINT_H_                       = 0
  2806  	X_XOPEN_SOURCE                        = 600
  2807  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2808  	BUS_ADRALN                            = 1
  2809  	BUS_ADRERR                            = 2
  2810  	BUS_OBJERR                            = 3
  2811  	BUS_OOMERR                            = 100
  2812  	CLD_CONTINUED                         = 6
  2813  	CLD_DUMPED                            = 3
  2814  	CLD_EXITED                            = 1
  2815  	CLD_KILLED                            = 2
  2816  	CLD_STOPPED                           = 5
  2817  	CLD_TRAPPED                           = 4
  2818  	FPE_FLTDIV                            = 3
  2819  	FPE_FLTINV                            = 7
  2820  	FPE_FLTOVF                            = 4
  2821  	FPE_FLTRES                            = 6
  2822  	FPE_FLTSUB                            = 8
  2823  	FPE_FLTUND                            = 5
  2824  	FPE_INTDIV                            = 2
  2825  	FPE_INTOVF                            = 1
  2826  	ILL_BADSTK                            = 8
  2827  	ILL_COPROC                            = 7
  2828  	ILL_ILLADR                            = 3
  2829  	ILL_ILLOPC                            = 1
  2830  	ILL_ILLOPN                            = 2
  2831  	ILL_ILLTRP                            = 4
  2832  	ILL_PRVOPC                            = 5
  2833  	ILL_PRVREG                            = 6
  2834  	MAX_PREPARED_STMTS                    = 100
  2835  	MINSIGSTKSZ                           = 2048
  2836  	NSIG                                  = 32
  2837  	NUM_PREPARED_STMTS                    = 10
  2838  	POLL_ERR                              = 4
  2839  	POLL_HUP                              = 6
  2840  	POLL_IN                               = 1
  2841  	POLL_MSG                              = 3
  2842  	POLL_OUT                              = 2
  2843  	POLL_PRI                              = 5
  2844  	SA_NOCLDSTOP                          = 0x0008
  2845  	SA_NOCLDWAIT                          = 0x0020
  2846  	SA_NODEFER                            = 0x0010
  2847  	SA_ONSTACK                            = 0x0001
  2848  	SA_RESETHAND                          = 0x0004
  2849  	SA_RESTART                            = 0x0002
  2850  	SA_SIGINFO                            = 0x0040
  2851  	SEGV_ACCERR                           = 2
  2852  	SEGV_MAPERR                           = 1
  2853  	SEGV_PKUERR                           = 100
  2854  	SIGABRT                               = 6
  2855  	SIGALRM                               = 14
  2856  	SIGBUS                                = 10
  2857  	SIGCHLD                               = 20
  2858  	SIGCONT                               = 19
  2859  	SIGEMT                                = 7
  2860  	SIGEV_KEVENT                          = 3
  2861  	SIGEV_NONE                            = 0
  2862  	SIGEV_SIGNAL                          = 1
  2863  	SIGEV_THREAD                          = 2
  2864  	SIGEV_THREAD_ID                       = 4
  2865  	SIGFPE                                = 8
  2866  	SIGHUP                                = 1
  2867  	SIGILL                                = 4
  2868  	SIGINFO                               = 29
  2869  	SIGINT                                = 2
  2870  	SIGIO                                 = 23
  2871  	SIGIOT                                = 6
  2872  	SIGKILL                               = 9
  2873  	SIGLIBRT                              = 33
  2874  	SIGLWP                                = 32
  2875  	SIGPIPE                               = 13
  2876  	SIGPROF                               = 27
  2877  	SIGQUIT                               = 3
  2878  	SIGRTMAX                              = 126
  2879  	SIGRTMIN                              = 65
  2880  	SIGSEGV                               = 11
  2881  	SIGSTKSZ                              = 34816
  2882  	SIGSTOP                               = 17
  2883  	SIGSYS                                = 12
  2884  	SIGTERM                               = 15
  2885  	SIGTHR                                = 32
  2886  	SIGTRAP                               = 5
  2887  	SIGTSTP                               = 18
  2888  	SIGTTIN                               = 21
  2889  	SIGTTOU                               = 22
  2890  	SIGURG                                = 16
  2891  	SIGUSR1                               = 30
  2892  	SIGUSR2                               = 31
  2893  	SIGVTALRM                             = 26
  2894  	SIGWINCH                              = 28
  2895  	SIGXCPU                               = 24
  2896  	SIGXFSZ                               = 25
  2897  	SIG_BLOCK                             = 1
  2898  	SIG_SETMASK                           = 3
  2899  	SIG_UNBLOCK                           = 2
  2900  	SI_ASYNCIO                            = 0x10004
  2901  	SI_KERNEL                             = 0x10006
  2902  	SI_LWP                                = 0x10007
  2903  	SI_MESGQ                              = 0x10005
  2904  	SI_NOINFO                             = 0
  2905  	SI_QUEUE                              = 0x10002
  2906  	SI_TIMER                              = 0x10003
  2907  	SI_UNDEFINED                          = 0
  2908  	SI_USER                               = 0x10001
  2909  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2910  	SQLITE_TCL_NRE                        = 1
  2911  	SS_DISABLE                            = 0x0004
  2912  	SS_ONSTACK                            = 0x0001
  2913  	SV_INTERRUPT                          = 2
  2914  	SV_NOCLDSTOP                          = 8
  2915  	SV_NODEFER                            = 16
  2916  	SV_ONSTACK                            = 1
  2917  	SV_RESETHAND                          = 4
  2918  	SV_SIGINFO                            = 64
  2919  	TCLSH                                 = 1
  2920  	TRAP_BRKPT                            = 1
  2921  	TRAP_CAP                              = 4
  2922  	TRAP_DTRACE                           = 3
  2923  	TRAP_TRACE                            = 2
  2924  	X_MC_FLAG_MASK                        = 7
  2925  	X_MC_FPFMT_NODEV                      = 0x10000
  2926  	X_MC_FPFMT_XMM                        = 0x10002
  2927  	X_MC_FPOWNED_FPU                      = 0x20001
  2928  	X_MC_FPOWNED_NONE                     = 0x20000
  2929  	X_MC_FPOWNED_PCB                      = 0x20002
  2930  	X_MC_HASBASES                         = 0x2
  2931  	X_MC_HASFPXSTATE                      = 0x4
  2932  	X_MC_HASSEGS                          = 0x1
  2933  	X_SIGNAL_H_                           = 0
  2934  	X_SYS_SIGNAL_H_                       = 0
  2935  	X_SYS__UCONTEXT_H_                    = 0
  2936  	X_X86_SIGNAL_H                        = 1
  2937  	X_X86_UCONTEXT_H_                     = 0
  2938  	CACHE_STALE                           = 0
  2939  	CPUSTATES                             = 5
  2940  	CP_IDLE                               = 4
  2941  	CP_INTR                               = 3
  2942  	CP_NICE                               = 1
  2943  	CP_SYS                                = 2
  2944  	CP_USER                               = 0
  2945  	CURTYPE_BTREE                         = 0
  2946  	CURTYPE_PSEUDO                        = 3
  2947  	CURTYPE_SORTER                        = 1
  2948  	CURTYPE_VTAB                          = 2
  2949  	MEM_AffMask                           = 0x003f
  2950  	MEM_Agg                               = 0x8000
  2951  	MEM_Blob                              = 0x0010
  2952  	MEM_Cleared                           = 0x0100
  2953  	MEM_Dyn                               = 0x1000
  2954  	MEM_Ephem                             = 0x4000
  2955  	MEM_FromBind                          = 0x0040
  2956  	MEM_Int                               = 0x0004
  2957  	MEM_IntReal                           = 0x0020
  2958  	MEM_Null                              = 0x0001
  2959  	MEM_Real                              = 0x0008
  2960  	MEM_Static                            = 0x2000
  2961  	MEM_Str                               = 0x0002
  2962  	MEM_Subtype                           = 0x0800
  2963  	MEM_Term                              = 0x0200
  2964  	MEM_TypeMask                          = 0x0dbf
  2965  	MEM_Undefined                         = 0x0000
  2966  	MEM_Zero                              = 0x0400
  2967  	PRIO_MAX                              = 20
  2968  	PRIO_MIN                              = -20
  2969  	PRIO_PGRP                             = 1
  2970  	PRIO_PROCESS                          = 0
  2971  	PRIO_USER                             = 2
  2972  	RLIMIT_AS                             = 10
  2973  	RLIMIT_CORE                           = 4
  2974  	RLIMIT_CPU                            = 0
  2975  	RLIMIT_DATA                           = 2
  2976  	RLIMIT_FSIZE                          = 1
  2977  	RLIMIT_KQUEUES                        = 13
  2978  	RLIMIT_MEMLOCK                        = 6
  2979  	RLIMIT_NOFILE                         = 8
  2980  	RLIMIT_NPROC                          = 7
  2981  	RLIMIT_NPTS                           = 11
  2982  	RLIMIT_RSS                            = 5
  2983  	RLIMIT_SBSIZE                         = 9
  2984  	RLIMIT_STACK                          = 3
  2985  	RLIMIT_SWAP                           = 12
  2986  	RLIMIT_UMTXP                          = 14
  2987  	RLIMIT_VMEM                           = 10
  2988  	RLIM_NLIMITS                          = 15
  2989  	RUSAGE_CHILDREN                       = -1
  2990  	RUSAGE_SELF                           = 0
  2991  	RUSAGE_THREAD                         = 1
  2992  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  2993  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  2994  	SQLITE_MAX_SCHEMA_RETRY               = 50
  2995  	SQLITE_VDBEINT_H                      = 0
  2996  	VDBE_DISPLAY_P4                       = 1
  2997  	VDBE_HALT_STATE                       = 3
  2998  	VDBE_INIT_STATE                       = 0
  2999  	VDBE_READY_STATE                      = 1
  3000  	VDBE_RUN_STATE                        = 2
  3001  	X_SYS_RESOURCE_H_                     = 0
  3002  	BTCF_AtLast                           = 0x08
  3003  	BTCF_Incrblob                         = 0x10
  3004  	BTCF_Multiple                         = 0x20
  3005  	BTCF_Pinned                           = 0x40
  3006  	BTCF_ValidNKey                        = 0x02
  3007  	BTCF_ValidOvfl                        = 0x04
  3008  	BTCF_WriteFlag                        = 0x01
  3009  	BTCURSOR_MAX_DEPTH                    = 20
  3010  	BTS_EXCLUSIVE                         = 0x0040
  3011  	BTS_FAST_SECURE                       = 0x000c
  3012  	BTS_INITIALLY_EMPTY                   = 0x0010
  3013  	BTS_NO_WAL                            = 0x0020
  3014  	BTS_OVERWRITE                         = 0x0008
  3015  	BTS_PAGESIZE_FIXED                    = 0x0002
  3016  	BTS_PENDING                           = 0x0080
  3017  	BTS_READ_ONLY                         = 0x0001
  3018  	BTS_SECURE_DELETE                     = 0x0004
  3019  	CURSOR_FAULT                          = 4
  3020  	CURSOR_INVALID                        = 1
  3021  	CURSOR_REQUIRESEEK                    = 3
  3022  	CURSOR_SKIPNEXT                       = 2
  3023  	CURSOR_VALID                          = 0
  3024  	PTF_INTKEY                            = 0x01
  3025  	PTF_LEAF                              = 0x08
  3026  	PTF_LEAFDATA                          = 0x04
  3027  	PTF_ZERODATA                          = 0x02
  3028  	PTRMAP_BTREE                          = 5
  3029  	PTRMAP_FREEPAGE                       = 2
  3030  	PTRMAP_OVERFLOW1                      = 3
  3031  	PTRMAP_OVERFLOW2                      = 4
  3032  	PTRMAP_ROOTPAGE                       = 1
  3033  	READ_LOCK                             = 1
  3034  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  3035  	TRANS_NONE                            = 0
  3036  	TRANS_READ                            = 1
  3037  	TRANS_WRITE                           = 2
  3038  	WRITE_LOCK                            = 2
  3039  	CPUSET_DEFAULT                        = 0
  3040  	CPUSET_INVALID                        = -1
  3041  	CPU_LEVEL_CPUSET                      = 2
  3042  	CPU_LEVEL_ROOT                        = 1
  3043  	CPU_LEVEL_WHICH                       = 3
  3044  	CPU_MAXSIZE                           = 256
  3045  	CPU_SETSIZE                           = 256
  3046  	CPU_WHICH_CPUSET                      = 3
  3047  	CPU_WHICH_DOMAIN                      = 6
  3048  	CPU_WHICH_INTRHANDLER                 = 7
  3049  	CPU_WHICH_IRQ                         = 4
  3050  	CPU_WHICH_ITHREAD                     = 8
  3051  	CPU_WHICH_JAIL                        = 5
  3052  	CPU_WHICH_PID                         = 2
  3053  	CPU_WHICH_TID                         = 1
  3054  	N_THREAD                              = 26
  3055  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  3056  	PTHREAD_CANCEL_ASYNCHRONOUS           = 2
  3057  	PTHREAD_CANCEL_DEFERRED               = 0
  3058  	PTHREAD_CANCEL_DISABLE                = 1
  3059  	PTHREAD_CANCEL_ENABLE                 = 0
  3060  	PTHREAD_CREATE_DETACHED               = 1
  3061  	PTHREAD_CREATE_JOINABLE               = 0
  3062  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  3063  	PTHREAD_DETACHED                      = 0x1
  3064  	PTHREAD_DONE_INIT                     = 1
  3065  	PTHREAD_EXPLICIT_SCHED                = 0
  3066  	PTHREAD_INHERIT_SCHED                 = 0x4
  3067  	PTHREAD_KEYS_MAX                      = 256
  3068  	PTHREAD_MUTEX_ROBUST                  = 1
  3069  	PTHREAD_MUTEX_STALLED                 = 0
  3070  	PTHREAD_NEEDS_INIT                    = 0
  3071  	PTHREAD_NOFLOAT                       = 0x8
  3072  	PTHREAD_PRIO_INHERIT                  = 1
  3073  	PTHREAD_PRIO_NONE                     = 0
  3074  	PTHREAD_PRIO_PROTECT                  = 2
  3075  	PTHREAD_PROCESS_PRIVATE               = 0
  3076  	PTHREAD_PROCESS_SHARED                = 1
  3077  	PTHREAD_SCOPE_PROCESS                 = 0
  3078  	PTHREAD_SCOPE_SYSTEM                  = 0x2
  3079  	PTHREAD_STACK_MIN                     = 2048
  3080  	PTHREAD_THREADS_MAX                   = 18446744073709551615
  3081  	SCHED_FIFO                            = 1
  3082  	SCHED_OTHER                           = 2
  3083  	SCHED_RR                              = 3
  3084  	X_PTHREAD_H_                          = 0
  3085  	X_SCHED_H_                            = 0
  3086  	X_SYS_BITSET_H_                       = 0
  3087  	X_SYS_CPUSET_H_                       = 0
  3088  	X_SYS__BITSET_H_                      = 0
  3089  	X_SYS__CPUSET_H_                      = 0
  3090  	TCL_THREADS                           = 0
  3091  	MX_CHUNK_NUMBER                       = 299
  3092  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  3093  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  3094  	DEVSYM_MAX_PATHNAME                   = 512
  3095  	DEVSYM_VFS_NAME                       = "devsym"
  3096  	WRITECRASH_NAME                       = "writecrash"
  3097  	SQLITE_INTARRAY_H                     = 0
  3098  	JT_MAX_PATHNAME                       = 512
  3099  	JT_VFS_NAME                           = "jt"
  3100  	MALLOC_LOG_FRAMES                     = 10
  3101  	DEFAULT_SECTOR_SIZE                   = 0x1000
  3102  	MAX_PAGE_SIZE                         = 0x10000
  3103  	MULTIPLEX_CTRL_ENABLE                 = 214014
  3104  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  3105  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  3106  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  3107  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  3108  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  3109  	SQLITE_TEST_MULTIPLEX_H               = 0
  3110  	MAX_MUTEXES                           = 14
  3111  	STATIC_MUTEXES                        = 12
  3112  	BLOBSIZE                              = 10485760
  3113  	BLOCKSIZE                             = 512
  3114  	DATABASE_FILE                         = 1
  3115  	FS_VFS_NAME                           = "fs"
  3116  	JOURNAL_FILE                          = 2
  3117  	INST_MAX_PATHNAME                     = 512
  3118  	OS_ACCESS                             = 1
  3119  	OS_ANNOTATE                           = 28
  3120  	OS_CHECKRESERVEDLOCK                  = 2
  3121  	OS_CLOSE                              = 3
  3122  	OS_CURRENTTIME                        = 4
  3123  	OS_DELETE                             = 5
  3124  	OS_DEVCHAR                            = 6
  3125  	OS_FILECONTROL                        = 7
  3126  	OS_FILESIZE                           = 8
  3127  	OS_FULLPATHNAME                       = 9
  3128  	OS_LOCK                               = 11
  3129  	OS_NUMEVENTS                          = 29
  3130  	OS_OPEN                               = 12
  3131  	OS_RANDOMNESS                         = 13
  3132  	OS_READ                               = 14
  3133  	OS_SECTORSIZE                         = 15
  3134  	OS_SHMBARRIER                         = 26
  3135  	OS_SHMLOCK                            = 25
  3136  	OS_SHMMAP                             = 23
  3137  	OS_SHMUNMAP                           = 22
  3138  	OS_SLEEP                              = 16
  3139  	OS_SYNC                               = 17
  3140  	OS_TRUNCATE                           = 18
  3141  	OS_UNLOCK                             = 19
  3142  	OS_WRITE                              = 20
  3143  	VFSLOG_BUFFERSIZE                     = 8192
  3144  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3145  	TESTPCACHE_NPAGE                      = 217
  3146  	TESTPCACHE_RESERVE                    = 17
  3147  	TESTPCACHE_VALID                      = 0x364585fd
  3148  	MSG_Close                             = 6
  3149  	MSG_Done                              = 7
  3150  	MSG_Finalize                          = 5
  3151  	MSG_Open                              = 1
  3152  	MSG_Prepare                           = 2
  3153  	MSG_Reset                             = 4
  3154  	MSG_Step                              = 3
  3155  	INHERIT_COPY                          = 1
  3156  	INHERIT_NONE                          = 2
  3157  	INHERIT_SHARE                         = 0
  3158  	INHERIT_ZERO                          = 3
  3159  	MADV_AUTOSYNC                         = 7
  3160  	MADV_CORE                             = 9
  3161  	MADV_DONTNEED                         = 4
  3162  	MADV_FREE                             = 5
  3163  	MADV_NOCORE                           = 8
  3164  	MADV_NORMAL                           = 0
  3165  	MADV_NOSYNC                           = 6
  3166  	MADV_PROTECT                          = 10
  3167  	MADV_RANDOM                           = 1
  3168  	MADV_SEQUENTIAL                       = 2
  3169  	MADV_WILLNEED                         = 3
  3170  	MAP_32BIT                             = 0x00080000
  3171  	MAP_ALIGNED_SUPER                     = 16777216
  3172  	MAP_ALIGNMENT_MASK                    = 4278190080
  3173  	MAP_ALIGNMENT_SHIFT                   = 24
  3174  	MAP_ANON                              = 0x1000
  3175  	MAP_ANONYMOUS                         = 4096
  3176  	MAP_COPY                              = 2
  3177  	MAP_EXCL                              = 0x00004000
  3178  	MAP_FILE                              = 0x0000
  3179  	MAP_FIXED                             = 0x0010
  3180  	MAP_GUARD                             = 0x00002000
  3181  	MAP_HASSEMAPHORE                      = 0x0200
  3182  	MAP_NOCORE                            = 0x00020000
  3183  	MAP_NOSYNC                            = 0x0800
  3184  	MAP_PREFAULT_READ                     = 0x00040000
  3185  	MAP_PRIVATE                           = 0x0002
  3186  	MAP_RESERVED0020                      = 0x0020
  3187  	MAP_RESERVED0040                      = 0x0040
  3188  	MAP_RESERVED0080                      = 0x0080
  3189  	MAP_RESERVED0100                      = 0x0100
  3190  	MAP_SHARED                            = 0x0001
  3191  	MAP_STACK                             = 0x0400
  3192  	MCL_CURRENT                           = 0x0001
  3193  	MCL_FUTURE                            = 0x0002
  3194  	MFD_ALLOW_SEALING                     = 0x00000002
  3195  	MFD_CLOEXEC                           = 0x00000001
  3196  	MFD_HUGETLB                           = 0x00000004
  3197  	MFD_HUGE_16GB                         = 2281701376
  3198  	MFD_HUGE_16MB                         = 1610612736
  3199  	MFD_HUGE_1GB                          = 2013265920
  3200  	MFD_HUGE_1MB                          = 1342177280
  3201  	MFD_HUGE_256MB                        = 1879048192
  3202  	MFD_HUGE_2GB                          = 2080374784
  3203  	MFD_HUGE_2MB                          = 1409286144
  3204  	MFD_HUGE_32MB                         = 1677721600
  3205  	MFD_HUGE_512KB                        = 1275068416
  3206  	MFD_HUGE_512MB                        = 1946157056
  3207  	MFD_HUGE_64KB                         = 1073741824
  3208  	MFD_HUGE_8MB                          = 1543503872
  3209  	MFD_HUGE_MASK                         = 0xFC000000
  3210  	MFD_HUGE_SHIFT                        = 26
  3211  	MINCORE_INCORE                        = 0x1
  3212  	MINCORE_MODIFIED                      = 0x4
  3213  	MINCORE_MODIFIED_OTHER                = 0x10
  3214  	MINCORE_REFERENCED                    = 0x2
  3215  	MINCORE_REFERENCED_OTHER              = 0x8
  3216  	MINCORE_SUPER                         = 0x60
  3217  	MS_ASYNC                              = 0x0001
  3218  	MS_INVALIDATE                         = 0x0002
  3219  	MS_SYNC                               = 0x0000
  3220  	POSIX_MADV_DONTNEED                   = 4
  3221  	POSIX_MADV_NORMAL                     = 0
  3222  	POSIX_MADV_RANDOM                     = 1
  3223  	POSIX_MADV_SEQUENTIAL                 = 2
  3224  	POSIX_MADV_WILLNEED                   = 3
  3225  	PROT_EXEC                             = 0x04
  3226  	PROT_NONE                             = 0x00
  3227  	PROT_READ                             = 0x01
  3228  	PROT_WRITE                            = 0x02
  3229  	SHM_ALLOW_SEALING                     = 0x00000001
  3230  	SHM_GROW_ON_WRITE                     = 0x00000002
  3231  	SHM_LARGEPAGE                         = 0x00000004
  3232  	SHM_LARGEPAGE_ALLOC_DEFAULT           = 0
  3233  	SHM_LARGEPAGE_ALLOC_HARD              = 2
  3234  	SHM_LARGEPAGE_ALLOC_NOWAIT            = 1
  3235  	SHM_RENAME_EXCHANGE                   = 2
  3236  	SHM_RENAME_NOREPLACE                  = 1
  3237  	X_MADV_DONTNEED                       = 4
  3238  	X_MADV_NORMAL                         = 0
  3239  	X_MADV_RANDOM                         = 1
  3240  	X_MADV_SEQUENTIAL                     = 2
  3241  	X_MADV_WILLNEED                       = 3
  3242  	X_PROT_ALL                            = 7
  3243  	X_PROT_MAX_SHIFT                      = 16
  3244  	X_SYS_MMAN_H_                         = 0
  3245  	TCLVAR_NAME_EQ                        = 101
  3246  	TCLVAR_NAME_MATCH                     = 109
  3247  	TCLVAR_VALUE_GLOB                     = 103
  3248  	TCLVAR_VALUE_LIKE                     = 108
  3249  	TCLVAR_VALUE_REGEXP                   = 114
  3250  	FAULT_INJECT_NONE                     = 0
  3251  	FAULT_INJECT_PERSISTENT               = 2
  3252  	FAULT_INJECT_TRANSIENT                = 1
  3253  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3254  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3255  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3256  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3257  	TESTVFS_DELETE_MASK                   = 0x00000400
  3258  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3259  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3260  	TESTVFS_LOCK_MASK                     = 0x00040000
  3261  	TESTVFS_MAX_ARGS                      = 12
  3262  	TESTVFS_MAX_PAGES                     = 1024
  3263  	TESTVFS_OPEN_MASK                     = 0x00000100
  3264  	TESTVFS_READ_MASK                     = 0x00010000
  3265  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3266  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3267  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3268  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3269  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3270  	TESTVFS_SYNC_MASK                     = 0x00000200
  3271  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3272  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3273  	TESTVFS_WRITE_MASK                    = 0x00001000
  3274  )
  3275  
  3276  const (
  3277  	PTHREAD_MUTEX_ERRORCHECK  = 1
  3278  	PTHREAD_MUTEX_RECURSIVE   = 2
  3279  	PTHREAD_MUTEX_NORMAL      = 3
  3280  	PTHREAD_MUTEX_ADAPTIVE_NP = 4
  3281  	PTHREAD_MUTEX_TYPE_MAX    = 5
  3282  )
  3283  
  3284  const (
  3285  	TCL_QUEUE_TAIL = 0
  3286  	TCL_QUEUE_HEAD = 1
  3287  	TCL_QUEUE_MARK = 2
  3288  )
  3289  
  3290  const (
  3291  	TCL_PATH_ABSOLUTE        = 0
  3292  	TCL_PATH_RELATIVE        = 1
  3293  	TCL_PATH_VOLUME_RELATIVE = 2
  3294  )
  3295  
  3296  const (
  3297  	TCL_INT      = 0
  3298  	TCL_DOUBLE   = 1
  3299  	TCL_EITHER   = 2
  3300  	TCL_WIDE_INT = 3
  3301  )
  3302  
  3303  type ptrdiff_t = int64
  3304  
  3305  type size_t = uint64
  3306  
  3307  type wchar_t = int32
  3308  
  3309  type va_list = uintptr
  3310  
  3311  type sqlite32 = struct {
  3312  	FpVfs                   uintptr
  3313  	FpVdbe                  uintptr
  3314  	FpDfltColl              uintptr
  3315  	Fmutex                  uintptr
  3316  	FaDb                    uintptr
  3317  	FnDb                    int32
  3318  	FmDbFlags               u32
  3319  	Fflags                  u64
  3320  	FlastRowid              i64
  3321  	FszMmap                 i64
  3322  	FnSchemaLock            u32
  3323  	FopenFlags              uint32
  3324  	FerrCode                int32
  3325  	FerrByteOffset          int32
  3326  	FerrMask                int32
  3327  	FiSysErrno              int32
  3328  	FdbOptFlags             u32
  3329  	Fenc                    u8
  3330  	FautoCommit             u8
  3331  	Ftemp_store             u8
  3332  	FmallocFailed           u8
  3333  	FbBenignMalloc          u8
  3334  	FdfltLockMode           u8
  3335  	FnextAutovac            int8
  3336  	FsuppressErr            u8
  3337  	FvtabOnConflict         u8
  3338  	FisTransactionSavepoint u8
  3339  	FmTrace                 u8
  3340  	FnoSharedCache          u8
  3341  	FnSqlExec               u8
  3342  	FeOpenState             u8
  3343  	F__ccgo_pad1            [2]byte
  3344  	FnextPagesize           int32
  3345  	FnChange                i64
  3346  	FnTotalChange           i64
  3347  	FaLimit                 [12]int32
  3348  	FnMaxSorterMmap         int32
  3349  	F__ccgo_pad2            [4]byte
  3350  	Finit                   struct {
  3351  		FnewTnum       Pgno
  3352  		FiDb           u8
  3353  		Fbusy          u8
  3354  		F__ccgo_pad1   [2]byte
  3355  		ForphanTrigger uint8
  3356  		F__ccgo_pad2   [7]byte
  3357  		FazInit        uintptr
  3358  	}
  3359  	FnVdbeActive        int32
  3360  	FnVdbeRead          int32
  3361  	FnVdbeWrite         int32
  3362  	FnVdbeExec          int32
  3363  	FnVDestroy          int32
  3364  	FnExtension         int32
  3365  	FaExtension         uintptr
  3366  	Ftrace              struct{ FxLegacy uintptr }
  3367  	FpTraceArg          uintptr
  3368  	FxProfile           uintptr
  3369  	FpProfileArg        uintptr
  3370  	FpCommitArg         uintptr
  3371  	FxCommitCallback    uintptr
  3372  	FpRollbackArg       uintptr
  3373  	FxRollbackCallback  uintptr
  3374  	FpUpdateArg         uintptr
  3375  	FxUpdateCallback    uintptr
  3376  	FpAutovacPagesArg   uintptr
  3377  	FxAutovacDestr      uintptr
  3378  	FxAutovacPages      uintptr
  3379  	FpParse             uintptr
  3380  	FpPreUpdateArg      uintptr
  3381  	FxPreUpdateCallback uintptr
  3382  	FpPreUpdate         uintptr
  3383  	FxWalCallback       uintptr
  3384  	FpWalArg            uintptr
  3385  	FxCollNeeded        uintptr
  3386  	FxCollNeeded16      uintptr
  3387  	FpCollNeededArg     uintptr
  3388  	FpErr               uintptr
  3389  	Fu1                 struct {
  3390  		F__ccgo_pad1   [0]uint64
  3391  		FisInterrupted int32
  3392  		F__ccgo_pad2   [4]byte
  3393  	}
  3394  	Flookaside           Lookaside
  3395  	FxAuth               sqlite3_xauth
  3396  	FpAuthArg            uintptr
  3397  	FxProgress           uintptr
  3398  	FpProgressArg        uintptr
  3399  	FnProgressOps        uint32
  3400  	FnVTrans             int32
  3401  	FaModule             Hash
  3402  	FpVtabCtx            uintptr
  3403  	FaVTrans             uintptr
  3404  	FpDisconnect         uintptr
  3405  	FaFunc               Hash
  3406  	FaCollSeq            Hash
  3407  	FbusyHandler         BusyHandler
  3408  	FaDbStatic           [2]Db
  3409  	FpSavepoint          uintptr
  3410  	FnAnalysisLimit      int32
  3411  	FbusyTimeout         int32
  3412  	FnSavepoint          int32
  3413  	FnStatement          int32
  3414  	FnDeferredCons       i64
  3415  	FnDeferredImmCons    i64
  3416  	FpnBytesFreed        uintptr
  3417  	FpBlockingConnection uintptr
  3418  	FpUnlockConnection   uintptr
  3419  	FpUnlockArg          uintptr
  3420  	FxUnlockNotify       uintptr
  3421  	FpNextBlocked        uintptr
  3422  }
  3423  
  3424  type sqlite_int64 = int64
  3425  type sqlite_uint64 = uint64
  3426  type sqlite3_int64 = sqlite_int64
  3427  type sqlite3_uint64 = sqlite_uint64
  3428  
  3429  type sqlite3_callback = uintptr
  3430  
  3431  type sqlite3_file1 = struct{ FpMethods uintptr }
  3432  
  3433  type sqlite3_file = sqlite3_file1
  3434  type sqlite3_io_methods1 = struct {
  3435  	FiVersion               int32
  3436  	F__ccgo_pad1            [4]byte
  3437  	FxClose                 uintptr
  3438  	FxRead                  uintptr
  3439  	FxWrite                 uintptr
  3440  	FxTruncate              uintptr
  3441  	FxSync                  uintptr
  3442  	FxFileSize              uintptr
  3443  	FxLock                  uintptr
  3444  	FxUnlock                uintptr
  3445  	FxCheckReservedLock     uintptr
  3446  	FxFileControl           uintptr
  3447  	FxSectorSize            uintptr
  3448  	FxDeviceCharacteristics uintptr
  3449  	FxShmMap                uintptr
  3450  	FxShmLock               uintptr
  3451  	FxShmBarrier            uintptr
  3452  	FxShmUnmap              uintptr
  3453  	FxFetch                 uintptr
  3454  	FxUnfetch               uintptr
  3455  }
  3456  
  3457  type sqlite3_io_methods = sqlite3_io_methods1
  3458  
  3459  type sqlite3_mutex1 = struct {
  3460  	FpReal       uintptr
  3461  	FeType       int32
  3462  	F__ccgo_pad1 [4]byte
  3463  }
  3464  
  3465  type sqlite3_api_routines1 = struct {
  3466  	Faggregate_context      uintptr
  3467  	Faggregate_count        uintptr
  3468  	Fbind_blob              uintptr
  3469  	Fbind_double            uintptr
  3470  	Fbind_int               uintptr
  3471  	Fbind_int64             uintptr
  3472  	Fbind_null              uintptr
  3473  	Fbind_parameter_count   uintptr
  3474  	Fbind_parameter_index   uintptr
  3475  	Fbind_parameter_name    uintptr
  3476  	Fbind_text              uintptr
  3477  	Fbind_text16            uintptr
  3478  	Fbind_value             uintptr
  3479  	Fbusy_handler           uintptr
  3480  	Fbusy_timeout           uintptr
  3481  	Fchanges                uintptr
  3482  	Fclose                  uintptr
  3483  	Fcollation_needed       uintptr
  3484  	Fcollation_needed16     uintptr
  3485  	Fcolumn_blob            uintptr
  3486  	Fcolumn_bytes           uintptr
  3487  	Fcolumn_bytes16         uintptr
  3488  	Fcolumn_count           uintptr
  3489  	Fcolumn_database_name   uintptr
  3490  	Fcolumn_database_name16 uintptr
  3491  	Fcolumn_decltype        uintptr
  3492  	Fcolumn_decltype16      uintptr
  3493  	Fcolumn_double          uintptr
  3494  	Fcolumn_int             uintptr
  3495  	Fcolumn_int64           uintptr
  3496  	Fcolumn_name            uintptr
  3497  	Fcolumn_name16          uintptr
  3498  	Fcolumn_origin_name     uintptr
  3499  	Fcolumn_origin_name16   uintptr
  3500  	Fcolumn_table_name      uintptr
  3501  	Fcolumn_table_name16    uintptr
  3502  	Fcolumn_text            uintptr
  3503  	Fcolumn_text16          uintptr
  3504  	Fcolumn_type            uintptr
  3505  	Fcolumn_value           uintptr
  3506  	Fcommit_hook            uintptr
  3507  	Fcomplete               uintptr
  3508  	Fcomplete16             uintptr
  3509  	Fcreate_collation       uintptr
  3510  	Fcreate_collation16     uintptr
  3511  	Fcreate_function        uintptr
  3512  	Fcreate_function16      uintptr
  3513  	Fcreate_module          uintptr
  3514  	Fdata_count             uintptr
  3515  	Fdb_handle              uintptr
  3516  	Fdeclare_vtab           uintptr
  3517  	Fenable_shared_cache    uintptr
  3518  	Ferrcode                uintptr
  3519  	Ferrmsg                 uintptr
  3520  	Ferrmsg16               uintptr
  3521  	Fexec                   uintptr
  3522  	Fexpired                uintptr
  3523  	Ffinalize               uintptr
  3524  	Ffree                   uintptr
  3525  	Ffree_table             uintptr
  3526  	Fget_autocommit         uintptr
  3527  	Fget_auxdata            uintptr
  3528  	Fget_table              uintptr
  3529  	Fglobal_recover         uintptr
  3530  	Finterruptx             uintptr
  3531  	Flast_insert_rowid      uintptr
  3532  	Flibversion             uintptr
  3533  	Flibversion_number      uintptr
  3534  	Fmalloc                 uintptr
  3535  	Fmprintf                uintptr
  3536  	Fopen                   uintptr
  3537  	Fopen16                 uintptr
  3538  	Fprepare                uintptr
  3539  	Fprepare16              uintptr
  3540  	Fprofile                uintptr
  3541  	Fprogress_handler       uintptr
  3542  	Frealloc                uintptr
  3543  	Freset                  uintptr
  3544  	Fresult_blob            uintptr
  3545  	Fresult_double          uintptr
  3546  	Fresult_error           uintptr
  3547  	Fresult_error16         uintptr
  3548  	Fresult_int             uintptr
  3549  	Fresult_int64           uintptr
  3550  	Fresult_null            uintptr
  3551  	Fresult_text            uintptr
  3552  	Fresult_text16          uintptr
  3553  	Fresult_text16be        uintptr
  3554  	Fresult_text16le        uintptr
  3555  	Fresult_value           uintptr
  3556  	Frollback_hook          uintptr
  3557  	Fset_authorizer         uintptr
  3558  	Fset_auxdata            uintptr
  3559  	Fxsnprintf              uintptr
  3560  	Fstep                   uintptr
  3561  	Ftable_column_metadata  uintptr
  3562  	Fthread_cleanup         uintptr
  3563  	Ftotal_changes          uintptr
  3564  	Ftrace                  uintptr
  3565  	Ftransfer_bindings      uintptr
  3566  	Fupdate_hook            uintptr
  3567  	Fuser_data              uintptr
  3568  	Fvalue_blob             uintptr
  3569  	Fvalue_bytes            uintptr
  3570  	Fvalue_bytes16          uintptr
  3571  	Fvalue_double           uintptr
  3572  	Fvalue_int              uintptr
  3573  	Fvalue_int64            uintptr
  3574  	Fvalue_numeric_type     uintptr
  3575  	Fvalue_text             uintptr
  3576  	Fvalue_text16           uintptr
  3577  	Fvalue_text16be         uintptr
  3578  	Fvalue_text16le         uintptr
  3579  	Fvalue_type             uintptr
  3580  	Fvmprintf               uintptr
  3581  	Foverload_function      uintptr
  3582  	Fprepare_v2             uintptr
  3583  	Fprepare16_v2           uintptr
  3584  	Fclear_bindings         uintptr
  3585  	Fcreate_module_v2       uintptr
  3586  	Fbind_zeroblob          uintptr
  3587  	Fblob_bytes             uintptr
  3588  	Fblob_close             uintptr
  3589  	Fblob_open              uintptr
  3590  	Fblob_read              uintptr
  3591  	Fblob_write             uintptr
  3592  	Fcreate_collation_v2    uintptr
  3593  	Ffile_control           uintptr
  3594  	Fmemory_highwater       uintptr
  3595  	Fmemory_used            uintptr
  3596  	Fmutex_alloc            uintptr
  3597  	Fmutex_enter            uintptr
  3598  	Fmutex_free             uintptr
  3599  	Fmutex_leave            uintptr
  3600  	Fmutex_try              uintptr
  3601  	Fopen_v2                uintptr
  3602  	Frelease_memory         uintptr
  3603  	Fresult_error_nomem     uintptr
  3604  	Fresult_error_toobig    uintptr
  3605  	Fsleep                  uintptr
  3606  	Fsoft_heap_limit        uintptr
  3607  	Fvfs_find               uintptr
  3608  	Fvfs_register           uintptr
  3609  	Fvfs_unregister         uintptr
  3610  	Fxthreadsafe            uintptr
  3611  	Fresult_zeroblob        uintptr
  3612  	Fresult_error_code      uintptr
  3613  	Ftest_control           uintptr
  3614  	Frandomness             uintptr
  3615  	Fcontext_db_handle      uintptr
  3616  	Fextended_result_codes  uintptr
  3617  	Flimit                  uintptr
  3618  	Fnext_stmt              uintptr
  3619  	Fsql                    uintptr
  3620  	Fstatus                 uintptr
  3621  	Fbackup_finish          uintptr
  3622  	Fbackup_init            uintptr
  3623  	Fbackup_pagecount       uintptr
  3624  	Fbackup_remaining       uintptr
  3625  	Fbackup_step            uintptr
  3626  	Fcompileoption_get      uintptr
  3627  	Fcompileoption_used     uintptr
  3628  	Fcreate_function_v2     uintptr
  3629  	Fdb_config              uintptr
  3630  	Fdb_mutex               uintptr
  3631  	Fdb_status              uintptr
  3632  	Fextended_errcode       uintptr
  3633  	Flog                    uintptr
  3634  	Fsoft_heap_limit64      uintptr
  3635  	Fsourceid               uintptr
  3636  	Fstmt_status            uintptr
  3637  	Fstrnicmp               uintptr
  3638  	Funlock_notify          uintptr
  3639  	Fwal_autocheckpoint     uintptr
  3640  	Fwal_checkpoint         uintptr
  3641  	Fwal_hook               uintptr
  3642  	Fblob_reopen            uintptr
  3643  	Fvtab_config            uintptr
  3644  	Fvtab_on_conflict       uintptr
  3645  	Fclose_v2               uintptr
  3646  	Fdb_filename            uintptr
  3647  	Fdb_readonly            uintptr
  3648  	Fdb_release_memory      uintptr
  3649  	Ferrstr                 uintptr
  3650  	Fstmt_busy              uintptr
  3651  	Fstmt_readonly          uintptr
  3652  	Fstricmp                uintptr
  3653  	Furi_boolean            uintptr
  3654  	Furi_int64              uintptr
  3655  	Furi_parameter          uintptr
  3656  	Fxvsnprintf             uintptr
  3657  	Fwal_checkpoint_v2      uintptr
  3658  	Fauto_extension         uintptr
  3659  	Fbind_blob64            uintptr
  3660  	Fbind_text64            uintptr
  3661  	Fcancel_auto_extension  uintptr
  3662  	Fload_extension         uintptr
  3663  	Fmalloc64               uintptr
  3664  	Fmsize                  uintptr
  3665  	Frealloc64              uintptr
  3666  	Freset_auto_extension   uintptr
  3667  	Fresult_blob64          uintptr
  3668  	Fresult_text64          uintptr
  3669  	Fstrglob                uintptr
  3670  	Fvalue_dup              uintptr
  3671  	Fvalue_free             uintptr
  3672  	Fresult_zeroblob64      uintptr
  3673  	Fbind_zeroblob64        uintptr
  3674  	Fvalue_subtype          uintptr
  3675  	Fresult_subtype         uintptr
  3676  	Fstatus64               uintptr
  3677  	Fstrlike                uintptr
  3678  	Fdb_cacheflush          uintptr
  3679  	Fsystem_errno           uintptr
  3680  	Ftrace_v2               uintptr
  3681  	Fexpanded_sql           uintptr
  3682  	Fset_last_insert_rowid  uintptr
  3683  	Fprepare_v3             uintptr
  3684  	Fprepare16_v3           uintptr
  3685  	Fbind_pointer           uintptr
  3686  	Fresult_pointer         uintptr
  3687  	Fvalue_pointer          uintptr
  3688  	Fvtab_nochange          uintptr
  3689  	Fvalue_nochange         uintptr
  3690  	Fvtab_collation         uintptr
  3691  	Fkeyword_count          uintptr
  3692  	Fkeyword_name           uintptr
  3693  	Fkeyword_check          uintptr
  3694  	Fstr_new                uintptr
  3695  	Fstr_finish             uintptr
  3696  	Fstr_appendf            uintptr
  3697  	Fstr_vappendf           uintptr
  3698  	Fstr_append             uintptr
  3699  	Fstr_appendall          uintptr
  3700  	Fstr_appendchar         uintptr
  3701  	Fstr_reset              uintptr
  3702  	Fstr_errcode            uintptr
  3703  	Fstr_length             uintptr
  3704  	Fstr_value              uintptr
  3705  	Fcreate_window_function uintptr
  3706  	Fnormalized_sql         uintptr
  3707  	Fstmt_isexplain         uintptr
  3708  	Fvalue_frombind         uintptr
  3709  	Fdrop_modules           uintptr
  3710  	Fhard_heap_limit64      uintptr
  3711  	Furi_key                uintptr
  3712  	Ffilename_database      uintptr
  3713  	Ffilename_journal       uintptr
  3714  	Ffilename_wal           uintptr
  3715  	Fcreate_filename        uintptr
  3716  	Ffree_filename          uintptr
  3717  	Fdatabase_file_object   uintptr
  3718  	Ftxn_state              uintptr
  3719  	Fchanges64              uintptr
  3720  	Ftotal_changes64        uintptr
  3721  	Fautovacuum_pages       uintptr
  3722  	Ferror_offset           uintptr
  3723  	Fvtab_rhs_value         uintptr
  3724  	Fvtab_distinct          uintptr
  3725  	Fvtab_in                uintptr
  3726  	Fvtab_in_first          uintptr
  3727  	Fvtab_in_next           uintptr
  3728  	Fdeserialize            uintptr
  3729  	Fserialize              uintptr
  3730  	Fdb_name                uintptr
  3731  }
  3732  
  3733  type sqlite3_vfs1 = struct {
  3734  	FiVersion          int32
  3735  	FszOsFile          int32
  3736  	FmxPathname        int32
  3737  	F__ccgo_pad1       [4]byte
  3738  	FpNext             uintptr
  3739  	FzName             uintptr
  3740  	FpAppData          uintptr
  3741  	FxOpen             uintptr
  3742  	FxDelete           uintptr
  3743  	FxAccess           uintptr
  3744  	FxFullPathname     uintptr
  3745  	FxDlOpen           uintptr
  3746  	FxDlError          uintptr
  3747  	FxDlSym            uintptr
  3748  	FxDlClose          uintptr
  3749  	FxRandomness       uintptr
  3750  	FxSleep            uintptr
  3751  	FxCurrentTime      uintptr
  3752  	FxGetLastError     uintptr
  3753  	FxCurrentTimeInt64 uintptr
  3754  	FxSetSystemCall    uintptr
  3755  	FxGetSystemCall    uintptr
  3756  	FxNextSystemCall   uintptr
  3757  }
  3758  
  3759  type sqlite3_vfs = sqlite3_vfs1
  3760  type sqlite3_syscall_ptr = uintptr
  3761  
  3762  type sqlite3_mem_methods1 = struct {
  3763  	FxMalloc   uintptr
  3764  	FxFree     uintptr
  3765  	FxRealloc  uintptr
  3766  	FxSize     uintptr
  3767  	FxRoundup  uintptr
  3768  	FxInit     uintptr
  3769  	FxShutdown uintptr
  3770  	FpAppData  uintptr
  3771  }
  3772  
  3773  type sqlite3_mem_methods = sqlite3_mem_methods1
  3774  
  3775  type sqlite3_value1 = struct {
  3776  	Fu        struct{ Fr float64 }
  3777  	Fz        uintptr
  3778  	Fn        int32
  3779  	Fflags    u16
  3780  	Fenc      u8
  3781  	FeSubtype u8
  3782  	Fdb       uintptr
  3783  	FszMalloc int32
  3784  	FuTemp    u32
  3785  	FzMalloc  uintptr
  3786  	FxDel     uintptr
  3787  }
  3788  
  3789  type sqlite3_context1 = struct {
  3790  	FpOut        uintptr
  3791  	FpFunc       uintptr
  3792  	FpMem        uintptr
  3793  	FpVdbe       uintptr
  3794  	FiOp         int32
  3795  	FisError     int32
  3796  	Fenc         u8
  3797  	FskipFlag    u8
  3798  	Fargc        u8
  3799  	F__ccgo_pad1 [5]byte
  3800  	Fargv        [1]uintptr
  3801  }
  3802  
  3803  type sqlite3_destructor_type = uintptr
  3804  
  3805  type sqlite3_vtab1 = struct {
  3806  	FpModule     uintptr
  3807  	FnRef        int32
  3808  	F__ccgo_pad1 [4]byte
  3809  	FzErrMsg     uintptr
  3810  }
  3811  
  3812  type sqlite3_vtab = sqlite3_vtab1
  3813  type sqlite3_index_info1 = struct {
  3814  	FnConstraint      int32
  3815  	F__ccgo_pad1      [4]byte
  3816  	FaConstraint      uintptr
  3817  	FnOrderBy         int32
  3818  	F__ccgo_pad2      [4]byte
  3819  	FaOrderBy         uintptr
  3820  	FaConstraintUsage uintptr
  3821  	FidxNum           int32
  3822  	F__ccgo_pad3      [4]byte
  3823  	FidxStr           uintptr
  3824  	FneedToFreeIdxStr int32
  3825  	ForderByConsumed  int32
  3826  	FestimatedCost    float64
  3827  	FestimatedRows    sqlite3_int64
  3828  	FidxFlags         int32
  3829  	F__ccgo_pad4      [4]byte
  3830  	FcolUsed          sqlite3_uint64
  3831  }
  3832  
  3833  type sqlite3_index_info = sqlite3_index_info1
  3834  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  3835  
  3836  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  3837  type sqlite3_module1 = struct {
  3838  	FiVersion      int32
  3839  	F__ccgo_pad1   [4]byte
  3840  	FxCreate       uintptr
  3841  	FxConnect      uintptr
  3842  	FxBestIndex    uintptr
  3843  	FxDisconnect   uintptr
  3844  	FxDestroy      uintptr
  3845  	FxOpen         uintptr
  3846  	FxClose        uintptr
  3847  	FxFilter       uintptr
  3848  	FxNext         uintptr
  3849  	FxEof          uintptr
  3850  	FxColumn       uintptr
  3851  	FxRowid        uintptr
  3852  	FxUpdate       uintptr
  3853  	FxBegin        uintptr
  3854  	FxSync         uintptr
  3855  	FxCommit       uintptr
  3856  	FxRollback     uintptr
  3857  	FxFindFunction uintptr
  3858  	FxRename       uintptr
  3859  	FxSavepoint    uintptr
  3860  	FxRelease      uintptr
  3861  	FxRollbackTo   uintptr
  3862  	FxShadowName   uintptr
  3863  }
  3864  
  3865  type sqlite3_module = sqlite3_module1
  3866  
  3867  type sqlite3_index_constraint = struct {
  3868  	FiColumn     int32
  3869  	Fop          uint8
  3870  	Fusable      uint8
  3871  	F__ccgo_pad1 [2]byte
  3872  	FiTermOffset int32
  3873  }
  3874  
  3875  type sqlite3_index_orderby = struct {
  3876  	FiColumn     int32
  3877  	Fdesc        uint8
  3878  	F__ccgo_pad1 [3]byte
  3879  }
  3880  
  3881  type sqlite3_index_constraint_usage = struct {
  3882  	FargvIndex   int32
  3883  	Fomit        uint8
  3884  	F__ccgo_pad1 [3]byte
  3885  }
  3886  
  3887  type sqlite3_mutex_methods1 = struct {
  3888  	FxMutexInit    uintptr
  3889  	FxMutexEnd     uintptr
  3890  	FxMutexAlloc   uintptr
  3891  	FxMutexFree    uintptr
  3892  	FxMutexEnter   uintptr
  3893  	FxMutexTry     uintptr
  3894  	FxMutexLeave   uintptr
  3895  	FxMutexHeld    uintptr
  3896  	FxMutexNotheld uintptr
  3897  }
  3898  
  3899  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  3900  
  3901  type sqlite3_str1 = struct {
  3902  	Fdb          uintptr
  3903  	FzText       uintptr
  3904  	FnAlloc      u32
  3905  	FmxAlloc     u32
  3906  	FnChar       u32
  3907  	FaccError    u8
  3908  	FprintfFlags u8
  3909  	F__ccgo_pad1 [2]byte
  3910  }
  3911  
  3912  type sqlite3_pcache_page1 = struct {
  3913  	FpBuf   uintptr
  3914  	FpExtra uintptr
  3915  }
  3916  
  3917  type sqlite3_pcache_page = sqlite3_pcache_page1
  3918  
  3919  type sqlite3_pcache_methods21 = struct {
  3920  	FiVersion    int32
  3921  	F__ccgo_pad1 [4]byte
  3922  	FpArg        uintptr
  3923  	FxInit       uintptr
  3924  	FxShutdown   uintptr
  3925  	FxCreate     uintptr
  3926  	FxCachesize  uintptr
  3927  	FxPagecount  uintptr
  3928  	FxFetch      uintptr
  3929  	FxUnpin      uintptr
  3930  	FxRekey      uintptr
  3931  	FxTruncate   uintptr
  3932  	FxDestroy    uintptr
  3933  	FxShrink     uintptr
  3934  }
  3935  
  3936  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  3937  
  3938  type sqlite3_pcache_methods1 = struct {
  3939  	FpArg       uintptr
  3940  	FxInit      uintptr
  3941  	FxShutdown  uintptr
  3942  	FxCreate    uintptr
  3943  	FxCachesize uintptr
  3944  	FxPagecount uintptr
  3945  	FxFetch     uintptr
  3946  	FxUnpin     uintptr
  3947  	FxRekey     uintptr
  3948  	FxTruncate  uintptr
  3949  	FxDestroy   uintptr
  3950  }
  3951  
  3952  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  3953  
  3954  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  3955  
  3956  type sqlite3_snapshot = sqlite3_snapshot1
  3957  
  3958  type sqlite3_rtree_geometry1 = struct {
  3959  	FpContext    uintptr
  3960  	FnParam      int32
  3961  	F__ccgo_pad1 [4]byte
  3962  	FaParam      uintptr
  3963  	FpUser       uintptr
  3964  	FxDelUser    uintptr
  3965  }
  3966  
  3967  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  3968  type sqlite3_rtree_query_info1 = struct {
  3969  	FpContext      uintptr
  3970  	FnParam        int32
  3971  	F__ccgo_pad1   [4]byte
  3972  	FaParam        uintptr
  3973  	FpUser         uintptr
  3974  	FxDelUser      uintptr
  3975  	FaCoord        uintptr
  3976  	FanQueue       uintptr
  3977  	FnCoord        int32
  3978  	FiLevel        int32
  3979  	FmxLevel       int32
  3980  	F__ccgo_pad2   [4]byte
  3981  	FiRowid        sqlite3_int64
  3982  	FrParentScore  sqlite3_rtree_dbl
  3983  	FeParentWithin int32
  3984  	FeWithin       int32
  3985  	FrScore        sqlite3_rtree_dbl
  3986  	FapSqlParam    uintptr
  3987  }
  3988  
  3989  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  3990  
  3991  type sqlite3_rtree_dbl = float64
  3992  
  3993  type Fts5ExtensionApi1 = struct {
  3994  	FiVersion           int32
  3995  	F__ccgo_pad1        [4]byte
  3996  	FxUserData          uintptr
  3997  	FxColumnCount       uintptr
  3998  	FxRowCount          uintptr
  3999  	FxColumnTotalSize   uintptr
  4000  	FxTokenize          uintptr
  4001  	FxPhraseCount       uintptr
  4002  	FxPhraseSize        uintptr
  4003  	FxInstCount         uintptr
  4004  	FxInst              uintptr
  4005  	FxRowid             uintptr
  4006  	FxColumnText        uintptr
  4007  	FxColumnSize        uintptr
  4008  	FxQueryPhrase       uintptr
  4009  	FxSetAuxdata        uintptr
  4010  	FxGetAuxdata        uintptr
  4011  	FxPhraseFirst       uintptr
  4012  	FxPhraseNext        uintptr
  4013  	FxPhraseFirstColumn uintptr
  4014  	FxPhraseNextColumn  uintptr
  4015  }
  4016  
  4017  type Fts5ExtensionApi = Fts5ExtensionApi1
  4018  type Fts5PhraseIter1 = struct {
  4019  	Fa uintptr
  4020  	Fb uintptr
  4021  }
  4022  
  4023  type Fts5PhraseIter = Fts5PhraseIter1
  4024  
  4025  type fts5_extension_function = uintptr
  4026  type fts5_tokenizer1 = struct {
  4027  	FxCreate   uintptr
  4028  	FxDelete   uintptr
  4029  	FxTokenize uintptr
  4030  }
  4031  
  4032  type fts5_tokenizer = fts5_tokenizer1
  4033  
  4034  type fts5_api1 = struct {
  4035  	FiVersion         int32
  4036  	F__ccgo_pad1      [4]byte
  4037  	FxCreateTokenizer uintptr
  4038  	FxFindTokenizer   uintptr
  4039  	FxCreateFunction  uintptr
  4040  }
  4041  
  4042  type fts5_api = fts5_api1
  4043  
  4044  type sqlite3expert1 = struct {
  4045  	FiSample     int32
  4046  	F__ccgo_pad1 [4]byte
  4047  	Fdb          uintptr
  4048  	Fdbm         uintptr
  4049  	Fdbv         uintptr
  4050  	FpTable      uintptr
  4051  	FpScan       uintptr
  4052  	FpWrite      uintptr
  4053  	FpStatement  uintptr
  4054  	FbRun        int32
  4055  	F__ccgo_pad2 [4]byte
  4056  	FpzErrmsg    uintptr
  4057  	Frc          int32
  4058  	F__ccgo_pad3 [4]byte
  4059  	FhIdx        IdxHash
  4060  	FzCandidates uintptr
  4061  }
  4062  
  4063  type sqlite3expert = sqlite3expert1
  4064  
  4065  type locale_t = uintptr
  4066  
  4067  type ssize_t = int64
  4068  
  4069  type rsize_t = size_t
  4070  
  4071  type errno_t = int32
  4072  
  4073  type fpos_t = int64
  4074  
  4075  type off_t = int64
  4076  
  4077  type off64_t = int64
  4078  
  4079  type __sbuf = struct {
  4080  	F_base       uintptr
  4081  	F_size       int32
  4082  	F__ccgo_pad1 [4]byte
  4083  }
  4084  
  4085  type __sFILE = struct {
  4086  	F_p          uintptr
  4087  	F_r          int32
  4088  	F_w          int32
  4089  	F_flags      int16
  4090  	F_file       int16
  4091  	F__ccgo_pad1 [4]byte
  4092  	F_bf         struct {
  4093  		F_base       uintptr
  4094  		F_size       int32
  4095  		F__ccgo_pad1 [4]byte
  4096  	}
  4097  	F_lbfsize    int32
  4098  	F__ccgo_pad2 [4]byte
  4099  	F_cookie     uintptr
  4100  	F_close      uintptr
  4101  	F_read       uintptr
  4102  	F_seek       uintptr
  4103  	F_write      uintptr
  4104  	F_ub         struct {
  4105  		F_base       uintptr
  4106  		F_size       int32
  4107  		F__ccgo_pad1 [4]byte
  4108  	}
  4109  	F_up   uintptr
  4110  	F_ur   int32
  4111  	F_ubuf [3]uint8
  4112  	F_nbuf [1]uint8
  4113  	F_lb   struct {
  4114  		F_base       uintptr
  4115  		F_size       int32
  4116  		F__ccgo_pad1 [4]byte
  4117  	}
  4118  	F_blksize     int32
  4119  	F__ccgo_pad3  [4]byte
  4120  	F_offset      fpos_t
  4121  	F_fl_mutex    uintptr
  4122  	F_fl_owner    uintptr
  4123  	F_fl_count    int32
  4124  	F_orientation int32
  4125  	F_mbstate     struct {
  4126  		F__ccgo_pad1 [0]uint64
  4127  		F__mbstate8  [128]int8
  4128  	}
  4129  	F_flags2     int32
  4130  	F__ccgo_pad4 [4]byte
  4131  }
  4132  
  4133  type FILE = __sFILE
  4134  type cookie_io_functions_t = struct {
  4135  	Fread  uintptr
  4136  	Fwrite uintptr
  4137  	Fseek  uintptr
  4138  	Fclose uintptr
  4139  }
  4140  
  4141  type i64 = sqlite3_int64
  4142  type u64 = sqlite3_uint64
  4143  
  4144  type IdxColumn1 = struct {
  4145  	FzName       uintptr
  4146  	FzColl       uintptr
  4147  	FiPk         int32
  4148  	F__ccgo_pad1 [4]byte
  4149  }
  4150  
  4151  type IdxColumn = IdxColumn1
  4152  type IdxConstraint1 = struct {
  4153  	FzColl  uintptr
  4154  	FbRange int32
  4155  	FiCol   int32
  4156  	FbFlag  int32
  4157  	FbDesc  int32
  4158  	FpNext  uintptr
  4159  	FpLink  uintptr
  4160  }
  4161  
  4162  type IdxConstraint = IdxConstraint1
  4163  type IdxScan1 = struct {
  4164  	FpTab        uintptr
  4165  	FiDb         int32
  4166  	F__ccgo_pad1 [4]byte
  4167  	Fcovering    i64
  4168  	FpOrder      uintptr
  4169  	FpEq         uintptr
  4170  	FpRange      uintptr
  4171  	FpNextScan   uintptr
  4172  }
  4173  
  4174  type IdxScan = IdxScan1
  4175  type IdxStatement1 = struct {
  4176  	FiId         int32
  4177  	F__ccgo_pad1 [4]byte
  4178  	FzSql        uintptr
  4179  	FzIdx        uintptr
  4180  	FzEQP        uintptr
  4181  	FpNext       uintptr
  4182  }
  4183  
  4184  type IdxStatement = IdxStatement1
  4185  type IdxTable1 = struct {
  4186  	FnCol        int32
  4187  	F__ccgo_pad1 [4]byte
  4188  	FzName       uintptr
  4189  	FaCol        uintptr
  4190  	FpNext       uintptr
  4191  }
  4192  
  4193  type IdxTable = IdxTable1
  4194  type IdxWrite1 = struct {
  4195  	FpTab        uintptr
  4196  	FeOp         int32
  4197  	F__ccgo_pad1 [4]byte
  4198  	FpNext       uintptr
  4199  }
  4200  
  4201  type IdxWrite = IdxWrite1
  4202  
  4203  type IdxHashEntry1 = struct {
  4204  	FzKey      uintptr
  4205  	FzVal      uintptr
  4206  	FzVal2     uintptr
  4207  	FpHashNext uintptr
  4208  	FpNext     uintptr
  4209  }
  4210  
  4211  type IdxHashEntry = IdxHashEntry1
  4212  type IdxHash1 = struct {
  4213  	FpFirst uintptr
  4214  	FaHash  [1023]uintptr
  4215  }
  4216  
  4217  type IdxHash = IdxHash1
  4218  
  4219  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4220  	var pRet uintptr
  4221  
  4222  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4223  	if pRet != 0 {
  4224  		libc.Xmemset(tls, pRet, 0, uint64(nByte))
  4225  	} else {
  4226  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4227  	}
  4228  	return pRet
  4229  }
  4230  
  4231  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4232  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4233  }
  4234  
  4235  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4236  	var i int32
  4237  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4238  		var pEntry uintptr
  4239  		var pNext uintptr
  4240  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  4241  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4242  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4243  			sqlite3.Xsqlite3_free(tls, pEntry)
  4244  		}
  4245  	}
  4246  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4247  }
  4248  
  4249  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  4250  	var ret uint32 = uint32(0)
  4251  	var i int32
  4252  	for i = 0; i < n; i++ {
  4253  		ret = ret + (ret<<3 + uint32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i))))))
  4254  	}
  4255  	return int32(ret % uint32(IDX_HASH_SIZE))
  4256  }
  4257  
  4258  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  4259  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  4260  	var iHash int32 = idxHashString(tls, zKey, nKey)
  4261  	var nVal int32 = func() int32 {
  4262  		if zVal != 0 {
  4263  			return int32(libc.Xstrlen(tls, zVal))
  4264  		}
  4265  		return 0
  4266  	}()
  4267  	var pEntry uintptr
  4268  
  4269  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4270  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4271  			return 1
  4272  		}
  4273  	}
  4274  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  4275  	if pEntry != 0 {
  4276  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  4277  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey))
  4278  		if zVal != 0 {
  4279  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  4280  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal))
  4281  		}
  4282  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  4283  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  4284  
  4285  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  4286  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  4287  	}
  4288  	return 0
  4289  }
  4290  
  4291  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4292  	var iHash int32
  4293  	var pEntry uintptr
  4294  	if nKey < 0 {
  4295  		nKey = int32(libc.Xstrlen(tls, zKey))
  4296  	}
  4297  	iHash = idxHashString(tls, zKey, nKey)
  4298  
  4299  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4300  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4301  			return pEntry
  4302  		}
  4303  	}
  4304  	return uintptr(0)
  4305  }
  4306  
  4307  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4308  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  4309  	if pEntry != 0 {
  4310  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  4311  	}
  4312  	return uintptr(0)
  4313  }
  4314  
  4315  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  4316  	var pNew uintptr
  4317  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  4318  
  4319  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  4320  	if pNew != 0 {
  4321  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  4322  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1))
  4323  	}
  4324  	return pNew
  4325  }
  4326  
  4327  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  4328  	bp := tls.Alloc(8)
  4329  	defer tls.Free(8)
  4330  
  4331  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  4332  }
  4333  
  4334  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  4335  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  4336  	if rc != SQLITE_OK {
  4337  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  4338  		idxDatabaseError(tls, db, pzErrmsg)
  4339  	}
  4340  	return rc
  4341  }
  4342  
  4343  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  4344  	var ap va_list
  4345  	_ = ap
  4346  	var rc int32
  4347  	var zSql uintptr
  4348  	ap = va
  4349  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4350  	if zSql == uintptr(0) {
  4351  		rc = SQLITE_NOMEM
  4352  	} else {
  4353  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  4354  		sqlite3.Xsqlite3_free(tls, zSql)
  4355  	}
  4356  	_ = ap
  4357  	return rc
  4358  }
  4359  
  4360  type ExpertVtab1 = struct {
  4361  	Fbase    sqlite3_vtab
  4362  	FpTab    uintptr
  4363  	FpExpert uintptr
  4364  }
  4365  
  4366  type ExpertVtab = ExpertVtab1
  4367  
  4368  type ExpertCsr1 = struct {
  4369  	Fbase  sqlite3_vtab_cursor
  4370  	FpData uintptr
  4371  }
  4372  
  4373  type ExpertCsr = ExpertCsr1
  4374  
  4375  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  4376  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  4377  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  4378  
  4379  	if zRet != 0 {
  4380  		var iOut int32 = 0
  4381  		var iIn int32 = 0
  4382  		for iIn = 1; iIn < n-1; iIn++ {
  4383  			if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  4384  				iIn++
  4385  			}
  4386  			*(*int8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
  4387  		}
  4388  		*(*int8)(unsafe.Pointer(zRet + uintptr(iOut))) = int8(0)
  4389  	}
  4390  
  4391  	return zRet
  4392  }
  4393  
  4394  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  4395  	bp := tls.Alloc(4)
  4396  	defer tls.Free(4)
  4397  
  4398  	var pExpert uintptr = pAux
  4399  	var p uintptr = uintptr(0)
  4400  
  4401  	if argc != 4 {
  4402  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  4403  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  4404  	} else {
  4405  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  4406  		if zCreateTable != 0 {
  4407  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  4408  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4409  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  4410  			}
  4411  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4412  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  4413  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  4414  
  4415  			}
  4416  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  4417  		} else {
  4418  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  4419  		}
  4420  	}
  4421  
  4422  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  4423  	return *(*int32)(unsafe.Pointer(bp))
  4424  }
  4425  
  4426  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  4427  	var p uintptr = pVtab
  4428  	sqlite3.Xsqlite3_free(tls, p)
  4429  	return SQLITE_OK
  4430  }
  4431  
  4432  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  4433  	bp := tls.Alloc(4)
  4434  	defer tls.Free(4)
  4435  
  4436  	var p uintptr = pVtab
  4437  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4438  	var n int32 = 0
  4439  	var pScan uintptr
  4440  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  4441  
  4442  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  4443  	if pScan != 0 {
  4444  		var i int32
  4445  
  4446  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  4447  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  4448  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  4449  
  4450  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  4451  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  4452  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  4453  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  4454  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  4455  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  4456  				var pNew uintptr
  4457  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  4458  				pNew = idxNewConstraint(tls, bp, zColl)
  4459  				if pNew != 0 {
  4460  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  4461  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  4462  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  4463  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  4464  					} else {
  4465  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  4466  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  4467  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  4468  					}
  4469  				}
  4470  				n++
  4471  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  4472  			}
  4473  		}
  4474  
  4475  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  4476  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  4477  			if iCol >= 0 {
  4478  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  4479  				if pNew != 0 {
  4480  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  4481  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  4482  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4483  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4484  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  4485  					n++
  4486  				}
  4487  			}
  4488  		}
  4489  	}
  4490  
  4491  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  4492  	return *(*int32)(unsafe.Pointer(bp))
  4493  }
  4494  
  4495  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  4496  	_ = pVtab
  4497  	_ = nData
  4498  	_ = azData
  4499  	_ = pRowid
  4500  	return SQLITE_OK
  4501  }
  4502  
  4503  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  4504  	bp := tls.Alloc(4)
  4505  	defer tls.Free(4)
  4506  
  4507  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4508  	var pCsr uintptr
  4509  	_ = pVTab
  4510  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  4511  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  4512  	return *(*int32)(unsafe.Pointer(bp))
  4513  }
  4514  
  4515  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  4516  	var pCsr uintptr = cur
  4517  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4518  	sqlite3.Xsqlite3_free(tls, pCsr)
  4519  	return SQLITE_OK
  4520  }
  4521  
  4522  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  4523  	var pCsr uintptr = cur
  4524  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  4525  }
  4526  
  4527  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  4528  	var pCsr uintptr = cur
  4529  	var rc int32 = SQLITE_OK
  4530  
  4531  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4532  	if rc != SQLITE_ROW {
  4533  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4534  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4535  	} else {
  4536  		rc = SQLITE_OK
  4537  	}
  4538  
  4539  	return rc
  4540  }
  4541  
  4542  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  4543  	_ = cur
  4544  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  4545  	return SQLITE_OK
  4546  }
  4547  
  4548  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  4549  	var pCsr uintptr = cur
  4550  	var pVal uintptr
  4551  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  4552  	if pVal != 0 {
  4553  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  4554  	}
  4555  	return SQLITE_OK
  4556  }
  4557  
  4558  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  4559  	bp := tls.Alloc(8)
  4560  	defer tls.Free(8)
  4561  
  4562  	var pCsr uintptr = cur
  4563  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  4564  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  4565  	var rc int32
  4566  
  4567  	_ = idxNum
  4568  	_ = idxStr
  4569  	_ = argc
  4570  	_ = argv
  4571  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4572  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4573  	if rc == SQLITE_OK {
  4574  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  4575  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  4576  	}
  4577  
  4578  	if rc == SQLITE_OK {
  4579  		rc = expertNext(tls, cur)
  4580  	}
  4581  	return rc
  4582  }
  4583  
  4584  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  4585  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  4586  }
  4587  
  4588  var expertModule = sqlite3_module{
  4589  	FiVersion:    2,
  4590  	FxCreate:     0,
  4591  	FxConnect:    0,
  4592  	FxBestIndex:  0,
  4593  	FxDisconnect: 0,
  4594  	FxDestroy:    0,
  4595  	FxOpen:       0,
  4596  	FxClose:      0,
  4597  	FxFilter:     0,
  4598  	FxNext:       0,
  4599  	FxEof:        0,
  4600  	FxColumn:     0,
  4601  	FxRowid:      0,
  4602  	FxUpdate:     0,
  4603  }
  4604  
  4605  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  4606  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  4607  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4608  		*(*int32)(unsafe.Pointer(pRc)) = rc
  4609  	}
  4610  }
  4611  
  4612  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  4613  	bp := tls.Alloc(40)
  4614  	defer tls.Free(40)
  4615  
  4616  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  4617  	var nCol int32 = 0
  4618  	var nTab int32
  4619  	var nByte int32
  4620  	var pNew uintptr = uintptr(0)
  4621  
  4622  	var rc2 int32
  4623  	var pCsr uintptr = uintptr(0)
  4624  	var nPk int32 = 0
  4625  
  4626  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  4627  	if zTab == uintptr(0) {
  4628  		return SQLITE_ERROR
  4629  	}
  4630  	nTab = int32(libc.Xstrlen(tls, zTab))
  4631  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  4632  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  4633  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4634  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4635  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4636  		if zCol == uintptr(0) {
  4637  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  4638  			break
  4639  		}
  4640  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  4641  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4642  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  4643  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  4644  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  4645  		}
  4646  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  4647  		nCol++
  4648  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  4649  	}
  4650  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4651  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4652  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  4653  	}
  4654  
  4655  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  4656  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4657  		pNew = idxMalloc(tls, bp+24, nByte)
  4658  	}
  4659  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4660  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  4661  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  4662  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  4663  	}
  4664  
  4665  	nCol = 0
  4666  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4667  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4668  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  4669  		var nCopy int32
  4670  		if zCol == uintptr(0) {
  4671  			continue
  4672  		}
  4673  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  4674  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  4675  		(*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)
  4676  		libc.Xmemcpy(tls, pCsr, zCol, uint64(nCopy))
  4677  		pCsr += uintptr(nCopy)
  4678  
  4679  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4680  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  4681  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4682  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  4683  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  4684  			}
  4685  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  4686  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  4687  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy))
  4688  			pCsr += uintptr(nCopy)
  4689  		}
  4690  
  4691  		nCol++
  4692  	}
  4693  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4694  
  4695  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  4696  		sqlite3.Xsqlite3_free(tls, pNew)
  4697  		pNew = uintptr(0)
  4698  	} else if pNew != uintptr(0) {
  4699  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  4700  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  4701  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1))
  4702  		}
  4703  	}
  4704  
  4705  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  4706  	return *(*int32)(unsafe.Pointer(bp + 24))
  4707  }
  4708  
  4709  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  4710  	var ap va_list
  4711  	_ = ap
  4712  	var zAppend uintptr = uintptr(0)
  4713  	var zRet uintptr = uintptr(0)
  4714  	var nIn int32
  4715  	if zIn != 0 {
  4716  		nIn = int32(libc.Xstrlen(tls, zIn))
  4717  	} else {
  4718  		nIn = 0
  4719  	}
  4720  	var nAppend int32 = 0
  4721  	ap = va
  4722  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4723  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4724  		if zAppend != 0 {
  4725  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  4726  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  4727  		}
  4728  		if zAppend != 0 && zRet != 0 {
  4729  			if nIn != 0 {
  4730  				libc.Xmemcpy(tls, zRet, zIn, uint64(nIn))
  4731  			}
  4732  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1))
  4733  		} else {
  4734  			sqlite3.Xsqlite3_free(tls, zRet)
  4735  			zRet = uintptr(0)
  4736  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4737  		}
  4738  		sqlite3.Xsqlite3_free(tls, zAppend)
  4739  		sqlite3.Xsqlite3_free(tls, zIn)
  4740  	}
  4741  	_ = ap
  4742  	return zRet
  4743  }
  4744  
  4745  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  4746  	var i int32
  4747  	for i = 0; *(*int8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  4748  		if !(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  4749  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  4750  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  4751  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  4752  			return 1
  4753  		}
  4754  	}
  4755  	return 0
  4756  }
  4757  
  4758  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  4759  	bp := tls.Alloc(32)
  4760  	defer tls.Free(32)
  4761  
  4762  	var zRet uintptr = zIn
  4763  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  4764  	if zRet != 0 {
  4765  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  4766  	}
  4767  
  4768  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  4769  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4770  	} else {
  4771  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4772  	}
  4773  
  4774  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4775  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4776  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4777  		} else {
  4778  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4779  		}
  4780  	}
  4781  
  4782  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  4783  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  4784  	}
  4785  	return zRet
  4786  }
  4787  
  4788  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4789  	bp := tls.Alloc(36)
  4790  	defer tls.Free(36)
  4791  
  4792  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4793  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4794  	var pIter uintptr
  4795  	var nEq int32 = 0
  4796  
  4797  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4798  		nEq++
  4799  	}
  4800  
  4801  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  4802  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  4803  		var bMatch int32 = 1
  4804  		var pT uintptr = pTail
  4805  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  4806  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  4807  		if zIdx == uintptr(0) {
  4808  			continue
  4809  		}
  4810  
  4811  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4812  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  4813  		}
  4814  
  4815  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  4816  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  4817  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  4818  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  4819  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  4820  
  4821  			if iIdx < nEq {
  4822  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4823  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  4824  						continue
  4825  					}
  4826  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  4827  						continue
  4828  					}
  4829  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  4830  						continue
  4831  					}
  4832  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  4833  					break
  4834  				}
  4835  				if pIter == uintptr(0) {
  4836  					bMatch = 0
  4837  					break
  4838  				}
  4839  			} else {
  4840  				if pT != 0 {
  4841  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  4842  						bMatch = 0
  4843  						break
  4844  					}
  4845  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  4846  				}
  4847  			}
  4848  		}
  4849  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  4850  
  4851  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  4852  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4853  			return 1
  4854  		}
  4855  	}
  4856  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4857  
  4858  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  4859  	return 0
  4860  }
  4861  
  4862  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  4863  	_ = azColumns
  4864  	if nc > 0 && (int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  4865  		*(*int32)(unsafe.Pointer(pCount)) += 1
  4866  	}
  4867  	return 0
  4868  }
  4869  
  4870  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4871  	bp := tls.Alloc(56)
  4872  	defer tls.Free(56)
  4873  
  4874  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  4875  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  4876  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  4877  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  4878  		var zCols uintptr = uintptr(0)
  4879  		var zIdx uintptr = uintptr(0)
  4880  		var pCons uintptr
  4881  		var h uint32 = uint32(0)
  4882  		var zFmt uintptr
  4883  
  4884  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4885  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4886  		}
  4887  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4888  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4889  		}
  4890  
  4891  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  4892  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4893  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  4894  			var zName uintptr = uintptr(0)
  4895  			var collisions int32 = 0
  4896  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  4897  				var zFind uintptr
  4898  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  4899  					h = h + (h<<3 + uint32(*(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  4900  				}
  4901  				sqlite3.Xsqlite3_free(tls, zName)
  4902  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  4903  				if zName == uintptr(0) {
  4904  					break
  4905  				}
  4906  
  4907  				zFmt = ts + 188
  4908  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  4909  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  4910  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  4911  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  4912  				}{countNonzeros})), bp+52, uintptr(0))
  4913  
  4914  				sqlite3.Xsqlite3_free(tls, zFind)
  4915  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  4916  					collisions = 0
  4917  					break
  4918  				}
  4919  				collisions++
  4920  			}
  4921  			if collisions != 0 {
  4922  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4923  			} else if zName == uintptr(0) {
  4924  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4925  			} else {
  4926  				if quoteTable != 0 {
  4927  					zFmt = ts + 274
  4928  				} else {
  4929  					zFmt = ts + 304
  4930  				}
  4931  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  4932  				if !(zIdx != 0) {
  4933  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4934  				} else {
  4935  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  4936  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  4937  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4938  					} else {
  4939  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  4940  					}
  4941  				}
  4942  				sqlite3.Xsqlite3_free(tls, zName)
  4943  				sqlite3.Xsqlite3_free(tls, zIdx)
  4944  			}
  4945  		}
  4946  
  4947  		sqlite3.Xsqlite3_free(tls, zCols)
  4948  	}
  4949  	return *(*int32)(unsafe.Pointer(bp + 48))
  4950  }
  4951  
  4952  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  4953  	var pCmp uintptr
  4954  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  4955  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  4956  			return 1
  4957  		}
  4958  	}
  4959  	return 0
  4960  }
  4961  
  4962  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  4963  	var p1 uintptr = uintptr(0)
  4964  	var pCon uintptr
  4965  	var rc int32
  4966  
  4967  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4968  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4969  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  4970  			p1 = pCon
  4971  		}
  4972  	}
  4973  
  4974  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  4975  
  4976  	if pTail == uintptr(0) {
  4977  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4978  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4979  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  4980  			}
  4981  		}
  4982  	}
  4983  
  4984  	return rc
  4985  }
  4986  
  4987  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  4988  	var rc int32 = SQLITE_OK
  4989  	var pIter uintptr
  4990  
  4991  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  4992  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  4993  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  4994  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  4995  		}
  4996  	}
  4997  
  4998  	return rc
  4999  }
  5000  
  5001  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  5002  	var pNext uintptr
  5003  	var p uintptr
  5004  
  5005  	for p = pConstraint; p != 0; p = pNext {
  5006  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  5007  		sqlite3.Xsqlite3_free(tls, p)
  5008  	}
  5009  }
  5010  
  5011  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  5012  	var p uintptr
  5013  	var pNext uintptr
  5014  	for p = pScan; p != pLast; p = pNext {
  5015  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  5016  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  5017  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  5018  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  5019  		sqlite3.Xsqlite3_free(tls, p)
  5020  	}
  5021  }
  5022  
  5023  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  5024  	var p uintptr
  5025  	var pNext uintptr
  5026  	for p = pStatement; p != pLast; p = pNext {
  5027  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  5028  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  5029  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  5030  		sqlite3.Xsqlite3_free(tls, p)
  5031  	}
  5032  }
  5033  
  5034  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  5035  	var pIter uintptr
  5036  	var pNext uintptr
  5037  	for pIter = pTab; pIter != 0; pIter = pNext {
  5038  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  5039  		sqlite3.Xsqlite3_free(tls, pIter)
  5040  	}
  5041  }
  5042  
  5043  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  5044  	var pIter uintptr
  5045  	var pNext uintptr
  5046  	for pIter = pTab; pIter != 0; pIter = pNext {
  5047  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5048  		sqlite3.Xsqlite3_free(tls, pIter)
  5049  	}
  5050  }
  5051  
  5052  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5053  	bp := tls.Alloc(8228)
  5054  	defer tls.Free(8228)
  5055  
  5056  	var pStmt uintptr
  5057  	var dbm uintptr
  5058  
  5059  	var zSql uintptr
  5060  	var nIdx int32
  5061  	var zIdx uintptr
  5062  
  5063  	var zDetail uintptr
  5064  	var nDetail int32
  5065  	var i int32
  5066  	var pEntry uintptr
  5067  
  5068  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5069  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5070  	idxHashInit(tls, bp+24)
  5071  
  5072  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5073  __1:
  5074  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5075  		goto __3
  5076  	}
  5077  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5078  	idxHashClear(tls, bp+24)
  5079  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5080  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5081  __4:
  5082  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5083  		goto __5
  5084  	}
  5085  
  5086  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5087  
  5088  	if !!(zDetail != 0) {
  5089  		goto __6
  5090  	}
  5091  	goto __4
  5092  __6:
  5093  	;
  5094  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5095  
  5096  	i = 0
  5097  __7:
  5098  	if !(i < nDetail) {
  5099  		goto __9
  5100  	}
  5101  	zIdx = uintptr(0)
  5102  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5103  		goto __10
  5104  	}
  5105  	zIdx = zDetail + uintptr(i+13)
  5106  	goto __11
  5107  __10:
  5108  	if !(i+22 < nDetail &&
  5109  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5110  		goto __12
  5111  	}
  5112  	zIdx = zDetail + uintptr(i+22)
  5113  __12:
  5114  	;
  5115  __11:
  5116  	;
  5117  	if !(zIdx != 0) {
  5118  		goto __13
  5119  	}
  5120  	nIdx = 0
  5121  __14:
  5122  	if !(int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5123  		goto __15
  5124  	}
  5125  	nIdx++
  5126  	goto __14
  5127  __15:
  5128  	;
  5129  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5130  	if !(zSql != 0) {
  5131  		goto __16
  5132  	}
  5133  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5134  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5135  		goto __17
  5136  	}
  5137  	goto find_indexes_out
  5138  __17:
  5139  	;
  5140  __16:
  5141  	;
  5142  	goto __9
  5143  __13:
  5144  	;
  5145  	goto __8
  5146  __8:
  5147  	i++
  5148  	goto __7
  5149  	goto __9
  5150  __9:
  5151  	;
  5152  	if !(int32(*(*int8)(unsafe.Pointer(zDetail))) != '-') {
  5153  		goto __18
  5154  	}
  5155  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5156  __18:
  5157  	;
  5158  	goto __4
  5159  __5:
  5160  	;
  5161  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5162  __19:
  5163  	if !(pEntry != 0) {
  5164  		goto __21
  5165  	}
  5166  	(*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))
  5167  	goto __20
  5168  __20:
  5169  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5170  	goto __19
  5171  	goto __21
  5172  __21:
  5173  	;
  5174  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5175  	goto __2
  5176  __2:
  5177  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5178  	goto __1
  5179  	goto __3
  5180  __3:
  5181  	;
  5182  find_indexes_out:
  5183  	idxHashClear(tls, bp+24)
  5184  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5185  }
  5186  
  5187  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5188  	bp := tls.Alloc(4)
  5189  	defer tls.Free(4)
  5190  
  5191  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5192  	_ = z4
  5193  	_ = zTrigger
  5194  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5195  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5196  			var p uintptr = pCtx
  5197  			var pTab uintptr
  5198  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5199  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5200  					break
  5201  				}
  5202  			}
  5203  			if pTab != 0 {
  5204  				var pWrite uintptr
  5205  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5206  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5207  						break
  5208  					}
  5209  				}
  5210  				if pWrite == uintptr(0) {
  5211  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5212  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5213  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5214  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5215  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5216  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5217  					}
  5218  				}
  5219  			}
  5220  		}
  5221  	}
  5222  	return *(*int32)(unsafe.Pointer(bp))
  5223  }
  5224  
  5225  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5226  	bp := tls.Alloc(104)
  5227  	defer tls.Free(104)
  5228  
  5229  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5230  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5231  	var zSql uintptr = ts + 398
  5232  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5233  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  5234  	var zWrite uintptr = uintptr(0)
  5235  
  5236  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5237  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5238  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5239  		if zCreate == uintptr(0) {
  5240  			continue
  5241  		}
  5242  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5243  	}
  5244  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5245  
  5246  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5247  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  5248  		if z == uintptr(0) {
  5249  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5250  		} else {
  5251  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  5252  			sqlite3.Xsqlite3_free(tls, z)
  5253  		}
  5254  	}
  5255  
  5256  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  5257  	case SQLITE_INSERT:
  5258  		{
  5259  			var i int32
  5260  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  5261  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5262  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  5263  					if i == 0 {
  5264  						return ts + 584
  5265  					}
  5266  					return ts + 97
  5267  				}()))
  5268  			}
  5269  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  5270  			break
  5271  
  5272  		}
  5273  	case SQLITE_UPDATE:
  5274  		{
  5275  			var i int32
  5276  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  5277  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5278  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  5279  					if i == 0 {
  5280  						return ts + 584
  5281  					}
  5282  					return ts + 97
  5283  				}(),
  5284  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  5285  			}
  5286  			break
  5287  
  5288  		}
  5289  	default:
  5290  		{
  5291  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5292  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  5293  				if zWrite == uintptr(0) {
  5294  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5295  				}
  5296  			}
  5297  
  5298  		}
  5299  	}
  5300  
  5301  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5302  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  5303  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  5304  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  5305  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  5306  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5307  		}
  5308  	}
  5309  	sqlite3.Xsqlite3_free(tls, zWrite)
  5310  
  5311  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5312  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  5313  	}
  5314  
  5315  	return *(*int32)(unsafe.Pointer(bp + 88))
  5316  }
  5317  
  5318  var zInt uintptr = ts + 624
  5319  var zDrop uintptr = ts + 662
  5320  
  5321  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5322  	var rc int32 = SQLITE_OK
  5323  	var pEnd uintptr = uintptr(0)
  5324  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5325  
  5326  	for rc == SQLITE_OK && pFirst != pEnd {
  5327  		var pIter uintptr
  5328  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  5329  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  5330  		}
  5331  		pEnd = pFirst
  5332  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5333  	}
  5334  
  5335  	return rc
  5336  }
  5337  
  5338  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  5339  	bp := tls.Alloc(60)
  5340  	defer tls.Free(60)
  5341  
  5342  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  5343  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5344  
  5345  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  5346  		ts+711)
  5347  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5348  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5349  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5350  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5351  
  5352  		if zType == uintptr(0) || zName == uintptr(0) {
  5353  			continue
  5354  		}
  5355  		if int32(*(*int8)(unsafe.Pointer(zType))) == 'v' || int32(*(*int8)(unsafe.Pointer(zType + 1))) == 'r' {
  5356  			if zSql != 0 {
  5357  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5358  			}
  5359  		} else {
  5360  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  5361  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5362  				var i int32
  5363  				var zInner uintptr = uintptr(0)
  5364  				var zOuter uintptr = uintptr(0)
  5365  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  5366  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  5367  
  5368  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  5369  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  5370  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  5371  						libc.VaList(bp, func() uintptr {
  5372  							if i == 0 {
  5373  								return ts + 584
  5374  							}
  5375  							return ts + 97
  5376  						}(), (*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))
  5377  				}
  5378  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  5379  
  5380  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  5381  					ts+1011, libc.VaList(bp+24, zName, zInner))
  5382  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5383  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  5384  				}
  5385  				sqlite3.Xsqlite3_free(tls, zInner)
  5386  				sqlite3.Xsqlite3_free(tls, zOuter)
  5387  			}
  5388  		}
  5389  	}
  5390  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5391  	return *(*int32)(unsafe.Pointer(bp + 56))
  5392  }
  5393  
  5394  type IdxSampleCtx = struct {
  5395  	FiTarget     int32
  5396  	F__ccgo_pad1 [4]byte
  5397  	Ftarget      float64
  5398  	FnRow        float64
  5399  	FnRet        float64
  5400  }
  5401  
  5402  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5403  	bp := tls.Alloc(2)
  5404  	defer tls.Free(2)
  5405  
  5406  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5407  	var bRet int32
  5408  
  5409  	_ = argv
  5410  
  5411  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  5412  		bRet = 1
  5413  	} else {
  5414  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  5415  		if bRet == 0 {
  5416  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  5417  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  5418  		}
  5419  	}
  5420  
  5421  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  5422  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  5423  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  5424  }
  5425  
  5426  type IdxRemCtx = struct {
  5427  	FnSlot       int32
  5428  	F__ccgo_pad1 [4]byte
  5429  	FaSlot       [1]struct {
  5430  		FeType       int32
  5431  		F__ccgo_pad1 [4]byte
  5432  		FiVal        i64
  5433  		FrVal        float64
  5434  		FnByte       int32
  5435  		Fn           int32
  5436  		Fz           uintptr
  5437  	}
  5438  }
  5439  
  5440  type IdxRemSlot = struct {
  5441  	FeType       int32
  5442  	F__ccgo_pad1 [4]byte
  5443  	FiVal        i64
  5444  	FrVal        float64
  5445  	FnByte       int32
  5446  	Fn           int32
  5447  	Fz           uintptr
  5448  }
  5449  
  5450  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5451  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5452  	var pSlot uintptr
  5453  	var iSlot int32
  5454  
  5455  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  5456  
  5457  	pSlot = p + 8 + uintptr(iSlot)*40
  5458  
  5459  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5460  	case SQLITE_NULL:
  5461  		break
  5462  
  5463  	case SQLITE_INTEGER:
  5464  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  5465  		break
  5466  
  5467  	case SQLITE_FLOAT:
  5468  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  5469  		break
  5470  
  5471  	case SQLITE_BLOB:
  5472  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5473  		break
  5474  
  5475  	case SQLITE_TEXT:
  5476  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5477  		break
  5478  	}
  5479  
  5480  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5481  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5482  	case SQLITE_NULL:
  5483  		break
  5484  
  5485  	case SQLITE_INTEGER:
  5486  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5487  		break
  5488  
  5489  	case SQLITE_FLOAT:
  5490  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5491  		break
  5492  
  5493  	case SQLITE_BLOB:
  5494  		fallthrough
  5495  	case SQLITE_TEXT:
  5496  		{
  5497  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5498  			var pData uintptr = uintptr(0)
  5499  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  5500  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  5501  				if zNew == uintptr(0) {
  5502  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  5503  					return
  5504  				}
  5505  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  5506  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  5507  			}
  5508  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  5509  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  5510  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5511  				if pData != 0 {
  5512  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5513  				}
  5514  			} else {
  5515  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5516  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5517  			}
  5518  			break
  5519  
  5520  		}
  5521  	}
  5522  }
  5523  
  5524  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  5525  	bp := tls.Alloc(12)
  5526  	defer tls.Free(12)
  5527  
  5528  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  5529  	var zMax uintptr = ts + 1052
  5530  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5531  
  5532  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  5533  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  5534  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  5535  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  5536  	}
  5537  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  5538  
  5539  	return *(*int32)(unsafe.Pointer(bp + 8))
  5540  }
  5541  
  5542  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  5543  	bp := tls.Alloc(128)
  5544  	defer tls.Free(128)
  5545  
  5546  	var zCols uintptr = uintptr(0)
  5547  	var zOrder uintptr = uintptr(0)
  5548  	var zQuery uintptr = uintptr(0)
  5549  	var nCol int32 = 0
  5550  	var i int32
  5551  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  5552  	var aStat uintptr = uintptr(0)
  5553  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  5554  
  5555  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  5556  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  5557  		var zComma uintptr
  5558  		if zCols == uintptr(0) {
  5559  			zComma = ts + 584
  5560  		} else {
  5561  			zComma = ts + 97
  5562  		}
  5563  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  5564  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  5565  		zCols = idxAppendText(tls, bp+112, zCols,
  5566  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  5567  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  5568  	}
  5569  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  5570  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5571  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5572  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5573  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  5574  		} else {
  5575  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5576  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  5577  		}
  5578  	}
  5579  	sqlite3.Xsqlite3_free(tls, zCols)
  5580  	sqlite3.Xsqlite3_free(tls, zOrder)
  5581  
  5582  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5583  		var dbrem uintptr = func() uintptr {
  5584  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5585  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5586  			}
  5587  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5588  		}()
  5589  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  5590  	}
  5591  	sqlite3.Xsqlite3_free(tls, zQuery)
  5592  
  5593  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5594  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  5595  	}
  5596  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5597  		var pEntry uintptr
  5598  		var zStat uintptr = uintptr(0)
  5599  		for i = 0; i <= nCol; i++ {
  5600  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  5601  		}
  5602  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5603  			*(*int32)(unsafe.Pointer(aStat))++
  5604  			for i = 0; i < nCol; i++ {
  5605  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  5606  					break
  5607  				}
  5608  			}
  5609  			for ; i < nCol; i++ {
  5610  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  5611  			}
  5612  		}
  5613  
  5614  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5615  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  5616  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  5617  			if zStat == uintptr(0) {
  5618  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  5619  			}
  5620  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  5621  				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))))
  5622  			}
  5623  		}
  5624  
  5625  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5626  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  5627  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  5628  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  5629  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  5630  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  5631  		}
  5632  
  5633  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  5634  		if pEntry != 0 {
  5635  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  5636  		} else {
  5637  			sqlite3.Xsqlite3_free(tls, zStat)
  5638  		}
  5639  	}
  5640  	sqlite3.Xsqlite3_free(tls, aStat)
  5641  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  5642  
  5643  	return *(*int32)(unsafe.Pointer(bp + 112))
  5644  }
  5645  
  5646  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  5647  	bp := tls.Alloc(8)
  5648  	defer tls.Free(8)
  5649  
  5650  	var rc int32
  5651  	var zSql uintptr
  5652  
  5653  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5654  	if rc != SQLITE_OK {
  5655  		return rc
  5656  	}
  5657  
  5658  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  5659  		ts+1404, libc.VaList(bp, zTab))
  5660  	if zSql == uintptr(0) {
  5661  		return SQLITE_NOMEM
  5662  	}
  5663  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  5664  	sqlite3.Xsqlite3_free(tls, zSql)
  5665  
  5666  	return rc
  5667  }
  5668  
  5669  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5670  	bp := tls.Alloc(64)
  5671  	defer tls.Free(64)
  5672  
  5673  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  5674  	*(*int32)(unsafe.Pointer(bp)) = 0
  5675  	var pCtx uintptr = uintptr(0)
  5676  
  5677  	var i int32
  5678  	var iPrev i64 = int64(-100000)
  5679  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5680  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  5681  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  5682  
  5683  	var zAllIndex uintptr = ts + 1480
  5684  	var zIndexXInfo uintptr = ts + 1594
  5685  	var zWrite uintptr = ts + 1649
  5686  
  5687  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  5688  		return SQLITE_OK
  5689  	}
  5690  
  5691  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  5692  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5693  		return *(*int32)(unsafe.Pointer(bp + 4))
  5694  	}
  5695  
  5696  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  5697  
  5698  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5699  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  5700  		pCtx = idxMalloc(tls, bp+4, nByte)
  5701  	}
  5702  
  5703  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5704  		var dbrem uintptr = func() uintptr {
  5705  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5706  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5707  			}
  5708  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5709  		}()
  5710  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5711  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  5712  				f func(*libc.TLS, uintptr, int32, uintptr)
  5713  			}{idxRemFunc})), uintptr(0), uintptr(0))
  5714  	}
  5715  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5716  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5717  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  5718  				f func(*libc.TLS, uintptr, int32, uintptr)
  5719  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  5720  	}
  5721  
  5722  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5723  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  5724  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  5725  	}
  5726  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5727  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  5728  	}
  5729  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5730  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  5731  	}
  5732  
  5733  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5734  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5735  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5736  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5737  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  5738  			continue
  5739  		}
  5740  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  5741  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  5742  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  5743  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  5744  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  5745  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  5746  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5747  				break
  5748  			}
  5749  		}
  5750  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  5751  		iPrev = iRowid
  5752  	}
  5753  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  5754  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  5755  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5756  	}
  5757  
  5758  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5759  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  5760  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  5761  
  5762  	if pCtx != 0 {
  5763  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  5764  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  5765  		}
  5766  		sqlite3.Xsqlite3_free(tls, pCtx)
  5767  	}
  5768  
  5769  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5770  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  5771  	}
  5772  
  5773  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5774  	return *(*int32)(unsafe.Pointer(bp + 4))
  5775  }
  5776  
  5777  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  5778  	bp := tls.Alloc(32)
  5779  	defer tls.Free(32)
  5780  
  5781  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5782  	var pNew uintptr
  5783  
  5784  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  5785  
  5786  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5787  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  5788  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  5789  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  5790  	}
  5791  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5792  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  5793  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5794  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  5795  		}
  5796  	}
  5797  
  5798  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5799  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5800  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  5801  			ts+1766, 0)
  5802  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  5803  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5804  			if zSql != 0 {
  5805  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5806  			}
  5807  		}
  5808  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5809  	}
  5810  
  5811  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5812  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  5813  	}
  5814  
  5815  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5816  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  5817  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  5818  		}{idxAuthCallback})), pNew)
  5819  	}
  5820  
  5821  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5822  		sqlite3_expert_destroy(tls, pNew)
  5823  		pNew = uintptr(0)
  5824  	}
  5825  	return pNew
  5826  }
  5827  
  5828  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  5829  	var rc int32 = SQLITE_OK
  5830  	var ap va_list
  5831  	_ = ap
  5832  	ap = va
  5833  	switch op {
  5834  	case EXPERT_CONFIG_SAMPLE:
  5835  		{
  5836  			var iVal int32 = libc.VaInt32(&ap)
  5837  			if iVal < 0 {
  5838  				iVal = 0
  5839  			}
  5840  			if iVal > 100 {
  5841  				iVal = 100
  5842  			}
  5843  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  5844  			break
  5845  
  5846  		}
  5847  	default:
  5848  		rc = SQLITE_NOTFOUND
  5849  		break
  5850  	}
  5851  
  5852  	_ = ap
  5853  	return rc
  5854  }
  5855  
  5856  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  5857  	bp := tls.Alloc(20)
  5858  	defer tls.Free(20)
  5859  
  5860  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  5861  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5862  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5863  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  5864  
  5865  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  5866  		return SQLITE_MISUSE
  5867  	}
  5868  
  5869  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  5870  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5871  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  5872  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5873  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  5874  				var pNew uintptr
  5875  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5876  				var n int32 = int32(libc.Xstrlen(tls, z))
  5877  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  5878  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5879  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  5880  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1))
  5881  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5882  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5883  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5884  					}
  5885  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  5886  				}
  5887  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5888  			}
  5889  		} else {
  5890  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5891  		}
  5892  	}
  5893  
  5894  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5895  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  5896  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  5897  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  5898  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  5899  	}
  5900  
  5901  	return *(*int32)(unsafe.Pointer(bp + 16))
  5902  }
  5903  
  5904  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5905  	bp := tls.Alloc(28)
  5906  	defer tls.Free(28)
  5907  
  5908  	var pEntry uintptr
  5909  
  5910  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  5911  
  5912  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5913  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  5914  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  5915  		if pzErr != 0 {
  5916  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  5917  		}
  5918  		return *(*int32)(unsafe.Pointer(bp + 24))
  5919  	}
  5920  
  5921  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5922  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  5923  	}
  5924  
  5925  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  5926  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  5927  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  5928  				func() uintptr {
  5929  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  5930  						return ts + 1918
  5931  					}
  5932  					return ts + 584
  5933  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  5934  	}
  5935  
  5936  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5937  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  5938  	}
  5939  
  5940  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5941  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  5942  	}
  5943  	return *(*int32)(unsafe.Pointer(bp + 24))
  5944  }
  5945  
  5946  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  5947  	var nRet int32 = 0
  5948  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5949  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5950  	}
  5951  	return nRet
  5952  }
  5953  
  5954  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  5955  	var zRet uintptr = uintptr(0)
  5956  	var pStmt uintptr
  5957  
  5958  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  5959  		return uintptr(0)
  5960  	}
  5961  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  5962  	}
  5963  	switch eReport {
  5964  	case EXPERT_REPORT_SQL:
  5965  		if pStmt != 0 {
  5966  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  5967  		}
  5968  		break
  5969  	case EXPERT_REPORT_INDEXES:
  5970  		if pStmt != 0 {
  5971  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  5972  		}
  5973  		break
  5974  	case EXPERT_REPORT_PLAN:
  5975  		if pStmt != 0 {
  5976  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  5977  		}
  5978  		break
  5979  	case EXPERT_REPORT_CANDIDATES:
  5980  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  5981  		break
  5982  	}
  5983  	return zRet
  5984  }
  5985  
  5986  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  5987  	if p != 0 {
  5988  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  5989  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  5990  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  5991  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  5992  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  5993  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  5994  		idxHashClear(tls, p+88)
  5995  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  5996  		sqlite3.Xsqlite3_free(tls, p)
  5997  	}
  5998  }
  5999  
  6000  type ClientData = uintptr
  6001  
  6002  type Tcl_WideInt = int64
  6003  type Tcl_WideUInt = uint64
  6004  
  6005  type stat = struct {
  6006  	Fst_dev      dev_t
  6007  	Fst_ino      ino_t
  6008  	Fst_nlink    nlink_t
  6009  	Fst_mode     mode_t
  6010  	Fst_padding0 int16
  6011  	Fst_uid      uid_t
  6012  	Fst_gid      gid_t
  6013  	Fst_padding1 int32
  6014  	Fst_rdev     dev_t
  6015  	Fst_atim     struct {
  6016  		Ftv_sec  time_t
  6017  		Ftv_nsec int64
  6018  	}
  6019  	Fst_mtim struct {
  6020  		Ftv_sec  time_t
  6021  		Ftv_nsec int64
  6022  	}
  6023  	Fst_ctim struct {
  6024  		Ftv_sec  time_t
  6025  		Ftv_nsec int64
  6026  	}
  6027  	Fst_birthtim struct {
  6028  		Ftv_sec  time_t
  6029  		Ftv_nsec int64
  6030  	}
  6031  	Fst_size    off_t
  6032  	Fst_blocks  blkcnt_t
  6033  	Fst_blksize blksize_t
  6034  	Fst_flags   fflags_t
  6035  	Fst_gen     uint64
  6036  	Fst_spare   [10]uint64
  6037  }
  6038  
  6039  type Tcl_Interp1 = struct {
  6040  	FresultDontUse    uintptr
  6041  	FfreeProcDontUse  uintptr
  6042  	FerrorLineDontUse int32
  6043  	F__ccgo_pad1      [4]byte
  6044  }
  6045  
  6046  type Tcl_Interp = Tcl_Interp1
  6047  
  6048  type Tcl_AsyncHandler = uintptr
  6049  type Tcl_Channel = uintptr
  6050  type Tcl_ChannelTypeVersion = uintptr
  6051  type Tcl_Command = uintptr
  6052  type Tcl_Condition = uintptr
  6053  type Tcl_Dict = uintptr
  6054  type Tcl_EncodingState = uintptr
  6055  type Tcl_Encoding = uintptr
  6056  type Tcl_Event1 = struct {
  6057  	Fproc    uintptr
  6058  	FnextPtr uintptr
  6059  }
  6060  
  6061  type Tcl_Event = Tcl_Event1
  6062  type Tcl_InterpState = uintptr
  6063  type Tcl_LoadHandle = uintptr
  6064  type Tcl_Mutex = uintptr
  6065  type Tcl_Pid = uintptr
  6066  type Tcl_RegExp = uintptr
  6067  type Tcl_ThreadDataKey = uintptr
  6068  type Tcl_ThreadId = uintptr
  6069  type Tcl_TimerToken = uintptr
  6070  type Tcl_Trace = uintptr
  6071  type Tcl_Var = uintptr
  6072  type Tcl_ZlibStream = uintptr
  6073  
  6074  type Tcl_RegExpIndices1 = struct {
  6075  	Fstart int64
  6076  	Fend   int64
  6077  }
  6078  
  6079  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6080  
  6081  type Tcl_RegExpInfo1 = struct {
  6082  	Fnsubs       int32
  6083  	F__ccgo_pad1 [4]byte
  6084  	Fmatches     uintptr
  6085  	FextendStart int64
  6086  	Freserved    int64
  6087  }
  6088  
  6089  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6090  
  6091  type Tcl_Stat_ = uintptr
  6092  type Tcl_OldStat_ = uintptr
  6093  
  6094  type Tcl_ValueType = uint32
  6095  
  6096  type Tcl_Value1 = struct {
  6097  	Ftype        Tcl_ValueType
  6098  	F__ccgo_pad1 [4]byte
  6099  	FintValue    int64
  6100  	FdoubleValue float64
  6101  	FwideValue   Tcl_WideInt
  6102  }
  6103  
  6104  type Tcl_Value = Tcl_Value1
  6105  
  6106  type Tcl_Obj1 = struct {
  6107  	FrefCount    int32
  6108  	F__ccgo_pad1 [4]byte
  6109  	Fbytes       uintptr
  6110  	Flength      int32
  6111  	F__ccgo_pad2 [4]byte
  6112  	FtypePtr     uintptr
  6113  	FinternalRep struct {
  6114  		FlongValue   int64
  6115  		F__ccgo_pad1 [8]byte
  6116  	}
  6117  }
  6118  
  6119  type Tcl_ObjType1 = struct {
  6120  	Fname             uintptr
  6121  	FfreeIntRepProc   uintptr
  6122  	FdupIntRepProc    uintptr
  6123  	FupdateStringProc uintptr
  6124  	FsetFromAnyProc   uintptr
  6125  }
  6126  
  6127  type Tcl_ObjType = Tcl_ObjType1
  6128  
  6129  type Tcl_Obj = Tcl_Obj1
  6130  
  6131  type Tcl_SavedResult1 = struct {
  6132  	Fresult       uintptr
  6133  	FfreeProc     uintptr
  6134  	FobjResultPtr uintptr
  6135  	FappendResult uintptr
  6136  	FappendAvl    int32
  6137  	FappendUsed   int32
  6138  	FresultSpace  [201]int8
  6139  	F__ccgo_pad1  [7]byte
  6140  }
  6141  
  6142  type Tcl_SavedResult = Tcl_SavedResult1
  6143  
  6144  type Tcl_Namespace1 = struct {
  6145  	Fname       uintptr
  6146  	FfullName   uintptr
  6147  	FclientData ClientData
  6148  	FdeleteProc uintptr
  6149  	FparentPtr  uintptr
  6150  }
  6151  
  6152  type Tcl_Namespace = Tcl_Namespace1
  6153  
  6154  type Tcl_CallFrame1 = struct {
  6155  	FnsPtr       uintptr
  6156  	Fdummy1      int32
  6157  	Fdummy2      int32
  6158  	Fdummy3      uintptr
  6159  	Fdummy4      uintptr
  6160  	Fdummy5      uintptr
  6161  	Fdummy6      int32
  6162  	F__ccgo_pad1 [4]byte
  6163  	Fdummy7      uintptr
  6164  	Fdummy8      uintptr
  6165  	Fdummy9      int32
  6166  	F__ccgo_pad2 [4]byte
  6167  	Fdummy10     uintptr
  6168  	Fdummy11     uintptr
  6169  	Fdummy12     uintptr
  6170  	Fdummy13     uintptr
  6171  }
  6172  
  6173  type Tcl_CallFrame = Tcl_CallFrame1
  6174  
  6175  type Tcl_CmdInfo1 = struct {
  6176  	FisNativeObjectProc int32
  6177  	F__ccgo_pad1        [4]byte
  6178  	FobjProc            uintptr
  6179  	FobjClientData      ClientData
  6180  	Fproc               uintptr
  6181  	FclientData         ClientData
  6182  	FdeleteProc         uintptr
  6183  	FdeleteData         ClientData
  6184  	FnamespacePtr       uintptr
  6185  }
  6186  
  6187  type Tcl_CmdInfo = Tcl_CmdInfo1
  6188  
  6189  type Tcl_DString1 = struct {
  6190  	Fstring      uintptr
  6191  	Flength      int32
  6192  	FspaceAvl    int32
  6193  	FstaticSpace [200]int8
  6194  }
  6195  
  6196  type Tcl_DString = Tcl_DString1
  6197  
  6198  type Tcl_HashKeyType1 = struct {
  6199  	Fversion         int32
  6200  	Fflags           int32
  6201  	FhashKeyProc     uintptr
  6202  	FcompareKeysProc uintptr
  6203  	FallocEntryProc  uintptr
  6204  	FfreeEntryProc   uintptr
  6205  }
  6206  
  6207  type Tcl_HashKeyType = Tcl_HashKeyType1
  6208  type Tcl_HashTable1 = struct {
  6209  	Fbuckets       uintptr
  6210  	FstaticBuckets [4]uintptr
  6211  	FnumBuckets    int32
  6212  	FnumEntries    int32
  6213  	FrebuildSize   int32
  6214  	FdownShift     int32
  6215  	Fmask          int32
  6216  	FkeyType       int32
  6217  	FfindProc      uintptr
  6218  	FcreateProc    uintptr
  6219  	FtypePtr       uintptr
  6220  }
  6221  
  6222  type Tcl_HashTable = Tcl_HashTable1
  6223  type Tcl_HashEntry1 = struct {
  6224  	FnextPtr    uintptr
  6225  	FtablePtr   uintptr
  6226  	Fhash       uintptr
  6227  	FclientData ClientData
  6228  	Fkey        struct{ FoneWordValue uintptr }
  6229  }
  6230  
  6231  type Tcl_HashEntry = Tcl_HashEntry1
  6232  
  6233  type Tcl_HashSearch1 = struct {
  6234  	FtablePtr     uintptr
  6235  	FnextIndex    int32
  6236  	F__ccgo_pad1  [4]byte
  6237  	FnextEntryPtr uintptr
  6238  }
  6239  
  6240  type Tcl_HashSearch = Tcl_HashSearch1
  6241  
  6242  type Tcl_DictSearch = struct {
  6243  	Fnext          uintptr
  6244  	Fepoch         int32
  6245  	F__ccgo_pad1   [4]byte
  6246  	FdictionaryPtr Tcl_Dict
  6247  }
  6248  
  6249  type Tcl_QueuePosition = uint32
  6250  
  6251  type Tcl_Time1 = struct {
  6252  	Fsec  int64
  6253  	Fusec int64
  6254  }
  6255  
  6256  type Tcl_Time = Tcl_Time1
  6257  
  6258  type Tcl_ChannelType1 = struct {
  6259  	FtypeName         uintptr
  6260  	Fversion          Tcl_ChannelTypeVersion
  6261  	FcloseProc        uintptr
  6262  	FinputProc        uintptr
  6263  	FoutputProc       uintptr
  6264  	FseekProc         uintptr
  6265  	FsetOptionProc    uintptr
  6266  	FgetOptionProc    uintptr
  6267  	FwatchProc        uintptr
  6268  	FgetHandleProc    uintptr
  6269  	Fclose2Proc       uintptr
  6270  	FblockModeProc    uintptr
  6271  	FflushProc        uintptr
  6272  	FhandlerProc      uintptr
  6273  	FwideSeekProc     uintptr
  6274  	FthreadActionProc uintptr
  6275  	FtruncateProc     uintptr
  6276  }
  6277  
  6278  type Tcl_ChannelType = Tcl_ChannelType1
  6279  
  6280  type Tcl_PathType = uint32
  6281  
  6282  type Tcl_GlobTypeData1 = struct {
  6283  	Ftype       int32
  6284  	Fperm       int32
  6285  	FmacType    uintptr
  6286  	FmacCreator uintptr
  6287  }
  6288  
  6289  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  6290  
  6291  type utimbuf = struct {
  6292  	Factime  time_t
  6293  	Fmodtime time_t
  6294  }
  6295  
  6296  type Tcl_FSVersion = uintptr
  6297  
  6298  type Tcl_Filesystem1 = struct {
  6299  	FtypeName                 uintptr
  6300  	FstructureLength          int32
  6301  	F__ccgo_pad1              [4]byte
  6302  	Fversion                  Tcl_FSVersion
  6303  	FpathInFilesystemProc     uintptr
  6304  	FdupInternalRepProc       uintptr
  6305  	FfreeInternalRepProc      uintptr
  6306  	FinternalToNormalizedProc uintptr
  6307  	FcreateInternalRepProc    uintptr
  6308  	FnormalizePathProc        uintptr
  6309  	FfilesystemPathTypeProc   uintptr
  6310  	FfilesystemSeparatorProc  uintptr
  6311  	FstatProc                 uintptr
  6312  	FaccessProc               uintptr
  6313  	FopenFileChannelProc      uintptr
  6314  	FmatchInDirectoryProc     uintptr
  6315  	FutimeProc                uintptr
  6316  	FlinkProc                 uintptr
  6317  	FlistVolumesProc          uintptr
  6318  	FfileAttrStringsProc      uintptr
  6319  	FfileAttrsGetProc         uintptr
  6320  	FfileAttrsSetProc         uintptr
  6321  	FcreateDirectoryProc      uintptr
  6322  	FremoveDirectoryProc      uintptr
  6323  	FdeleteFileProc           uintptr
  6324  	FcopyFileProc             uintptr
  6325  	FrenameFileProc           uintptr
  6326  	FcopyDirectoryProc        uintptr
  6327  	FlstatProc                uintptr
  6328  	FloadFileProc             uintptr
  6329  	FgetCwdProc               uintptr
  6330  	FchdirProc                uintptr
  6331  }
  6332  
  6333  type Tcl_Filesystem = Tcl_Filesystem1
  6334  
  6335  type Tcl_NotifierProcs1 = struct {
  6336  	FsetTimerProc          uintptr
  6337  	FwaitForEventProc      uintptr
  6338  	FcreateFileHandlerProc uintptr
  6339  	FdeleteFileHandlerProc uintptr
  6340  	FinitNotifierProc      uintptr
  6341  	FfinalizeNotifierProc  uintptr
  6342  	FalertNotifierProc     uintptr
  6343  	FserviceModeHookProc   uintptr
  6344  }
  6345  
  6346  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  6347  
  6348  type Tcl_Token1 = struct {
  6349  	Ftype          int32
  6350  	F__ccgo_pad1   [4]byte
  6351  	Fstart         uintptr
  6352  	Fsize          int32
  6353  	FnumComponents int32
  6354  }
  6355  
  6356  type Tcl_Token = Tcl_Token1
  6357  
  6358  type Tcl_Parse1 = struct {
  6359  	FcommentStart    uintptr
  6360  	FcommentSize     int32
  6361  	F__ccgo_pad1     [4]byte
  6362  	FcommandStart    uintptr
  6363  	FcommandSize     int32
  6364  	FnumWords        int32
  6365  	FtokenPtr        uintptr
  6366  	FnumTokens       int32
  6367  	FtokensAvailable int32
  6368  	FerrorType       int32
  6369  	F__ccgo_pad2     [4]byte
  6370  	Fstring          uintptr
  6371  	Fend             uintptr
  6372  	Finterp          uintptr
  6373  	Fterm            uintptr
  6374  	Fincomplete      int32
  6375  	F__ccgo_pad3     [4]byte
  6376  	FstaticTokens    [20]Tcl_Token
  6377  }
  6378  
  6379  type Tcl_Parse = Tcl_Parse1
  6380  
  6381  type Tcl_EncodingType1 = struct {
  6382  	FencodingName uintptr
  6383  	FtoUtfProc    uintptr
  6384  	FfromUtfProc  uintptr
  6385  	FfreeProc     uintptr
  6386  	FclientData   ClientData
  6387  	FnullSize     int32
  6388  	F__ccgo_pad1  [4]byte
  6389  }
  6390  
  6391  type Tcl_EncodingType = Tcl_EncodingType1
  6392  
  6393  type Tcl_UniChar = uint16
  6394  
  6395  type Tcl_Config1 = struct {
  6396  	Fkey   uintptr
  6397  	Fvalue uintptr
  6398  }
  6399  
  6400  type Tcl_Config = Tcl_Config1
  6401  type mp_digit = uint32
  6402  
  6403  type Tcl_ArgvInfo = struct {
  6404  	Ftype        int32
  6405  	F__ccgo_pad1 [4]byte
  6406  	FkeyStr      uintptr
  6407  	FsrcPtr      uintptr
  6408  	FdstPtr      uintptr
  6409  	FhelpStr     uintptr
  6410  	FclientData  ClientData
  6411  }
  6412  
  6413  type TclPlatStubs1 = struct {
  6414  	Fmagic       int32
  6415  	F__ccgo_pad1 [4]byte
  6416  	Fhooks       uintptr
  6417  }
  6418  
  6419  type TclStubHooks = struct {
  6420  	FtclPlatStubs    uintptr
  6421  	FtclIntStubs     uintptr
  6422  	FtclIntPlatStubs uintptr
  6423  }
  6424  
  6425  type TclStubs1 = struct {
  6426  	Fmagic                                  int32
  6427  	F__ccgo_pad1                            [4]byte
  6428  	Fhooks                                  uintptr
  6429  	Ftcl_PkgProvideEx                       uintptr
  6430  	Ftcl_PkgRequireEx                       uintptr
  6431  	Ftcl_Panic                              uintptr
  6432  	Ftcl_Alloc                              uintptr
  6433  	Ftcl_Free                               uintptr
  6434  	Ftcl_Realloc                            uintptr
  6435  	Ftcl_DbCkalloc                          uintptr
  6436  	Ftcl_DbCkfree                           uintptr
  6437  	Ftcl_DbCkrealloc                        uintptr
  6438  	Ftcl_CreateFileHandler                  uintptr
  6439  	Ftcl_DeleteFileHandler                  uintptr
  6440  	Ftcl_SetTimer                           uintptr
  6441  	Ftcl_Sleep                              uintptr
  6442  	Ftcl_WaitForEvent                       uintptr
  6443  	Ftcl_AppendAllObjTypes                  uintptr
  6444  	Ftcl_AppendStringsToObj                 uintptr
  6445  	Ftcl_AppendToObj                        uintptr
  6446  	Ftcl_ConcatObj                          uintptr
  6447  	Ftcl_ConvertToType                      uintptr
  6448  	Ftcl_DbDecrRefCount                     uintptr
  6449  	Ftcl_DbIncrRefCount                     uintptr
  6450  	Ftcl_DbIsShared                         uintptr
  6451  	Ftcl_DbNewBooleanObj                    uintptr
  6452  	Ftcl_DbNewByteArrayObj                  uintptr
  6453  	Ftcl_DbNewDoubleObj                     uintptr
  6454  	Ftcl_DbNewListObj                       uintptr
  6455  	Ftcl_DbNewLongObj                       uintptr
  6456  	Ftcl_DbNewObj                           uintptr
  6457  	Ftcl_DbNewStringObj                     uintptr
  6458  	Ftcl_DuplicateObj                       uintptr
  6459  	FtclFreeObj                             uintptr
  6460  	Ftcl_GetBoolean                         uintptr
  6461  	Ftcl_GetBooleanFromObj                  uintptr
  6462  	Ftcl_GetByteArrayFromObj                uintptr
  6463  	Ftcl_GetDouble                          uintptr
  6464  	Ftcl_GetDoubleFromObj                   uintptr
  6465  	Ftcl_GetIndexFromObj                    uintptr
  6466  	Ftcl_GetInt                             uintptr
  6467  	Ftcl_GetIntFromObj                      uintptr
  6468  	Ftcl_GetLongFromObj                     uintptr
  6469  	Ftcl_GetObjType                         uintptr
  6470  	Ftcl_GetStringFromObj                   uintptr
  6471  	Ftcl_InvalidateStringRep                uintptr
  6472  	Ftcl_ListObjAppendList                  uintptr
  6473  	Ftcl_ListObjAppendElement               uintptr
  6474  	Ftcl_ListObjGetElements                 uintptr
  6475  	Ftcl_ListObjIndex                       uintptr
  6476  	Ftcl_ListObjLength                      uintptr
  6477  	Ftcl_ListObjReplace                     uintptr
  6478  	Ftcl_NewBooleanObj                      uintptr
  6479  	Ftcl_NewByteArrayObj                    uintptr
  6480  	Ftcl_NewDoubleObj                       uintptr
  6481  	Ftcl_NewIntObj                          uintptr
  6482  	Ftcl_NewListObj                         uintptr
  6483  	Ftcl_NewLongObj                         uintptr
  6484  	Ftcl_NewObj                             uintptr
  6485  	Ftcl_NewStringObj                       uintptr
  6486  	Ftcl_SetBooleanObj                      uintptr
  6487  	Ftcl_SetByteArrayLength                 uintptr
  6488  	Ftcl_SetByteArrayObj                    uintptr
  6489  	Ftcl_SetDoubleObj                       uintptr
  6490  	Ftcl_SetIntObj                          uintptr
  6491  	Ftcl_SetListObj                         uintptr
  6492  	Ftcl_SetLongObj                         uintptr
  6493  	Ftcl_SetObjLength                       uintptr
  6494  	Ftcl_SetStringObj                       uintptr
  6495  	Ftcl_AddErrorInfo                       uintptr
  6496  	Ftcl_AddObjErrorInfo                    uintptr
  6497  	Ftcl_AllowExceptions                    uintptr
  6498  	Ftcl_AppendElement                      uintptr
  6499  	Ftcl_AppendResult                       uintptr
  6500  	Ftcl_AsyncCreate                        uintptr
  6501  	Ftcl_AsyncDelete                        uintptr
  6502  	Ftcl_AsyncInvoke                        uintptr
  6503  	Ftcl_AsyncMark                          uintptr
  6504  	Ftcl_AsyncReady                         uintptr
  6505  	Ftcl_BackgroundError                    uintptr
  6506  	Ftcl_Backslash                          uintptr
  6507  	Ftcl_BadChannelOption                   uintptr
  6508  	Ftcl_CallWhenDeleted                    uintptr
  6509  	Ftcl_CancelIdleCall                     uintptr
  6510  	Ftcl_Close                              uintptr
  6511  	Ftcl_CommandComplete                    uintptr
  6512  	Ftcl_Concat                             uintptr
  6513  	Ftcl_ConvertElement                     uintptr
  6514  	Ftcl_ConvertCountedElement              uintptr
  6515  	Ftcl_CreateAlias                        uintptr
  6516  	Ftcl_CreateAliasObj                     uintptr
  6517  	Ftcl_CreateChannel                      uintptr
  6518  	Ftcl_CreateChannelHandler               uintptr
  6519  	Ftcl_CreateCloseHandler                 uintptr
  6520  	Ftcl_CreateCommand                      uintptr
  6521  	Ftcl_CreateEventSource                  uintptr
  6522  	Ftcl_CreateExitHandler                  uintptr
  6523  	Ftcl_CreateInterp                       uintptr
  6524  	Ftcl_CreateMathFunc                     uintptr
  6525  	Ftcl_CreateObjCommand                   uintptr
  6526  	Ftcl_CreateSlave                        uintptr
  6527  	Ftcl_CreateTimerHandler                 uintptr
  6528  	Ftcl_CreateTrace                        uintptr
  6529  	Ftcl_DeleteAssocData                    uintptr
  6530  	Ftcl_DeleteChannelHandler               uintptr
  6531  	Ftcl_DeleteCloseHandler                 uintptr
  6532  	Ftcl_DeleteCommand                      uintptr
  6533  	Ftcl_DeleteCommandFromToken             uintptr
  6534  	Ftcl_DeleteEvents                       uintptr
  6535  	Ftcl_DeleteEventSource                  uintptr
  6536  	Ftcl_DeleteExitHandler                  uintptr
  6537  	Ftcl_DeleteHashEntry                    uintptr
  6538  	Ftcl_DeleteHashTable                    uintptr
  6539  	Ftcl_DeleteInterp                       uintptr
  6540  	Ftcl_DetachPids                         uintptr
  6541  	Ftcl_DeleteTimerHandler                 uintptr
  6542  	Ftcl_DeleteTrace                        uintptr
  6543  	Ftcl_DontCallWhenDeleted                uintptr
  6544  	Ftcl_DoOneEvent                         uintptr
  6545  	Ftcl_DoWhenIdle                         uintptr
  6546  	Ftcl_DStringAppend                      uintptr
  6547  	Ftcl_DStringAppendElement               uintptr
  6548  	Ftcl_DStringEndSublist                  uintptr
  6549  	Ftcl_DStringFree                        uintptr
  6550  	Ftcl_DStringGetResult                   uintptr
  6551  	Ftcl_DStringInit                        uintptr
  6552  	Ftcl_DStringResult                      uintptr
  6553  	Ftcl_DStringSetLength                   uintptr
  6554  	Ftcl_DStringStartSublist                uintptr
  6555  	Ftcl_Eof                                uintptr
  6556  	Ftcl_ErrnoId                            uintptr
  6557  	Ftcl_ErrnoMsg                           uintptr
  6558  	Ftcl_Eval                               uintptr
  6559  	Ftcl_EvalFile                           uintptr
  6560  	Ftcl_EvalObj                            uintptr
  6561  	Ftcl_EventuallyFree                     uintptr
  6562  	Ftcl_Exit                               uintptr
  6563  	Ftcl_ExposeCommand                      uintptr
  6564  	Ftcl_ExprBoolean                        uintptr
  6565  	Ftcl_ExprBooleanObj                     uintptr
  6566  	Ftcl_ExprDouble                         uintptr
  6567  	Ftcl_ExprDoubleObj                      uintptr
  6568  	Ftcl_ExprLong                           uintptr
  6569  	Ftcl_ExprLongObj                        uintptr
  6570  	Ftcl_ExprObj                            uintptr
  6571  	Ftcl_ExprString                         uintptr
  6572  	Ftcl_Finalize                           uintptr
  6573  	Ftcl_FindExecutable                     uintptr
  6574  	Ftcl_FirstHashEntry                     uintptr
  6575  	Ftcl_Flush                              uintptr
  6576  	Ftcl_FreeResult                         uintptr
  6577  	Ftcl_GetAlias                           uintptr
  6578  	Ftcl_GetAliasObj                        uintptr
  6579  	Ftcl_GetAssocData                       uintptr
  6580  	Ftcl_GetChannel                         uintptr
  6581  	Ftcl_GetChannelBufferSize               uintptr
  6582  	Ftcl_GetChannelHandle                   uintptr
  6583  	Ftcl_GetChannelInstanceData             uintptr
  6584  	Ftcl_GetChannelMode                     uintptr
  6585  	Ftcl_GetChannelName                     uintptr
  6586  	Ftcl_GetChannelOption                   uintptr
  6587  	Ftcl_GetChannelType                     uintptr
  6588  	Ftcl_GetCommandInfo                     uintptr
  6589  	Ftcl_GetCommandName                     uintptr
  6590  	Ftcl_GetErrno                           uintptr
  6591  	Ftcl_GetHostName                        uintptr
  6592  	Ftcl_GetInterpPath                      uintptr
  6593  	Ftcl_GetMaster                          uintptr
  6594  	Ftcl_GetNameOfExecutable                uintptr
  6595  	Ftcl_GetObjResult                       uintptr
  6596  	Ftcl_GetOpenFile                        uintptr
  6597  	Ftcl_GetPathType                        uintptr
  6598  	Ftcl_Gets                               uintptr
  6599  	Ftcl_GetsObj                            uintptr
  6600  	Ftcl_GetServiceMode                     uintptr
  6601  	Ftcl_GetSlave                           uintptr
  6602  	Ftcl_GetStdChannel                      uintptr
  6603  	Ftcl_GetStringResult                    uintptr
  6604  	Ftcl_GetVar                             uintptr
  6605  	Ftcl_GetVar2                            uintptr
  6606  	Ftcl_GlobalEval                         uintptr
  6607  	Ftcl_GlobalEvalObj                      uintptr
  6608  	Ftcl_HideCommand                        uintptr
  6609  	Ftcl_Init                               uintptr
  6610  	Ftcl_InitHashTable                      uintptr
  6611  	Ftcl_InputBlocked                       uintptr
  6612  	Ftcl_InputBuffered                      uintptr
  6613  	Ftcl_InterpDeleted                      uintptr
  6614  	Ftcl_IsSafe                             uintptr
  6615  	Ftcl_JoinPath                           uintptr
  6616  	Ftcl_LinkVar                            uintptr
  6617  	Freserved188                            uintptr
  6618  	Ftcl_MakeFileChannel                    uintptr
  6619  	Ftcl_MakeSafe                           uintptr
  6620  	Ftcl_MakeTcpClientChannel               uintptr
  6621  	Ftcl_Merge                              uintptr
  6622  	Ftcl_NextHashEntry                      uintptr
  6623  	Ftcl_NotifyChannel                      uintptr
  6624  	Ftcl_ObjGetVar2                         uintptr
  6625  	Ftcl_ObjSetVar2                         uintptr
  6626  	Ftcl_OpenCommandChannel                 uintptr
  6627  	Ftcl_OpenFileChannel                    uintptr
  6628  	Ftcl_OpenTcpClient                      uintptr
  6629  	Ftcl_OpenTcpServer                      uintptr
  6630  	Ftcl_Preserve                           uintptr
  6631  	Ftcl_PrintDouble                        uintptr
  6632  	Ftcl_PutEnv                             uintptr
  6633  	Ftcl_PosixError                         uintptr
  6634  	Ftcl_QueueEvent                         uintptr
  6635  	Ftcl_Read                               uintptr
  6636  	Ftcl_ReapDetachedProcs                  uintptr
  6637  	Ftcl_RecordAndEval                      uintptr
  6638  	Ftcl_RecordAndEvalObj                   uintptr
  6639  	Ftcl_RegisterChannel                    uintptr
  6640  	Ftcl_RegisterObjType                    uintptr
  6641  	Ftcl_RegExpCompile                      uintptr
  6642  	Ftcl_RegExpExec                         uintptr
  6643  	Ftcl_RegExpMatch                        uintptr
  6644  	Ftcl_RegExpRange                        uintptr
  6645  	Ftcl_Release                            uintptr
  6646  	Ftcl_ResetResult                        uintptr
  6647  	Ftcl_ScanElement                        uintptr
  6648  	Ftcl_ScanCountedElement                 uintptr
  6649  	Ftcl_SeekOld                            uintptr
  6650  	Ftcl_ServiceAll                         uintptr
  6651  	Ftcl_ServiceEvent                       uintptr
  6652  	Ftcl_SetAssocData                       uintptr
  6653  	Ftcl_SetChannelBufferSize               uintptr
  6654  	Ftcl_SetChannelOption                   uintptr
  6655  	Ftcl_SetCommandInfo                     uintptr
  6656  	Ftcl_SetErrno                           uintptr
  6657  	Ftcl_SetErrorCode                       uintptr
  6658  	Ftcl_SetMaxBlockTime                    uintptr
  6659  	Ftcl_SetPanicProc                       uintptr
  6660  	Ftcl_SetRecursionLimit                  uintptr
  6661  	Ftcl_SetResult                          uintptr
  6662  	Ftcl_SetServiceMode                     uintptr
  6663  	Ftcl_SetObjErrorCode                    uintptr
  6664  	Ftcl_SetObjResult                       uintptr
  6665  	Ftcl_SetStdChannel                      uintptr
  6666  	Ftcl_SetVar                             uintptr
  6667  	Ftcl_SetVar2                            uintptr
  6668  	Ftcl_SignalId                           uintptr
  6669  	Ftcl_SignalMsg                          uintptr
  6670  	Ftcl_SourceRCFile                       uintptr
  6671  	Ftcl_SplitList                          uintptr
  6672  	Ftcl_SplitPath                          uintptr
  6673  	Ftcl_StaticPackage                      uintptr
  6674  	Ftcl_StringMatch                        uintptr
  6675  	Ftcl_TellOld                            uintptr
  6676  	Ftcl_TraceVar                           uintptr
  6677  	Ftcl_TraceVar2                          uintptr
  6678  	Ftcl_TranslateFileName                  uintptr
  6679  	Ftcl_Ungets                             uintptr
  6680  	Ftcl_UnlinkVar                          uintptr
  6681  	Ftcl_UnregisterChannel                  uintptr
  6682  	Ftcl_UnsetVar                           uintptr
  6683  	Ftcl_UnsetVar2                          uintptr
  6684  	Ftcl_UntraceVar                         uintptr
  6685  	Ftcl_UntraceVar2                        uintptr
  6686  	Ftcl_UpdateLinkedVar                    uintptr
  6687  	Ftcl_UpVar                              uintptr
  6688  	Ftcl_UpVar2                             uintptr
  6689  	Ftcl_VarEval                            uintptr
  6690  	Ftcl_VarTraceInfo                       uintptr
  6691  	Ftcl_VarTraceInfo2                      uintptr
  6692  	Ftcl_Write                              uintptr
  6693  	Ftcl_WrongNumArgs                       uintptr
  6694  	Ftcl_DumpActiveMemory                   uintptr
  6695  	Ftcl_ValidateAllMemory                  uintptr
  6696  	Ftcl_AppendResultVA                     uintptr
  6697  	Ftcl_AppendStringsToObjVA               uintptr
  6698  	Ftcl_HashStats                          uintptr
  6699  	Ftcl_ParseVar                           uintptr
  6700  	Ftcl_PkgPresent                         uintptr
  6701  	Ftcl_PkgPresentEx                       uintptr
  6702  	Ftcl_PkgProvide                         uintptr
  6703  	Ftcl_PkgRequire                         uintptr
  6704  	Ftcl_SetErrorCodeVA                     uintptr
  6705  	Ftcl_VarEvalVA                          uintptr
  6706  	Ftcl_WaitPid                            uintptr
  6707  	Ftcl_PanicVA                            uintptr
  6708  	Ftcl_GetVersion                         uintptr
  6709  	Ftcl_InitMemory                         uintptr
  6710  	Ftcl_StackChannel                       uintptr
  6711  	Ftcl_UnstackChannel                     uintptr
  6712  	Ftcl_GetStackedChannel                  uintptr
  6713  	Ftcl_SetMainLoop                        uintptr
  6714  	Freserved285                            uintptr
  6715  	Ftcl_AppendObjToObj                     uintptr
  6716  	Ftcl_CreateEncoding                     uintptr
  6717  	Ftcl_CreateThreadExitHandler            uintptr
  6718  	Ftcl_DeleteThreadExitHandler            uintptr
  6719  	Ftcl_DiscardResult                      uintptr
  6720  	Ftcl_EvalEx                             uintptr
  6721  	Ftcl_EvalObjv                           uintptr
  6722  	Ftcl_EvalObjEx                          uintptr
  6723  	Ftcl_ExitThread                         uintptr
  6724  	Ftcl_ExternalToUtf                      uintptr
  6725  	Ftcl_ExternalToUtfDString               uintptr
  6726  	Ftcl_FinalizeThread                     uintptr
  6727  	Ftcl_FinalizeNotifier                   uintptr
  6728  	Ftcl_FreeEncoding                       uintptr
  6729  	Ftcl_GetCurrentThread                   uintptr
  6730  	Ftcl_GetEncoding                        uintptr
  6731  	Ftcl_GetEncodingName                    uintptr
  6732  	Ftcl_GetEncodingNames                   uintptr
  6733  	Ftcl_GetIndexFromObjStruct              uintptr
  6734  	Ftcl_GetThreadData                      uintptr
  6735  	Ftcl_GetVar2Ex                          uintptr
  6736  	Ftcl_InitNotifier                       uintptr
  6737  	Ftcl_MutexLock                          uintptr
  6738  	Ftcl_MutexUnlock                        uintptr
  6739  	Ftcl_ConditionNotify                    uintptr
  6740  	Ftcl_ConditionWait                      uintptr
  6741  	Ftcl_NumUtfChars                        uintptr
  6742  	Ftcl_ReadChars                          uintptr
  6743  	Ftcl_RestoreResult                      uintptr
  6744  	Ftcl_SaveResult                         uintptr
  6745  	Ftcl_SetSystemEncoding                  uintptr
  6746  	Ftcl_SetVar2Ex                          uintptr
  6747  	Ftcl_ThreadAlert                        uintptr
  6748  	Ftcl_ThreadQueueEvent                   uintptr
  6749  	Ftcl_UniCharAtIndex                     uintptr
  6750  	Ftcl_UniCharToLower                     uintptr
  6751  	Ftcl_UniCharToTitle                     uintptr
  6752  	Ftcl_UniCharToUpper                     uintptr
  6753  	Ftcl_UniCharToUtf                       uintptr
  6754  	Ftcl_UtfAtIndex                         uintptr
  6755  	Ftcl_UtfCharComplete                    uintptr
  6756  	Ftcl_UtfBackslash                       uintptr
  6757  	Ftcl_UtfFindFirst                       uintptr
  6758  	Ftcl_UtfFindLast                        uintptr
  6759  	Ftcl_UtfNext                            uintptr
  6760  	Ftcl_UtfPrev                            uintptr
  6761  	Ftcl_UtfToExternal                      uintptr
  6762  	Ftcl_UtfToExternalDString               uintptr
  6763  	Ftcl_UtfToLower                         uintptr
  6764  	Ftcl_UtfToTitle                         uintptr
  6765  	Ftcl_UtfToUniChar                       uintptr
  6766  	Ftcl_UtfToUpper                         uintptr
  6767  	Ftcl_WriteChars                         uintptr
  6768  	Ftcl_WriteObj                           uintptr
  6769  	Ftcl_GetString                          uintptr
  6770  	Ftcl_GetDefaultEncodingDir              uintptr
  6771  	Ftcl_SetDefaultEncodingDir              uintptr
  6772  	Ftcl_AlertNotifier                      uintptr
  6773  	Ftcl_ServiceModeHook                    uintptr
  6774  	Ftcl_UniCharIsAlnum                     uintptr
  6775  	Ftcl_UniCharIsAlpha                     uintptr
  6776  	Ftcl_UniCharIsDigit                     uintptr
  6777  	Ftcl_UniCharIsLower                     uintptr
  6778  	Ftcl_UniCharIsSpace                     uintptr
  6779  	Ftcl_UniCharIsUpper                     uintptr
  6780  	Ftcl_UniCharIsWordChar                  uintptr
  6781  	Ftcl_UniCharLen                         uintptr
  6782  	Ftcl_UniCharNcmp                        uintptr
  6783  	Ftcl_UniCharToUtfDString                uintptr
  6784  	Ftcl_UtfToUniCharDString                uintptr
  6785  	Ftcl_GetRegExpFromObj                   uintptr
  6786  	Ftcl_EvalTokens                         uintptr
  6787  	Ftcl_FreeParse                          uintptr
  6788  	Ftcl_LogCommandInfo                     uintptr
  6789  	Ftcl_ParseBraces                        uintptr
  6790  	Ftcl_ParseCommand                       uintptr
  6791  	Ftcl_ParseExpr                          uintptr
  6792  	Ftcl_ParseQuotedString                  uintptr
  6793  	Ftcl_ParseVarName                       uintptr
  6794  	Ftcl_GetCwd                             uintptr
  6795  	Ftcl_Chdir                              uintptr
  6796  	Ftcl_Access                             uintptr
  6797  	Ftcl_Stat                               uintptr
  6798  	Ftcl_UtfNcmp                            uintptr
  6799  	Ftcl_UtfNcasecmp                        uintptr
  6800  	Ftcl_StringCaseMatch                    uintptr
  6801  	Ftcl_UniCharIsControl                   uintptr
  6802  	Ftcl_UniCharIsGraph                     uintptr
  6803  	Ftcl_UniCharIsPrint                     uintptr
  6804  	Ftcl_UniCharIsPunct                     uintptr
  6805  	Ftcl_RegExpExecObj                      uintptr
  6806  	Ftcl_RegExpGetInfo                      uintptr
  6807  	Ftcl_NewUnicodeObj                      uintptr
  6808  	Ftcl_SetUnicodeObj                      uintptr
  6809  	Ftcl_GetCharLength                      uintptr
  6810  	Ftcl_GetUniChar                         uintptr
  6811  	Ftcl_GetUnicode                         uintptr
  6812  	Ftcl_GetRange                           uintptr
  6813  	Ftcl_AppendUnicodeToObj                 uintptr
  6814  	Ftcl_RegExpMatchObj                     uintptr
  6815  	Ftcl_SetNotifier                        uintptr
  6816  	Ftcl_GetAllocMutex                      uintptr
  6817  	Ftcl_GetChannelNames                    uintptr
  6818  	Ftcl_GetChannelNamesEx                  uintptr
  6819  	Ftcl_ProcObjCmd                         uintptr
  6820  	Ftcl_ConditionFinalize                  uintptr
  6821  	Ftcl_MutexFinalize                      uintptr
  6822  	Ftcl_CreateThread                       uintptr
  6823  	Ftcl_ReadRaw                            uintptr
  6824  	Ftcl_WriteRaw                           uintptr
  6825  	Ftcl_GetTopChannel                      uintptr
  6826  	Ftcl_ChannelBuffered                    uintptr
  6827  	Ftcl_ChannelName                        uintptr
  6828  	Ftcl_ChannelVersion                     uintptr
  6829  	Ftcl_ChannelBlockModeProc               uintptr
  6830  	Ftcl_ChannelCloseProc                   uintptr
  6831  	Ftcl_ChannelClose2Proc                  uintptr
  6832  	Ftcl_ChannelInputProc                   uintptr
  6833  	Ftcl_ChannelOutputProc                  uintptr
  6834  	Ftcl_ChannelSeekProc                    uintptr
  6835  	Ftcl_ChannelSetOptionProc               uintptr
  6836  	Ftcl_ChannelGetOptionProc               uintptr
  6837  	Ftcl_ChannelWatchProc                   uintptr
  6838  	Ftcl_ChannelGetHandleProc               uintptr
  6839  	Ftcl_ChannelFlushProc                   uintptr
  6840  	Ftcl_ChannelHandlerProc                 uintptr
  6841  	Ftcl_JoinThread                         uintptr
  6842  	Ftcl_IsChannelShared                    uintptr
  6843  	Ftcl_IsChannelRegistered                uintptr
  6844  	Ftcl_CutChannel                         uintptr
  6845  	Ftcl_SpliceChannel                      uintptr
  6846  	Ftcl_ClearChannelHandlers               uintptr
  6847  	Ftcl_IsChannelExisting                  uintptr
  6848  	Ftcl_UniCharNcasecmp                    uintptr
  6849  	Ftcl_UniCharCaseMatch                   uintptr
  6850  	Ftcl_FindHashEntry                      uintptr
  6851  	Ftcl_CreateHashEntry                    uintptr
  6852  	Ftcl_InitCustomHashTable                uintptr
  6853  	Ftcl_InitObjHashTable                   uintptr
  6854  	Ftcl_CommandTraceInfo                   uintptr
  6855  	Ftcl_TraceCommand                       uintptr
  6856  	Ftcl_UntraceCommand                     uintptr
  6857  	Ftcl_AttemptAlloc                       uintptr
  6858  	Ftcl_AttemptDbCkalloc                   uintptr
  6859  	Ftcl_AttemptRealloc                     uintptr
  6860  	Ftcl_AttemptDbCkrealloc                 uintptr
  6861  	Ftcl_AttemptSetObjLength                uintptr
  6862  	Ftcl_GetChannelThread                   uintptr
  6863  	Ftcl_GetUnicodeFromObj                  uintptr
  6864  	Ftcl_GetMathFuncInfo                    uintptr
  6865  	Ftcl_ListMathFuncs                      uintptr
  6866  	Ftcl_SubstObj                           uintptr
  6867  	Ftcl_DetachChannel                      uintptr
  6868  	Ftcl_IsStandardChannel                  uintptr
  6869  	Ftcl_FSCopyFile                         uintptr
  6870  	Ftcl_FSCopyDirectory                    uintptr
  6871  	Ftcl_FSCreateDirectory                  uintptr
  6872  	Ftcl_FSDeleteFile                       uintptr
  6873  	Ftcl_FSLoadFile                         uintptr
  6874  	Ftcl_FSMatchInDirectory                 uintptr
  6875  	Ftcl_FSLink                             uintptr
  6876  	Ftcl_FSRemoveDirectory                  uintptr
  6877  	Ftcl_FSRenameFile                       uintptr
  6878  	Ftcl_FSLstat                            uintptr
  6879  	Ftcl_FSUtime                            uintptr
  6880  	Ftcl_FSFileAttrsGet                     uintptr
  6881  	Ftcl_FSFileAttrsSet                     uintptr
  6882  	Ftcl_FSFileAttrStrings                  uintptr
  6883  	Ftcl_FSStat                             uintptr
  6884  	Ftcl_FSAccess                           uintptr
  6885  	Ftcl_FSOpenFileChannel                  uintptr
  6886  	Ftcl_FSGetCwd                           uintptr
  6887  	Ftcl_FSChdir                            uintptr
  6888  	Ftcl_FSConvertToPathType                uintptr
  6889  	Ftcl_FSJoinPath                         uintptr
  6890  	Ftcl_FSSplitPath                        uintptr
  6891  	Ftcl_FSEqualPaths                       uintptr
  6892  	Ftcl_FSGetNormalizedPath                uintptr
  6893  	Ftcl_FSJoinToPath                       uintptr
  6894  	Ftcl_FSGetInternalRep                   uintptr
  6895  	Ftcl_FSGetTranslatedPath                uintptr
  6896  	Ftcl_FSEvalFile                         uintptr
  6897  	Ftcl_FSNewNativePath                    uintptr
  6898  	Ftcl_FSGetNativePath                    uintptr
  6899  	Ftcl_FSFileSystemInfo                   uintptr
  6900  	Ftcl_FSPathSeparator                    uintptr
  6901  	Ftcl_FSListVolumes                      uintptr
  6902  	Ftcl_FSRegister                         uintptr
  6903  	Ftcl_FSUnregister                       uintptr
  6904  	Ftcl_FSData                             uintptr
  6905  	Ftcl_FSGetTranslatedStringPath          uintptr
  6906  	Ftcl_FSGetFileSystemForPath             uintptr
  6907  	Ftcl_FSGetPathType                      uintptr
  6908  	Ftcl_OutputBuffered                     uintptr
  6909  	Ftcl_FSMountsChanged                    uintptr
  6910  	Ftcl_EvalTokensStandard                 uintptr
  6911  	Ftcl_GetTime                            uintptr
  6912  	Ftcl_CreateObjTrace                     uintptr
  6913  	Ftcl_GetCommandInfoFromToken            uintptr
  6914  	Ftcl_SetCommandInfoFromToken            uintptr
  6915  	Ftcl_DbNewWideIntObj                    uintptr
  6916  	Ftcl_GetWideIntFromObj                  uintptr
  6917  	Ftcl_NewWideIntObj                      uintptr
  6918  	Ftcl_SetWideIntObj                      uintptr
  6919  	Ftcl_AllocStatBuf                       uintptr
  6920  	Ftcl_Seek                               uintptr
  6921  	Ftcl_Tell                               uintptr
  6922  	Ftcl_ChannelWideSeekProc                uintptr
  6923  	Ftcl_DictObjPut                         uintptr
  6924  	Ftcl_DictObjGet                         uintptr
  6925  	Ftcl_DictObjRemove                      uintptr
  6926  	Ftcl_DictObjSize                        uintptr
  6927  	Ftcl_DictObjFirst                       uintptr
  6928  	Ftcl_DictObjNext                        uintptr
  6929  	Ftcl_DictObjDone                        uintptr
  6930  	Ftcl_DictObjPutKeyList                  uintptr
  6931  	Ftcl_DictObjRemoveKeyList               uintptr
  6932  	Ftcl_NewDictObj                         uintptr
  6933  	Ftcl_DbNewDictObj                       uintptr
  6934  	Ftcl_RegisterConfig                     uintptr
  6935  	Ftcl_CreateNamespace                    uintptr
  6936  	Ftcl_DeleteNamespace                    uintptr
  6937  	Ftcl_AppendExportList                   uintptr
  6938  	Ftcl_Export                             uintptr
  6939  	Ftcl_Import                             uintptr
  6940  	Ftcl_ForgetImport                       uintptr
  6941  	Ftcl_GetCurrentNamespace                uintptr
  6942  	Ftcl_GetGlobalNamespace                 uintptr
  6943  	Ftcl_FindNamespace                      uintptr
  6944  	Ftcl_FindCommand                        uintptr
  6945  	Ftcl_GetCommandFromObj                  uintptr
  6946  	Ftcl_GetCommandFullName                 uintptr
  6947  	Ftcl_FSEvalFileEx                       uintptr
  6948  	Ftcl_SetExitProc                        uintptr
  6949  	Ftcl_LimitAddHandler                    uintptr
  6950  	Ftcl_LimitRemoveHandler                 uintptr
  6951  	Ftcl_LimitReady                         uintptr
  6952  	Ftcl_LimitCheck                         uintptr
  6953  	Ftcl_LimitExceeded                      uintptr
  6954  	Ftcl_LimitSetCommands                   uintptr
  6955  	Ftcl_LimitSetTime                       uintptr
  6956  	Ftcl_LimitSetGranularity                uintptr
  6957  	Ftcl_LimitTypeEnabled                   uintptr
  6958  	Ftcl_LimitTypeExceeded                  uintptr
  6959  	Ftcl_LimitTypeSet                       uintptr
  6960  	Ftcl_LimitTypeReset                     uintptr
  6961  	Ftcl_LimitGetCommands                   uintptr
  6962  	Ftcl_LimitGetTime                       uintptr
  6963  	Ftcl_LimitGetGranularity                uintptr
  6964  	Ftcl_SaveInterpState                    uintptr
  6965  	Ftcl_RestoreInterpState                 uintptr
  6966  	Ftcl_DiscardInterpState                 uintptr
  6967  	Ftcl_SetReturnOptions                   uintptr
  6968  	Ftcl_GetReturnOptions                   uintptr
  6969  	Ftcl_IsEnsemble                         uintptr
  6970  	Ftcl_CreateEnsemble                     uintptr
  6971  	Ftcl_FindEnsemble                       uintptr
  6972  	Ftcl_SetEnsembleSubcommandList          uintptr
  6973  	Ftcl_SetEnsembleMappingDict             uintptr
  6974  	Ftcl_SetEnsembleUnknownHandler          uintptr
  6975  	Ftcl_SetEnsembleFlags                   uintptr
  6976  	Ftcl_GetEnsembleSubcommandList          uintptr
  6977  	Ftcl_GetEnsembleMappingDict             uintptr
  6978  	Ftcl_GetEnsembleUnknownHandler          uintptr
  6979  	Ftcl_GetEnsembleFlags                   uintptr
  6980  	Ftcl_GetEnsembleNamespace               uintptr
  6981  	Ftcl_SetTimeProc                        uintptr
  6982  	Ftcl_QueryTimeProc                      uintptr
  6983  	Ftcl_ChannelThreadActionProc            uintptr
  6984  	Ftcl_NewBignumObj                       uintptr
  6985  	Ftcl_DbNewBignumObj                     uintptr
  6986  	Ftcl_SetBignumObj                       uintptr
  6987  	Ftcl_GetBignumFromObj                   uintptr
  6988  	Ftcl_TakeBignumFromObj                  uintptr
  6989  	Ftcl_TruncateChannel                    uintptr
  6990  	Ftcl_ChannelTruncateProc                uintptr
  6991  	Ftcl_SetChannelErrorInterp              uintptr
  6992  	Ftcl_GetChannelErrorInterp              uintptr
  6993  	Ftcl_SetChannelError                    uintptr
  6994  	Ftcl_GetChannelError                    uintptr
  6995  	Ftcl_InitBignumFromDouble               uintptr
  6996  	Ftcl_GetNamespaceUnknownHandler         uintptr
  6997  	Ftcl_SetNamespaceUnknownHandler         uintptr
  6998  	Ftcl_GetEncodingFromObj                 uintptr
  6999  	Ftcl_GetEncodingSearchPath              uintptr
  7000  	Ftcl_SetEncodingSearchPath              uintptr
  7001  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  7002  	Ftcl_PkgRequireProc                     uintptr
  7003  	Ftcl_AppendObjToErrorInfo               uintptr
  7004  	Ftcl_AppendLimitedToObj                 uintptr
  7005  	Ftcl_Format                             uintptr
  7006  	Ftcl_AppendFormatToObj                  uintptr
  7007  	Ftcl_ObjPrintf                          uintptr
  7008  	Ftcl_AppendPrintfToObj                  uintptr
  7009  	Ftcl_CancelEval                         uintptr
  7010  	Ftcl_Canceled                           uintptr
  7011  	Ftcl_CreatePipe                         uintptr
  7012  	Ftcl_NRCreateCommand                    uintptr
  7013  	Ftcl_NREvalObj                          uintptr
  7014  	Ftcl_NREvalObjv                         uintptr
  7015  	Ftcl_NRCmdSwap                          uintptr
  7016  	Ftcl_NRAddCallback                      uintptr
  7017  	Ftcl_NRCallObjProc                      uintptr
  7018  	Ftcl_GetFSDeviceFromStat                uintptr
  7019  	Ftcl_GetFSInodeFromStat                 uintptr
  7020  	Ftcl_GetModeFromStat                    uintptr
  7021  	Ftcl_GetLinkCountFromStat               uintptr
  7022  	Ftcl_GetUserIdFromStat                  uintptr
  7023  	Ftcl_GetGroupIdFromStat                 uintptr
  7024  	Ftcl_GetDeviceTypeFromStat              uintptr
  7025  	Ftcl_GetAccessTimeFromStat              uintptr
  7026  	Ftcl_GetModificationTimeFromStat        uintptr
  7027  	Ftcl_GetChangeTimeFromStat              uintptr
  7028  	Ftcl_GetSizeFromStat                    uintptr
  7029  	Ftcl_GetBlocksFromStat                  uintptr
  7030  	Ftcl_GetBlockSizeFromStat               uintptr
  7031  	Ftcl_SetEnsembleParameterList           uintptr
  7032  	Ftcl_GetEnsembleParameterList           uintptr
  7033  	Ftcl_ParseArgsObjv                      uintptr
  7034  	Ftcl_GetErrorLine                       uintptr
  7035  	Ftcl_SetErrorLine                       uintptr
  7036  	Ftcl_TransferResult                     uintptr
  7037  	Ftcl_InterpActive                       uintptr
  7038  	Ftcl_BackgroundException                uintptr
  7039  	Ftcl_ZlibDeflate                        uintptr
  7040  	Ftcl_ZlibInflate                        uintptr
  7041  	Ftcl_ZlibCRC32                          uintptr
  7042  	Ftcl_ZlibAdler32                        uintptr
  7043  	Ftcl_ZlibStreamInit                     uintptr
  7044  	Ftcl_ZlibStreamGetCommandName           uintptr
  7045  	Ftcl_ZlibStreamEof                      uintptr
  7046  	Ftcl_ZlibStreamChecksum                 uintptr
  7047  	Ftcl_ZlibStreamPut                      uintptr
  7048  	Ftcl_ZlibStreamGet                      uintptr
  7049  	Ftcl_ZlibStreamClose                    uintptr
  7050  	Ftcl_ZlibStreamReset                    uintptr
  7051  	Ftcl_SetStartupScript                   uintptr
  7052  	Ftcl_GetStartupScript                   uintptr
  7053  	Ftcl_CloseEx                            uintptr
  7054  	Ftcl_NRExprObj                          uintptr
  7055  	Ftcl_NRSubstObj                         uintptr
  7056  	Ftcl_LoadFile                           uintptr
  7057  	Ftcl_FindSymbol                         uintptr
  7058  	Ftcl_FSUnloadFile                       uintptr
  7059  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7060  	Freserved631                            uintptr
  7061  	Freserved632                            uintptr
  7062  	Freserved633                            uintptr
  7063  	Freserved634                            uintptr
  7064  	Freserved635                            uintptr
  7065  	Freserved636                            uintptr
  7066  	Freserved637                            uintptr
  7067  	Freserved638                            uintptr
  7068  	Freserved639                            uintptr
  7069  	Freserved640                            uintptr
  7070  	Freserved641                            uintptr
  7071  	Freserved642                            uintptr
  7072  	Freserved643                            uintptr
  7073  	Freserved644                            uintptr
  7074  	Freserved645                            uintptr
  7075  	Freserved646                            uintptr
  7076  	Freserved647                            uintptr
  7077  	Freserved648                            uintptr
  7078  	Freserved649                            uintptr
  7079  	Freserved650                            uintptr
  7080  	Freserved651                            uintptr
  7081  	Freserved652                            uintptr
  7082  	Freserved653                            uintptr
  7083  	Freserved654                            uintptr
  7084  	Freserved655                            uintptr
  7085  	Freserved656                            uintptr
  7086  	Freserved657                            uintptr
  7087  	Freserved658                            uintptr
  7088  	Freserved659                            uintptr
  7089  	FtclUnusedStubEntry                     uintptr
  7090  }
  7091  
  7092  type TclStubs = TclStubs1
  7093  
  7094  type TclPlatStubs = TclPlatStubs1
  7095  
  7096  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7097  	bp := tls.Alloc(88)
  7098  	defer tls.Free(88)
  7099  
  7100  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7101  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7102  		return TCL_ERROR
  7103  	}
  7104  
  7105  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7106  	return TCL_OK
  7107  }
  7108  
  7109  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7110  	bp := tls.Alloc(212)
  7111  	defer tls.Free(212)
  7112  
  7113  	var pExpert uintptr = clientData
  7114  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7115  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7116  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7117  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7118  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7119  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7120  		{},
  7121  	}
  7122  
  7123  	var rc int32 = TCL_OK
  7124  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7125  
  7126  	if objc < 2 {
  7127  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7128  		return TCL_ERROR
  7129  	}
  7130  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7131  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7132  	if rc != TCL_OK {
  7133  		return rc
  7134  	}
  7135  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7136  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7137  		return TCL_ERROR
  7138  	}
  7139  
  7140  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7141  	case 0:
  7142  		{
  7143  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7144  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7145  			break
  7146  
  7147  		}
  7148  
  7149  	case 1:
  7150  		{
  7151  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7152  			break
  7153  
  7154  		}
  7155  
  7156  	case 2:
  7157  		{
  7158  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7159  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7160  			break
  7161  
  7162  		}
  7163  
  7164  	case 3:
  7165  		{
  7166  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7167  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7168  			}
  7169  
  7170  			var zReport uintptr
  7171  
  7172  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7173  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+208) != 0 {
  7174  				return TCL_ERROR
  7175  			}
  7176  
  7177  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7178  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7179  			break
  7180  
  7181  		}
  7182  
  7183  	default:
  7184  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7185  		break
  7186  	}
  7187  
  7188  	if rc != TCL_OK {
  7189  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7190  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7191  		} else {
  7192  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7193  		}
  7194  	}
  7195  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7196  	return rc
  7197  }
  7198  
  7199  type Subcmd = struct {
  7200  	FzSub        uintptr
  7201  	FnArg        int32
  7202  	F__ccgo_pad1 [4]byte
  7203  	FzMsg        uintptr
  7204  }
  7205  
  7206  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7207  	var pExpert uintptr = clientData
  7208  	sqlite3_expert_destroy(tls, pExpert)
  7209  }
  7210  
  7211  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7212  	bp := tls.Alloc(56)
  7213  	defer tls.Free(56)
  7214  
  7215  	var zCmd uintptr = uintptr(0)
  7216  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7217  	var pExpert uintptr
  7218  	var rc int32 = TCL_OK
  7219  
  7220  	if objc != 2 {
  7221  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7222  		return TCL_ERROR
  7223  	}
  7224  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7225  		return TCL_ERROR
  7226  	}
  7227  
  7228  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7229  	if zCmd == uintptr(0) {
  7230  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7231  		return TCL_ERROR
  7232  	}
  7233  
  7234  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7235  	if pExpert == uintptr(0) {
  7236  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7237  		rc = TCL_ERROR
  7238  	} else {
  7239  		var p uintptr = pExpert
  7240  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7241  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7242  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7243  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7244  	}
  7245  
  7246  	sqlite3.Xsqlite3_free(tls, zCmd)
  7247  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  7248  	return rc
  7249  }
  7250  
  7251  var iCmd int32 = 0
  7252  
  7253  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7254  	bp := tls.Alloc(16)
  7255  	defer tls.Free(16)
  7256  
  7257  	*(*[1]struct {
  7258  		FzCmd  uintptr
  7259  		FxProc uintptr
  7260  	})(unsafe.Pointer(bp)) = [1]struct {
  7261  		FzCmd  uintptr
  7262  		FxProc uintptr
  7263  	}{
  7264  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7265  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7266  		}{test_sqlite3_expert_new}))},
  7267  	}
  7268  	var i int32
  7269  
  7270  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  7271  		FzCmd  uintptr
  7272  		FxProc uintptr
  7273  	}{}))/uint64(unsafe.Sizeof(struct {
  7274  		FzCmd  uintptr
  7275  		FxProc uintptr
  7276  	}{})); i++ {
  7277  		var p uintptr = bp + uintptr(i)*16
  7278  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7279  			FzCmd  uintptr
  7280  			FxProc uintptr
  7281  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7282  			FzCmd  uintptr
  7283  			FxProc uintptr
  7284  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7285  	}
  7286  	return TCL_OK
  7287  }
  7288  
  7289  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7290  	bp := tls.Alloc(64)
  7291  	defer tls.Free(64)
  7292  
  7293  	var p uintptr
  7294  
  7295  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7296  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7297  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7298  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7299  		return TCL_OK
  7300  	}
  7301  	return TCL_ERROR
  7302  }
  7303  
  7304  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7305  	bp := tls.Alloc(64)
  7306  	defer tls.Free(64)
  7307  
  7308  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7309  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7310  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7311  		{FzError: ts + 2127},
  7312  		{FzError: ts + 584},
  7313  	}
  7314  	var i int32
  7315  
  7316  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  7317  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  7318  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  7319  		}
  7320  	}
  7321  
  7322  	return SQLITE_ERROR
  7323  }
  7324  
  7325  type ErrorCode = struct {
  7326  	Frc          int32
  7327  	F__ccgo_pad1 [4]byte
  7328  	FzError      uintptr
  7329  }
  7330  
  7331  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7332  	bp := tls.Alloc(72)
  7333  	defer tls.Free(72)
  7334  
  7335  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7336  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7337  	if rc != TCL_OK {
  7338  		return TCL_ERROR
  7339  	} else {
  7340  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  7341  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  7342  
  7343  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  7344  		if rc != SQLITE_OK {
  7345  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7346  			return TCL_ERROR
  7347  		}
  7348  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  7349  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  7350  
  7351  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  7352  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7353  			return TCL_ERROR
  7354  		}
  7355  
  7356  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  7357  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  7358  	}
  7359  
  7360  	return TCL_OK
  7361  }
  7362  
  7363  type F5tFunction1 = struct {
  7364  	Finterp  uintptr
  7365  	FpScript uintptr
  7366  }
  7367  
  7368  type F5tFunction = F5tFunction1
  7369  
  7370  type F5tApi1 = struct {
  7371  	FpApi uintptr
  7372  	FpFts uintptr
  7373  }
  7374  
  7375  type F5tApi = F5tApi1
  7376  
  7377  type F5tAuxData1 = struct{ FpObj uintptr }
  7378  
  7379  type F5tAuxData = F5tAuxData1
  7380  
  7381  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7382  	var p uintptr = pCtx
  7383  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7384  	var rc int32
  7385  
  7386  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7387  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7388  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  7389  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  7390  
  7391  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7392  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7393  		var _objPtr uintptr = pEval
  7394  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7395  			tcl.XTclFreeObj(tls, _objPtr)
  7396  		}
  7397  	}
  7398  	if rc == TCL_OK {
  7399  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7400  	}
  7401  
  7402  	return rc
  7403  }
  7404  
  7405  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  7406  	bp := tls.Alloc(88)
  7407  	defer tls.Free(88)
  7408  
  7409  	var p uintptr = pCtx
  7410  	var pEval uintptr
  7411  	var rc int32
  7412  
  7413  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7414  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7415  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  7416  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7417  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7418  	}{xF5tApi})), bp+72, uintptr(0))
  7419  
  7420  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7421  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7422  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7423  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7424  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7425  		var _objPtr uintptr = pEval
  7426  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7427  			tcl.XTclFreeObj(tls, _objPtr)
  7428  		}
  7429  	}
  7430  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7431  
  7432  	if rc == TCL_OK {
  7433  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7434  	}
  7435  
  7436  	return rc
  7437  }
  7438  
  7439  var iCmd1 sqlite3_int64 = int64(0)
  7440  
  7441  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  7442  	var pData uintptr = p
  7443  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7444  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  7445  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7446  			tcl.XTclFreeObj(tls, _objPtr)
  7447  		}
  7448  	}
  7449  	sqlite3.Xsqlite3_free(tls, pData)
  7450  }
  7451  
  7452  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7453  	bp := tls.Alloc(684)
  7454  	defer tls.Free(684)
  7455  
  7456  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  7457  		{FzName: ts + 2185, FzMsg: ts + 584},
  7458  		{FzName: ts + 2198, FzMsg: ts + 584},
  7459  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  7460  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  7461  		{FzName: ts + 2251, FzMsg: ts + 584},
  7462  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  7463  		{FzName: ts + 2283, FzMsg: ts + 584},
  7464  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  7465  		{FzName: ts + 2304, FzMsg: ts + 584},
  7466  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  7467  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  7468  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  7469  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  7470  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  7471  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  7472  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  7473  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  7474  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  7475  		{},
  7476  	}
  7477  	var rc int32
  7478  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  7479  	var p uintptr = clientData
  7480  
  7481  	if objc < 2 {
  7482  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  7483  		return TCL_ERROR
  7484  	}
  7485  
  7486  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  7487  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  7488  	if rc != TCL_OK {
  7489  		return rc
  7490  	}
  7491  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  7492  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  7493  		return TCL_ERROR
  7494  	}
  7495  
  7496  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  7497  	case 0:
  7498  		{
  7499  			var nCol int32
  7500  			nCol = (*struct {
  7501  				f func(*libc.TLS, uintptr) int32
  7502  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7503  			if rc == SQLITE_OK {
  7504  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  7505  			}
  7506  			break
  7507  
  7508  		}
  7509  	case 1:
  7510  		{
  7511  			rc = (*struct {
  7512  				f func(*libc.TLS, uintptr, uintptr) int32
  7513  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  7514  			if rc == SQLITE_OK {
  7515  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  7516  			}
  7517  			break
  7518  
  7519  		}
  7520  	case 2:
  7521  		{
  7522  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  7523  				return TCL_ERROR
  7524  			}
  7525  			rc = (*struct {
  7526  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7527  			})(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)
  7528  			if rc == SQLITE_OK {
  7529  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  7530  			}
  7531  			break
  7532  
  7533  		}
  7534  	case 3:
  7535  		{
  7536  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  7537  
  7538  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  7539  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7540  			rc = (*struct {
  7541  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  7542  			})(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 {
  7543  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7544  			}{xTokenizeCb})))
  7545  			if rc == SQLITE_OK {
  7546  				tcl.XTcl_ResetResult(tls, interp)
  7547  			}
  7548  			return rc
  7549  
  7550  		}
  7551  	case 4:
  7552  		{
  7553  			var nPhrase int32
  7554  			nPhrase = (*struct {
  7555  				f func(*libc.TLS, uintptr) int32
  7556  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7557  			if rc == SQLITE_OK {
  7558  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  7559  			}
  7560  			break
  7561  
  7562  		}
  7563  	case 5:
  7564  		{
  7565  			var sz int32
  7566  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  7567  				return TCL_ERROR
  7568  			}
  7569  			sz = (*struct {
  7570  				f func(*libc.TLS, uintptr, int32) int32
  7571  			})(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)))
  7572  			if rc == SQLITE_OK {
  7573  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  7574  			}
  7575  			break
  7576  
  7577  		}
  7578  	case 6:
  7579  		{
  7580  			rc = (*struct {
  7581  				f func(*libc.TLS, uintptr, uintptr) int32
  7582  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  7583  			if rc == SQLITE_OK {
  7584  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  7585  			}
  7586  			break
  7587  
  7588  		}
  7589  	case 7:
  7590  		{
  7591  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  7592  				return TCL_ERROR
  7593  			}
  7594  			rc = (*struct {
  7595  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7596  			})(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)
  7597  			if rc == SQLITE_OK {
  7598  				var pList uintptr = tcl.XTcl_NewObj(tls)
  7599  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  7600  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  7601  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  7602  				tcl.XTcl_SetObjResult(tls, interp, pList)
  7603  			}
  7604  			break
  7605  
  7606  		}
  7607  	case 8:
  7608  		{
  7609  			var iRowid sqlite3_int64 = (*struct {
  7610  				f func(*libc.TLS, uintptr) sqlite3_int64
  7611  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7612  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  7613  			break
  7614  
  7615  		}
  7616  	case 9:
  7617  		{
  7618  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  7619  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  7620  
  7621  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  7622  				return TCL_ERROR
  7623  			}
  7624  			rc = (*struct {
  7625  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7626  			})(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)
  7627  			if rc == SQLITE_OK {
  7628  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  7629  			}
  7630  			break
  7631  
  7632  		}
  7633  	case 10:
  7634  		{
  7635  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  7636  
  7637  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  7638  				return TCL_ERROR
  7639  			}
  7640  			rc = (*struct {
  7641  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7642  			})(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)
  7643  			if rc == SQLITE_OK {
  7644  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  7645  			}
  7646  			break
  7647  
  7648  		}
  7649  	case 11:
  7650  		{
  7651  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  7652  				return TCL_ERROR
  7653  			}
  7654  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  7655  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7656  			rc = (*struct {
  7657  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7658  			})(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 {
  7659  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7660  			}{xQueryPhraseCb})))
  7661  			if rc == SQLITE_OK {
  7662  				tcl.XTcl_ResetResult(tls, interp)
  7663  			}
  7664  			break
  7665  
  7666  		}
  7667  	case 12:
  7668  		{
  7669  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  7670  			if pData == uintptr(0) {
  7671  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  7672  				return TCL_ERROR
  7673  			}
  7674  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  7675  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  7676  			rc = (*struct {
  7677  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7678  			})(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})))
  7679  			break
  7680  
  7681  		}
  7682  	case 13:
  7683  		{
  7684  			var pData uintptr
  7685  
  7686  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  7687  				return TCL_ERROR
  7688  			}
  7689  			pData = (*struct {
  7690  				f func(*libc.TLS, uintptr, int32) uintptr
  7691  			})(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)))
  7692  			if pData == uintptr(0) {
  7693  				tcl.XTcl_ResetResult(tls, interp)
  7694  			} else {
  7695  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  7696  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  7697  					xSetAuxdataDestructor(tls, pData)
  7698  				}
  7699  			}
  7700  			break
  7701  
  7702  		}
  7703  
  7704  	case 14:
  7705  		{
  7706  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  7707  				return TCL_ERROR
  7708  			}
  7709  			rc = (*struct {
  7710  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7711  			})(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))
  7712  			break
  7713  
  7714  		}
  7715  	case 15:
  7716  		{
  7717  			var iVal int32
  7718  
  7719  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  7720  				return TCL_ERROR
  7721  			}
  7722  			iVal = int32((int64((*struct {
  7723  				f func(*libc.TLS, uintptr, int32) uintptr
  7724  			})(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)
  7725  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  7726  			break
  7727  
  7728  		}
  7729  
  7730  	case 16:
  7731  		{
  7732  			var zColvar uintptr
  7733  			var zOffvar uintptr
  7734  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  7735  
  7736  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  7737  				return TCL_ERROR
  7738  			}
  7739  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7740  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  7741  
  7742  			rc = (*struct {
  7743  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7744  			})(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)
  7745  			if rc != SQLITE_OK {
  7746  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  7747  				return TCL_ERROR
  7748  			}
  7749  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  7750  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  7751  			})(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) {
  7752  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  7753  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  7754  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7755  				if rc == TCL_CONTINUE {
  7756  					rc = TCL_OK
  7757  				}
  7758  				if rc != TCL_OK {
  7759  					if rc == TCL_BREAK {
  7760  						rc = TCL_OK
  7761  					}
  7762  					break
  7763  				}
  7764  			}
  7765  
  7766  			break
  7767  
  7768  		}
  7769  
  7770  	case 17:
  7771  		{
  7772  			var zColvar uintptr
  7773  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  7774  
  7775  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  7776  				return TCL_ERROR
  7777  			}
  7778  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7779  
  7780  			rc = (*struct {
  7781  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7782  			})(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)
  7783  			if rc != SQLITE_OK {
  7784  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7785  				return TCL_ERROR
  7786  			}
  7787  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  7788  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  7789  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  7790  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  7791  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7792  				if rc == TCL_CONTINUE {
  7793  					rc = TCL_OK
  7794  				}
  7795  				if rc != TCL_OK {
  7796  					if rc == TCL_BREAK {
  7797  						rc = TCL_OK
  7798  					}
  7799  					break
  7800  				}
  7801  			}
  7802  
  7803  			break
  7804  
  7805  		}
  7806  
  7807  	default:
  7808  		break
  7809  	}
  7810  
  7811  	if rc != SQLITE_OK {
  7812  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7813  		return TCL_ERROR
  7814  	}
  7815  
  7816  	return TCL_OK
  7817  }
  7818  
  7819  type Sub = struct {
  7820  	FzName       uintptr
  7821  	FnArg        int32
  7822  	F__ccgo_pad1 [4]byte
  7823  	FzMsg        uintptr
  7824  }
  7825  
  7826  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  7827  	bp := tls.Alloc(112)
  7828  	defer tls.Free(112)
  7829  
  7830  	var p uintptr = (*struct {
  7831  		f func(*libc.TLS, uintptr) uintptr
  7832  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  7833  	var pEval uintptr
  7834  	var i int32
  7835  	var rc int32
  7836  
  7837  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7838  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7839  
  7840  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  7841  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7842  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7843  	}{xF5tApi})), bp+72, uintptr(0))
  7844  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7845  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7846  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7847  
  7848  	for i = 0; i < nVal; i++ {
  7849  		var pObj uintptr = uintptr(0)
  7850  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  7851  		case SQLITE_TEXT:
  7852  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  7853  			break
  7854  		case SQLITE_BLOB:
  7855  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  7856  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7857  			break
  7858  		case SQLITE_INTEGER:
  7859  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7860  			break
  7861  		case SQLITE_FLOAT:
  7862  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7863  			break
  7864  		default:
  7865  			pObj = tcl.XTcl_NewObj(tls)
  7866  			break
  7867  		}
  7868  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  7869  	}
  7870  
  7871  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  7872  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7873  		var _objPtr uintptr = pEval
  7874  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7875  			tcl.XTclFreeObj(tls, _objPtr)
  7876  		}
  7877  	}
  7878  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7879  
  7880  	if rc != TCL_OK {
  7881  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  7882  	} else {
  7883  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  7884  
  7885  		var zType uintptr = func() uintptr {
  7886  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  7887  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  7888  			}
  7889  			return ts + 584
  7890  		}()
  7891  		var c int8 = *(*int8)(unsafe.Pointer(zType))
  7892  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  7893  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  7894  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7895  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  7896  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  7897  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  7898  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  7899  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  7900  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  7901  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  7902  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  7903  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  7904  		} else {
  7905  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  7906  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7907  		}
  7908  	}
  7909  }
  7910  
  7911  var iCmd2 sqlite3_int64 = int64(0)
  7912  
  7913  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  7914  	var p uintptr = pCtx
  7915  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7916  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  7917  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7918  			tcl.XTclFreeObj(tls, _objPtr)
  7919  		}
  7920  	}
  7921  	tcl.XTcl_Free(tls, p)
  7922  }
  7923  
  7924  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7925  	bp := tls.Alloc(40)
  7926  	defer tls.Free(40)
  7927  
  7928  	var zName uintptr
  7929  	var pScript uintptr
  7930  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  7931  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  7932  	var pCtx uintptr = uintptr(0)
  7933  	var rc int32
  7934  
  7935  	if objc != 4 {
  7936  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  7937  		return TCL_ERROR
  7938  	}
  7939  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  7940  		return TCL_ERROR
  7941  	}
  7942  
  7943  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7944  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7945  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  7946  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  7947  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  7948  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  7949  
  7950  	rc = (*struct {
  7951  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  7952  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  7953  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  7954  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  7955  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  7956  	if rc != SQLITE_OK {
  7957  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  7958  		return TCL_ERROR
  7959  	}
  7960  
  7961  	return TCL_OK
  7962  }
  7963  
  7964  type F5tTokenizeCtx1 = struct {
  7965  	FpRet        uintptr
  7966  	FbSubst      int32
  7967  	F__ccgo_pad1 [4]byte
  7968  	FzInput      uintptr
  7969  }
  7970  
  7971  type F5tTokenizeCtx = F5tTokenizeCtx1
  7972  
  7973  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7974  	var p uintptr = pCtx
  7975  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  7976  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7977  		tcl.XTcl_ListObjAppendElement(tls,
  7978  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  7979  	} else {
  7980  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7981  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  7982  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  7983  	}
  7984  	return SQLITE_OK
  7985  }
  7986  
  7987  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7988  	bp := tls.Alloc(200)
  7989  	defer tls.Free(200)
  7990  
  7991  	var zText uintptr
  7992  
  7993  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  7994  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  7995  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  7996  
  7997  	var pRet uintptr = uintptr(0)
  7998  
  7999  	var rc int32
  8000  
  8001  	if objc != 4 && objc != 5 {
  8002  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  8003  		return TCL_ERROR
  8004  	}
  8005  	if objc == 5 {
  8006  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  8007  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  8008  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  8009  			return TCL_ERROR
  8010  		}
  8011  	}
  8012  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  8013  		return TCL_ERROR
  8014  	}
  8015  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  8016  		return TCL_ERROR
  8017  	}
  8018  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  8019  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  8020  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8021  		return TCL_ERROR
  8022  	}
  8023  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  8024  
  8025  	rc = (*struct {
  8026  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8027  	})(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)
  8028  	if rc != SQLITE_OK {
  8029  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  8030  		return TCL_ERROR
  8031  	}
  8032  
  8033  	rc = (*struct {
  8034  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8035  	})(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)
  8036  	if rc != SQLITE_OK {
  8037  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  8038  		return TCL_ERROR
  8039  	}
  8040  
  8041  	pRet = tcl.XTcl_NewObj(tls)
  8042  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  8043  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  8044  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  8045  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  8046  	rc = (*struct {
  8047  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8048  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  8049  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  8050  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8051  		}{xTokenizeCb2})))
  8052  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8053  	if rc != SQLITE_OK {
  8054  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8055  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8056  			var _objPtr uintptr = pRet
  8057  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8058  				tcl.XTclFreeObj(tls, _objPtr)
  8059  			}
  8060  		}
  8061  		return TCL_ERROR
  8062  	}
  8063  
  8064  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8065  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8066  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8067  		var _objPtr uintptr = pRet
  8068  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8069  			tcl.XTclFreeObj(tls, _objPtr)
  8070  		}
  8071  	}
  8072  	return TCL_OK
  8073  }
  8074  
  8075  type F5tTokenizerContext1 = struct {
  8076  	FpCtx   uintptr
  8077  	FxToken uintptr
  8078  }
  8079  
  8080  type F5tTokenizerContext = F5tTokenizerContext1
  8081  type F5tTokenizerModule1 = struct {
  8082  	Finterp   uintptr
  8083  	FpScript  uintptr
  8084  	FpContext uintptr
  8085  }
  8086  
  8087  type F5tTokenizerModule = F5tTokenizerModule1
  8088  type F5tTokenizerInstance1 = struct {
  8089  	Finterp   uintptr
  8090  	FpScript  uintptr
  8091  	FpContext uintptr
  8092  }
  8093  
  8094  type F5tTokenizerInstance = F5tTokenizerInstance1
  8095  
  8096  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8097  	var pMod uintptr = pCtx
  8098  	var pEval uintptr
  8099  	var rc int32 = TCL_OK
  8100  	var i int32
  8101  
  8102  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8103  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8104  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8105  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8106  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8107  	}
  8108  
  8109  	if rc == TCL_OK {
  8110  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8111  	}
  8112  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8113  		var _objPtr uintptr = pEval
  8114  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8115  			tcl.XTclFreeObj(tls, _objPtr)
  8116  		}
  8117  	}
  8118  
  8119  	if rc == TCL_OK {
  8120  		var pInst uintptr
  8121  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8122  		libc.Xmemset(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})))
  8123  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8124  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8125  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8126  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8127  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8128  	}
  8129  
  8130  	return rc
  8131  }
  8132  
  8133  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8134  	var pInst uintptr = p
  8135  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8136  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8137  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8138  			tcl.XTclFreeObj(tls, _objPtr)
  8139  		}
  8140  	}
  8141  	tcl.XTcl_Free(tls, pInst)
  8142  }
  8143  
  8144  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8145  	var pInst uintptr = p
  8146  	var pOldCtx uintptr
  8147  	var xOldToken uintptr
  8148  	var pEval uintptr
  8149  	var rc int32
  8150  	var zFlags uintptr
  8151  
  8152  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8153  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8154  
  8155  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8156  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8157  
  8158  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8159  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8160  	switch flags {
  8161  	case FTS5_TOKENIZE_DOCUMENT:
  8162  		zFlags = ts + 2727
  8163  		break
  8164  	case FTS5_TOKENIZE_AUX:
  8165  		zFlags = ts + 2736
  8166  		break
  8167  	case FTS5_TOKENIZE_QUERY:
  8168  		zFlags = ts + 2740
  8169  		break
  8170  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8171  		zFlags = ts + 2746
  8172  		break
  8173  	default:
  8174  		zFlags = ts + 2758
  8175  		break
  8176  	}
  8177  
  8178  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8179  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8180  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8181  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8182  		var _objPtr uintptr = pEval
  8183  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8184  			tcl.XTclFreeObj(tls, _objPtr)
  8185  		}
  8186  	}
  8187  
  8188  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8189  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8190  	return rc
  8191  }
  8192  
  8193  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8194  	bp := tls.Alloc(32)
  8195  	defer tls.Free(32)
  8196  
  8197  	var p uintptr
  8198  
  8199  	var tflags int32
  8200  	var zToken uintptr
  8201  	var rc int32
  8202  
  8203  	var zArg uintptr
  8204  	p = clientData
  8205  	tflags = 0
  8206  
  8207  	if !(objc == 5) {
  8208  		goto __1
  8209  	}
  8210  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8211  	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) {
  8212  		goto __3
  8213  	}
  8214  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8215  	goto __4
  8216  __3:
  8217  	goto usage
  8218  __4:
  8219  	;
  8220  	goto __2
  8221  __1:
  8222  	if !(objc != 4) {
  8223  		goto __5
  8224  	}
  8225  	goto usage
  8226  __5:
  8227  	;
  8228  __2:
  8229  	;
  8230  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8231  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8232  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8233  		goto __6
  8234  	}
  8235  	return TCL_ERROR
  8236  __6:
  8237  	;
  8238  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8239  		goto __7
  8240  	}
  8241  	tcl.XTcl_AppendResult(tls, interp,
  8242  		libc.VaList(bp, ts+2777, 0))
  8243  	return TCL_ERROR
  8244  __7:
  8245  	;
  8246  	rc = (*struct {
  8247  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8248  	})(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)))
  8249  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8250  	if rc == SQLITE_OK {
  8251  		return TCL_OK
  8252  	}
  8253  	return TCL_ERROR
  8254  
  8255  usage:
  8256  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8257  	return TCL_ERROR
  8258  }
  8259  
  8260  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8261  	var pMod uintptr = pCtx
  8262  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8263  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  8264  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8265  			tcl.XTclFreeObj(tls, _objPtr)
  8266  		}
  8267  	}
  8268  	tcl.XTcl_Free(tls, pMod)
  8269  }
  8270  
  8271  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8272  	bp := tls.Alloc(56)
  8273  	defer tls.Free(56)
  8274  
  8275  	var pContext uintptr = clientData
  8276  
  8277  	var zName uintptr
  8278  	var pScript uintptr
  8279  
  8280  	var pMod uintptr
  8281  	var rc int32
  8282  
  8283  	if objc != 4 {
  8284  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8285  		return TCL_ERROR
  8286  	}
  8287  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  8288  		return TCL_ERROR
  8289  	}
  8290  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8291  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8292  
  8293  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8294  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8295  	}{f5tTokenizerCreate}))
  8296  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8297  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8298  	}{f5tTokenizerTokenize}))
  8299  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8300  
  8301  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8302  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8303  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8304  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8305  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8306  	rc = (*struct {
  8307  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8308  	})(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})))
  8309  	if rc != SQLITE_OK {
  8310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8311  		return TCL_ERROR
  8312  	}
  8313  
  8314  	return TCL_OK
  8315  }
  8316  
  8317  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8318  	tcl.XTcl_Free(tls, clientData)
  8319  }
  8320  
  8321  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8322  	return TCL_OK
  8323  }
  8324  
  8325  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8326  	var i int32
  8327  	var h uint32 = uint32(13)
  8328  	for i = n - 1; i >= 0; i-- {
  8329  		h = h<<3 ^ h ^ uint32(*(*int8)(unsafe.Pointer(p + uintptr(i))))
  8330  	}
  8331  	return h % uint32(nSlot)
  8332  }
  8333  
  8334  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8335  	bp := tls.Alloc(8)
  8336  	defer tls.Free(8)
  8337  
  8338  	var z uintptr
  8339  
  8340  	var iVal uint32
  8341  
  8342  	if objc != 3 {
  8343  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  8344  		return TCL_ERROR
  8345  	}
  8346  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8347  		return TCL_ERROR
  8348  	}
  8349  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  8350  
  8351  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  8352  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  8353  	return TCL_OK
  8354  }
  8355  
  8356  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8357  	bp := tls.Alloc(8)
  8358  	defer tls.Free(8)
  8359  
  8360  	var rc int32
  8361  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8362  
  8363  	if objc != 2 {
  8364  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8365  		return TCL_ERROR
  8366  	}
  8367  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8368  		return TCL_ERROR
  8369  	}
  8370  
  8371  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8372  	if rc != SQLITE_OK {
  8373  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8374  		return TCL_ERROR
  8375  	}
  8376  	return TCL_OK
  8377  }
  8378  
  8379  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8380  	bp := tls.Alloc(16)
  8381  	defer tls.Free(16)
  8382  
  8383  	var rc int32
  8384  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8385  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8386  
  8387  	if objc != 2 {
  8388  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8389  		return TCL_ERROR
  8390  	}
  8391  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  8392  		return TCL_ERROR
  8393  	}
  8394  
  8395  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  8396  	if rc != SQLITE_OK {
  8397  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8398  		return TCL_ERROR
  8399  	}
  8400  	return TCL_OK
  8401  }
  8402  
  8403  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  8404  	var i int32
  8405  	var pContext uintptr
  8406  
  8407  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8408  	libc.Xmemset(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})))
  8409  
  8410  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  8411  		FzName        uintptr
  8412  		FxProc        uintptr
  8413  		FbTokenizeCtx int32
  8414  		F__ccgo_pad1  [4]byte
  8415  	}{})); i++ {
  8416  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  8417  		var pCtx uintptr = uintptr(0)
  8418  		if (*struct {
  8419  			FzName        uintptr
  8420  			FxProc        uintptr
  8421  			FbTokenizeCtx int32
  8422  			F__ccgo_pad1  [4]byte
  8423  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  8424  			pCtx = pContext
  8425  		}
  8426  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8427  			FzName        uintptr
  8428  			FxProc        uintptr
  8429  			FbTokenizeCtx int32
  8430  			F__ccgo_pad1  [4]byte
  8431  		})(unsafe.Pointer(p)).FzName, (*struct {
  8432  			FzName        uintptr
  8433  			FxProc        uintptr
  8434  			FbTokenizeCtx int32
  8435  			F__ccgo_pad1  [4]byte
  8436  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  8437  			if i != 0 {
  8438  				return uintptr(0)
  8439  			}
  8440  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  8441  		}())
  8442  	}
  8443  
  8444  	return TCL_OK
  8445  }
  8446  
  8447  var aCmd = [8]struct {
  8448  	FzName        uintptr
  8449  	FxProc        uintptr
  8450  	FbTokenizeCtx int32
  8451  	F__ccgo_pad1  [4]byte
  8452  }{
  8453  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  8454  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  8455  	{FzName: ts + 2961, FxProc: 0},
  8456  	{FzName: ts + 2983, FxProc: 0},
  8457  	{FzName: ts + 3012, FxProc: 0},
  8458  	{FzName: ts + 3040, FxProc: 0},
  8459  	{FzName: ts + 3064, FxProc: 0},
  8460  	{FzName: ts + 3096, FxProc: 0},
  8461  }
  8462  
  8463  type Fts5MatchinfoCtx1 = struct {
  8464  	FnCol        int32
  8465  	FnPhrase     int32
  8466  	FzArg        uintptr
  8467  	FnRet        int32
  8468  	F__ccgo_pad1 [4]byte
  8469  	FaRet        uintptr
  8470  }
  8471  
  8472  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  8473  
  8474  type u32 = uint32
  8475  
  8476  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  8477  	bp := tls.Alloc(8)
  8478  	defer tls.Free(8)
  8479  
  8480  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8481  	var rc int32
  8482  
  8483  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  8484  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  8485  	if rc == SQLITE_OK {
  8486  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  8487  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8488  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8489  	}
  8490  
  8491  	return rc
  8492  }
  8493  
  8494  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f int8) int32 {
  8495  	var ret int32 = -1
  8496  	switch int32(f) {
  8497  	case 'p':
  8498  		ret = 1
  8499  		break
  8500  	case 'c':
  8501  		ret = 1
  8502  		break
  8503  	case 'x':
  8504  		ret = 3 * nCol * nPhrase
  8505  		break
  8506  	case 'y':
  8507  		ret = nCol * nPhrase
  8508  		break
  8509  	case 'b':
  8510  		ret = (nCol + 31) / 32 * nPhrase
  8511  		break
  8512  	case 'n':
  8513  		ret = 1
  8514  		break
  8515  	case 'a':
  8516  		ret = nCol
  8517  		break
  8518  	case 'l':
  8519  		ret = nCol
  8520  		break
  8521  	case 's':
  8522  		ret = nCol
  8523  		break
  8524  	}
  8525  	return ret
  8526  }
  8527  
  8528  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  8529  	var i int32
  8530  	var n int32 = 0
  8531  	var rc int32 = SQLITE_OK
  8532  	var f int8
  8533  	for i = 0; libc.AssignInt8(&f, *(*int8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  8534  		rc = (*struct {
  8535  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8536  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  8537  		if rc != SQLITE_OK {
  8538  			break
  8539  		}
  8540  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  8541  	}
  8542  	return rc
  8543  }
  8544  
  8545  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  8546  	bp := tls.Alloc(24)
  8547  	defer tls.Free(24)
  8548  
  8549  	var aOut uintptr = pUserData
  8550  	var iPrev int32 = -1
  8551  
  8552  	for (*struct {
  8553  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8554  	})(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 {
  8555  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8556  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  8557  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  8558  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  8559  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  8560  		}
  8561  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  8562  	}
  8563  
  8564  	return SQLITE_OK
  8565  }
  8566  
  8567  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8568  	bp := tls.Alloc(24)
  8569  	defer tls.Free(24)
  8570  
  8571  	var rc int32 = SQLITE_OK
  8572  	switch int32(f) {
  8573  	case 'p':
  8574  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  8575  		break
  8576  
  8577  	case 'c':
  8578  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  8579  		break
  8580  
  8581  	case 'x':
  8582  		{
  8583  			var i int32
  8584  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  8585  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  8586  				rc = (*struct {
  8587  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8588  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  8589  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8590  				}{fts5MatchinfoXCb})))
  8591  			}
  8592  			break
  8593  
  8594  		}
  8595  
  8596  	case 'n':
  8597  		{
  8598  			rc = (*struct {
  8599  				f func(*libc.TLS, uintptr, uintptr) int32
  8600  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  8601  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  8602  			break
  8603  
  8604  		}
  8605  
  8606  	case 'a':
  8607  		{
  8608  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  8609  			rc = (*struct {
  8610  				f func(*libc.TLS, uintptr, uintptr) int32
  8611  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  8612  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  8613  				libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8614  			} else {
  8615  				var i int32
  8616  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8617  					rc = (*struct {
  8618  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  8619  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  8620  					if rc == SQLITE_OK {
  8621  						*(*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))))
  8622  					}
  8623  				}
  8624  			}
  8625  			break
  8626  
  8627  		}
  8628  
  8629  	}
  8630  	return rc
  8631  }
  8632  
  8633  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8634  	bp := tls.Alloc(80)
  8635  	defer tls.Free(80)
  8636  
  8637  	var i int32
  8638  	var rc int32 = SQLITE_OK
  8639  
  8640  	switch int32(f) {
  8641  	case 'b':
  8642  		{
  8643  			var iPhrase int32
  8644  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  8645  			for i = 0; i < nInt; i++ {
  8646  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  8647  			}
  8648  
  8649  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8650  				for (*struct {
  8651  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8652  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  8653  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  8654  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  8655  					*(*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)
  8656  				}
  8657  			}
  8658  
  8659  			break
  8660  
  8661  		}
  8662  
  8663  	case 'x':
  8664  		fallthrough
  8665  	case 'y':
  8666  		{
  8667  			var nMul int32 = func() int32 {
  8668  				if int32(f) == 'x' {
  8669  					return 3
  8670  				}
  8671  				return 1
  8672  			}()
  8673  			var iPhrase int32
  8674  
  8675  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  8676  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  8677  			}
  8678  
  8679  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8680  				for (*struct {
  8681  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8682  				})(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 {
  8683  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8684  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  8685  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  8686  				}
  8687  			}
  8688  
  8689  			break
  8690  
  8691  		}
  8692  
  8693  	case 'l':
  8694  		{
  8695  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8696  				rc = (*struct {
  8697  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  8698  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  8699  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  8700  			}
  8701  			break
  8702  
  8703  		}
  8704  
  8705  	case 's':
  8706  		{
  8707  			libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8708  
  8709  			rc = (*struct {
  8710  				f func(*libc.TLS, uintptr, uintptr) int32
  8711  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  8712  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  8713  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  8714  				var iNextPhrase int32
  8715  				var iNextOff int32
  8716  				var nSeq u32 = u32(1)
  8717  				var j int32
  8718  
  8719  				rc = (*struct {
  8720  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8721  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  8722  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  8723  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  8724  					f func(*libc.TLS, uintptr, int32) int32
  8725  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  8726  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  8727  					rc = (*struct {
  8728  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8729  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  8730  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  8731  						break
  8732  					}
  8733  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  8734  						nSeq++
  8735  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  8736  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  8737  							f func(*libc.TLS, uintptr, int32) int32
  8738  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  8739  					}
  8740  				}
  8741  
  8742  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  8743  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  8744  				}
  8745  			}
  8746  
  8747  			break
  8748  
  8749  		}
  8750  	}
  8751  	return rc
  8752  }
  8753  
  8754  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  8755  	bp := tls.Alloc(8)
  8756  	defer tls.Free(8)
  8757  
  8758  	var p uintptr
  8759  	var nCol int32
  8760  	var nPhrase int32
  8761  	var i int32
  8762  	var nInt int32
  8763  	var nByte sqlite3_int64
  8764  	var rc int32
  8765  
  8766  	nCol = (*struct {
  8767  		f func(*libc.TLS, uintptr) int32
  8768  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  8769  	nPhrase = (*struct {
  8770  		f func(*libc.TLS, uintptr) int32
  8771  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  8772  
  8773  	nInt = 0
  8774  	for i = 0; *(*int8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  8775  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*int8)(unsafe.Pointer(zArg + uintptr(i))))
  8776  		if n < 0 {
  8777  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i))))))
  8778  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  8779  			sqlite3.Xsqlite3_free(tls, zErr)
  8780  			return uintptr(0)
  8781  		}
  8782  		nInt = nInt + n
  8783  	}
  8784  
  8785  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  8786  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  8787  		uint64(i+1))
  8788  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  8789  	if p == uintptr(0) {
  8790  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  8791  		return uintptr(0)
  8792  	}
  8793  	libc.Xmemset(tls, p, 0, uint64(nByte))
  8794  
  8795  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  8796  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  8797  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  8798  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  8799  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  8800  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i))
  8801  
  8802  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8803  		f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8804  	}{fts5MatchinfoGlobalCb})))
  8805  	if rc != SQLITE_OK {
  8806  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8807  		sqlite3.Xsqlite3_free(tls, p)
  8808  		p = uintptr(0)
  8809  	}
  8810  
  8811  	return p
  8812  }
  8813  
  8814  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8815  	var zArg uintptr
  8816  	var p uintptr
  8817  	var rc int32 = SQLITE_OK
  8818  
  8819  	if nVal > 0 {
  8820  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  8821  	} else {
  8822  		zArg = ts + 3163
  8823  	}
  8824  
  8825  	p = (*struct {
  8826  		f func(*libc.TLS, uintptr, int32) uintptr
  8827  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  8828  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  8829  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  8830  		if p == uintptr(0) {
  8831  			rc = SQLITE_NOMEM
  8832  		} else {
  8833  			rc = (*struct {
  8834  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8835  			})(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})))
  8836  		}
  8837  	}
  8838  
  8839  	if rc == SQLITE_OK {
  8840  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8841  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8842  		}{fts5MatchinfoLocalCb})))
  8843  	}
  8844  	if rc != SQLITE_OK {
  8845  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8846  	} else {
  8847  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  8848  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  8849  	}
  8850  }
  8851  
  8852  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  8853  	bp := tls.Alloc(8)
  8854  	defer tls.Free(8)
  8855  
  8856  	var rc int32
  8857  
  8858  	rc = fts5_api_from_db(tls, db, bp)
  8859  	if rc != SQLITE_OK {
  8860  		return rc
  8861  	}
  8862  
  8863  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  8864  		return SQLITE_ERROR
  8865  	}
  8866  
  8867  	rc = (*struct {
  8868  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8869  	})(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 {
  8870  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8871  	}{fts5MatchinfoFunc})), uintptr(0))
  8872  
  8873  	return rc
  8874  }
  8875  
  8876  type Fts5tokTable1 = struct {
  8877  	Fbase sqlite3_vtab
  8878  	Ftok  fts5_tokenizer
  8879  	FpTok uintptr
  8880  }
  8881  
  8882  type Fts5tokTable = Fts5tokTable1
  8883  type Fts5tokCursor1 = struct {
  8884  	Fbase        sqlite3_vtab_cursor
  8885  	FiRowid      int32
  8886  	F__ccgo_pad1 [4]byte
  8887  	FzInput      uintptr
  8888  	FnRow        int32
  8889  	F__ccgo_pad2 [4]byte
  8890  	FaRow        uintptr
  8891  }
  8892  
  8893  type Fts5tokCursor = Fts5tokCursor1
  8894  type Fts5tokRow1 = struct {
  8895  	FzToken      uintptr
  8896  	FiStart      int32
  8897  	FiEnd        int32
  8898  	FiPos        int32
  8899  	F__ccgo_pad1 [4]byte
  8900  }
  8901  
  8902  type Fts5tokRow = Fts5tokRow1
  8903  
  8904  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  8905  	var q int8 = *(*int8)(unsafe.Pointer(z))
  8906  
  8907  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  8908  		var iIn int32 = 1
  8909  		var iOut int32 = 0
  8910  		if int32(q) == '[' {
  8911  			q = int8(']')
  8912  		}
  8913  
  8914  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  8915  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  8916  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  8917  					iIn++
  8918  					break
  8919  				} else {
  8920  					iIn = iIn + 2
  8921  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  8922  				}
  8923  			} else {
  8924  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  8925  			}
  8926  		}
  8927  
  8928  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
  8929  	}
  8930  }
  8931  
  8932  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  8933  	var rc int32 = SQLITE_OK
  8934  	if argc == 0 {
  8935  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  8936  	} else {
  8937  		var i int32
  8938  		var nByte int32 = 0
  8939  		var azDequote uintptr
  8940  
  8941  		for i = 0; i < argc; i++ {
  8942  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  8943  		}
  8944  
  8945  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  8946  		if azDequote == uintptr(0) {
  8947  			rc = SQLITE_NOMEM
  8948  		} else {
  8949  			var pSpace uintptr = azDequote + uintptr(argc)*8
  8950  			for i = 0; i < argc; i++ {
  8951  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  8952  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  8953  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1))
  8954  				fts5tokDequote(tls, pSpace)
  8955  				pSpace += uintptr(n + 1)
  8956  			}
  8957  		}
  8958  	}
  8959  
  8960  	return rc
  8961  }
  8962  
  8963  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  8964  	bp := tls.Alloc(16)
  8965  	defer tls.Free(16)
  8966  
  8967  	var pApi uintptr = pCtx
  8968  	var pTab uintptr = uintptr(0)
  8969  	var rc int32
  8970  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8971  	var nDequote int32 = 0
  8972  
  8973  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  8974  		ts+3177)
  8975  
  8976  	if rc == SQLITE_OK {
  8977  		nDequote = argc - 3
  8978  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  8979  	}
  8980  
  8981  	if rc == SQLITE_OK {
  8982  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  8983  		if pTab == uintptr(0) {
  8984  			rc = SQLITE_NOMEM
  8985  		} else {
  8986  			libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})))
  8987  		}
  8988  	}
  8989  
  8990  	if rc == SQLITE_OK {
  8991  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8992  		var zModule uintptr = uintptr(0)
  8993  		if nDequote > 0 {
  8994  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  8995  		}
  8996  
  8997  		rc = (*struct {
  8998  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8999  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  9000  		if rc == SQLITE_OK {
  9001  			var azArg uintptr = func() uintptr {
  9002  				if nDequote > 1 {
  9003  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  9004  				}
  9005  				return uintptr(0)
  9006  			}()
  9007  			var nArg int32
  9008  			if nDequote > 0 {
  9009  				nArg = nDequote - 1
  9010  			} else {
  9011  				nArg = 0
  9012  			}
  9013  			rc = (*struct {
  9014  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9015  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  9016  		}
  9017  	}
  9018  
  9019  	if rc != SQLITE_OK {
  9020  		sqlite3.Xsqlite3_free(tls, pTab)
  9021  		pTab = uintptr(0)
  9022  	}
  9023  
  9024  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  9025  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9026  	return rc
  9027  }
  9028  
  9029  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  9030  	var pTab uintptr = pVtab
  9031  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  9032  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  9033  	}
  9034  	sqlite3.Xsqlite3_free(tls, pTab)
  9035  	return SQLITE_OK
  9036  }
  9037  
  9038  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  9039  	var i int32
  9040  
  9041  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  9042  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  9043  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  9044  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  9045  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  9046  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  9047  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  9048  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  9049  			return SQLITE_OK
  9050  		}
  9051  	}
  9052  
  9053  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9054  
  9055  	return SQLITE_OK
  9056  }
  9057  
  9058  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9059  	var pCsr uintptr
  9060  
  9061  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9062  	if pCsr == uintptr(0) {
  9063  		return SQLITE_NOMEM
  9064  	}
  9065  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})))
  9066  
  9067  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9068  	return SQLITE_OK
  9069  }
  9070  
  9071  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9072  	var i int32
  9073  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9074  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9075  	}
  9076  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9077  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9078  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9079  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9080  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9081  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9082  }
  9083  
  9084  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9085  	var pCsr uintptr = pCursor
  9086  	fts5tokResetCursor(tls, pCsr)
  9087  	sqlite3.Xsqlite3_free(tls, pCsr)
  9088  	return SQLITE_OK
  9089  }
  9090  
  9091  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9092  	var pCsr uintptr = pCursor
  9093  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9094  	return SQLITE_OK
  9095  }
  9096  
  9097  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9098  	var pCsr uintptr = pCtx
  9099  	var pRow uintptr
  9100  
  9101  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9102  		var nNew int32
  9103  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9104  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9105  		} else {
  9106  			nNew = 32
  9107  		}
  9108  		var aNew uintptr
  9109  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9110  		if aNew == uintptr(0) {
  9111  			return SQLITE_NOMEM
  9112  		}
  9113  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9114  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9115  	}
  9116  
  9117  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9118  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9119  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9120  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9121  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9122  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9123  				return 0
  9124  			}
  9125  			return 1
  9126  		}()
  9127  	}
  9128  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9129  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9130  		return SQLITE_NOMEM
  9131  	}
  9132  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken))
  9133  	*(*int8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = int8(0)
  9134  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9135  
  9136  	return SQLITE_OK
  9137  }
  9138  
  9139  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9140  	var rc int32 = SQLITE_ERROR
  9141  	var pCsr uintptr = pCursor
  9142  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9143  
  9144  	fts5tokResetCursor(tls, pCsr)
  9145  	if idxNum == 1 {
  9146  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9147  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9148  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9149  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9150  			rc = SQLITE_NOMEM
  9151  		} else {
  9152  			if nByte > 0 {
  9153  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte))
  9154  			}
  9155  			*(*int8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = int8(0)
  9156  			rc = (*struct {
  9157  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9158  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9159  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9160  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9161  				}{fts5tokCb})))
  9162  		}
  9163  	}
  9164  
  9165  	if rc != SQLITE_OK {
  9166  		return rc
  9167  	}
  9168  	return fts5tokNextMethod(tls, pCursor)
  9169  }
  9170  
  9171  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9172  	var pCsr uintptr = pCursor
  9173  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9174  }
  9175  
  9176  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9177  	var pCsr uintptr = pCursor
  9178  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9179  
  9180  	switch iCol {
  9181  	case 0:
  9182  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9183  		break
  9184  	case 1:
  9185  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9186  		break
  9187  	case 2:
  9188  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9189  		break
  9190  	case 3:
  9191  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9192  		break
  9193  	default:
  9194  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9195  		break
  9196  	}
  9197  	return SQLITE_OK
  9198  }
  9199  
  9200  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9201  	var pCsr uintptr = pCursor
  9202  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9203  	return SQLITE_OK
  9204  }
  9205  
  9206  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9207  	var rc int32
  9208  
  9209  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9210  	return rc
  9211  }
  9212  
  9213  var fts5tok_module = sqlite3_module{
  9214  	FxCreate:     0,
  9215  	FxConnect:    0,
  9216  	FxBestIndex:  0,
  9217  	FxDisconnect: 0,
  9218  	FxDestroy:    0,
  9219  	FxOpen:       0,
  9220  	FxClose:      0,
  9221  	FxFilter:     0,
  9222  	FxNext:       0,
  9223  	FxEof:        0,
  9224  	FxColumn:     0,
  9225  	FxRowid:      0,
  9226  }
  9227  
  9228  type sqlite3_api_routines = sqlite3_api_routines1
  9229  
  9230  type sqlite3_loadext_entry = uintptr
  9231  
  9232  type ApndVfs = sqlite3_vfs1
  9233  type ApndFile1 = struct {
  9234  	Fbase   sqlite3_file
  9235  	FiPgOne sqlite3_int64
  9236  	FiMark  sqlite3_int64
  9237  }
  9238  
  9239  type ApndFile = ApndFile1
  9240  
  9241  var apnd_vfs = sqlite3_vfs{
  9242  	FiVersion:          3,
  9243  	FmxPathname:        1024,
  9244  	FzName:             ts + 3248,
  9245  	FxOpen:             0,
  9246  	FxDelete:           0,
  9247  	FxAccess:           0,
  9248  	FxFullPathname:     0,
  9249  	FxDlOpen:           0,
  9250  	FxDlError:          0,
  9251  	FxDlSym:            0,
  9252  	FxDlClose:          0,
  9253  	FxRandomness:       0,
  9254  	FxSleep:            0,
  9255  	FxCurrentTime:      0,
  9256  	FxGetLastError:     0,
  9257  	FxCurrentTimeInt64: 0,
  9258  	FxSetSystemCall:    0,
  9259  	FxGetSystemCall:    0,
  9260  	FxNextSystemCall:   0,
  9261  }
  9262  
  9263  var apnd_io_methods = sqlite3_io_methods{
  9264  	FiVersion:               3,
  9265  	FxClose:                 0,
  9266  	FxRead:                  0,
  9267  	FxWrite:                 0,
  9268  	FxTruncate:              0,
  9269  	FxSync:                  0,
  9270  	FxFileSize:              0,
  9271  	FxLock:                  0,
  9272  	FxUnlock:                0,
  9273  	FxCheckReservedLock:     0,
  9274  	FxFileControl:           0,
  9275  	FxSectorSize:            0,
  9276  	FxDeviceCharacteristics: 0,
  9277  	FxShmMap:                0,
  9278  	FxShmLock:               0,
  9279  	FxShmBarrier:            0,
  9280  	FxShmUnmap:              0,
  9281  	FxFetch:                 0,
  9282  	FxUnfetch:               0,
  9283  }
  9284  
  9285  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9286  	pFile = pFile + uintptr(1)*24
  9287  	return (*struct {
  9288  		f func(*libc.TLS, uintptr) int32
  9289  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9290  }
  9291  
  9292  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9293  	var paf uintptr = pFile
  9294  	pFile = pFile + uintptr(1)*24
  9295  	return (*struct {
  9296  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9297  	})(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)
  9298  }
  9299  
  9300  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9301  	bp := tls.Alloc(25)
  9302  	defer tls.Free(25)
  9303  
  9304  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9305  
  9306  	var i int32 = APND_MARK_FOS_SZ
  9307  	var rc int32
  9308  
  9309  	libc.Xmemcpy(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ))
  9310  	for libc.PreDecInt32(&i, 1) >= 0 {
  9311  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9312  		iPgOne >>= 8
  9313  	}
  9314  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9315  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9316  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9317  	})(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)) {
  9318  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9319  	}
  9320  	return rc
  9321  }
  9322  
  9323  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9324  	var paf uintptr = pFile
  9325  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9326  	if iWriteEnd >= int64(0x40000000) {
  9327  		return SQLITE_FULL
  9328  	}
  9329  	pFile = pFile + uintptr(1)*24
  9330  
  9331  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9332  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9333  		if SQLITE_OK != rc {
  9334  			return rc
  9335  		}
  9336  	}
  9337  	return (*struct {
  9338  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9339  	})(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)
  9340  }
  9341  
  9342  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
  9343  	var paf uintptr = pFile
  9344  	pFile = pFile + uintptr(1)*24
  9345  
  9346  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
  9347  		return SQLITE_IOERR
  9348  	}
  9349  
  9350  	return (*struct {
  9351  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
  9352  	})(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))
  9353  }
  9354  
  9355  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
  9356  	pFile = pFile + uintptr(1)*24
  9357  	return (*struct {
  9358  		f func(*libc.TLS, uintptr, int32) int32
  9359  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
  9360  }
  9361  
  9362  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
  9363  	var paf uintptr = pFile
  9364  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
  9365  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
  9366  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9367  		}
  9368  		return int64(0)
  9369  	}()
  9370  	return SQLITE_OK
  9371  }
  9372  
  9373  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9374  	pFile = pFile + uintptr(1)*24
  9375  	return (*struct {
  9376  		f func(*libc.TLS, uintptr, int32) int32
  9377  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
  9378  }
  9379  
  9380  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9381  	pFile = pFile + uintptr(1)*24
  9382  	return (*struct {
  9383  		f func(*libc.TLS, uintptr, int32) int32
  9384  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
  9385  }
  9386  
  9387  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
  9388  	pFile = pFile + uintptr(1)*24
  9389  	return (*struct {
  9390  		f func(*libc.TLS, uintptr, uintptr) int32
  9391  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
  9392  }
  9393  
  9394  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
  9395  	bp := tls.Alloc(16)
  9396  	defer tls.Free(16)
  9397  
  9398  	var paf uintptr = pFile
  9399  	var rc int32
  9400  	pFile = pFile + uintptr(1)*24
  9401  	if op == SQLITE_FCNTL_SIZE_HINT {
  9402  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9403  	}
  9404  	rc = (*struct {
  9405  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9406  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
  9407  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
  9408  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
  9409  	}
  9410  	return rc
  9411  }
  9412  
  9413  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
  9414  	pFile = pFile + uintptr(1)*24
  9415  	return (*struct {
  9416  		f func(*libc.TLS, uintptr) int32
  9417  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
  9418  }
  9419  
  9420  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
  9421  	pFile = pFile + uintptr(1)*24
  9422  	return (*struct {
  9423  		f func(*libc.TLS, uintptr) int32
  9424  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
  9425  }
  9426  
  9427  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
  9428  	pFile = pFile + uintptr(1)*24
  9429  	return (*struct {
  9430  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
  9431  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
  9432  }
  9433  
  9434  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
  9435  	pFile = pFile + uintptr(1)*24
  9436  	return (*struct {
  9437  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
  9438  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
  9439  }
  9440  
  9441  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
  9442  	pFile = pFile + uintptr(1)*24
  9443  	(*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)
  9444  }
  9445  
  9446  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
  9447  	pFile = pFile + uintptr(1)*24
  9448  	return (*struct {
  9449  		f func(*libc.TLS, uintptr, int32) int32
  9450  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
  9451  }
  9452  
  9453  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
  9454  	var p uintptr = pFile
  9455  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
  9456  		return SQLITE_IOERR
  9457  	}
  9458  	pFile = pFile + uintptr(1)*24
  9459  	return (*struct {
  9460  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
  9461  	})(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)
  9462  }
  9463  
  9464  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
  9465  	var p uintptr = pFile
  9466  	pFile = pFile + uintptr(1)*24
  9467  	return (*struct {
  9468  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
  9469  	})(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)
  9470  }
  9471  
  9472  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
  9473  	bp := tls.Alloc(25)
  9474  	defer tls.Free(25)
  9475  
  9476  	var rc int32
  9477  	var i int32
  9478  	var iMark sqlite3_int64
  9479  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
  9480  
  9481  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
  9482  		return int64(-1)
  9483  	}
  9484  	rc = (*struct {
  9485  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9486  	})(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))
  9487  	if rc != 0 {
  9488  		return int64(-1)
  9489  	}
  9490  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
  9491  		return int64(-1)
  9492  	}
  9493  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
  9494  	for i = 1; i < 8; i++ {
  9495  		msbs = msbs - 8
  9496  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
  9497  	}
  9498  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
  9499  		return int64(-1)
  9500  	}
  9501  	if iMark&int64(0x1ff) != 0 {
  9502  		return int64(-1)
  9503  	}
  9504  	return iMark
  9505  }
  9506  
  9507  var apvfsSqliteHdr = *(*[16]int8)(unsafe.Pointer(ts + 3288))
  9508  
  9509  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9510  	bp := tls.Alloc(16)
  9511  	defer tls.Free(16)
  9512  
  9513  	var rc int32
  9514  
  9515  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
  9516  	if iMark >= int64(0) {
  9517  		rc = (*struct {
  9518  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9519  		})(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)
  9520  		if SQLITE_OK == rc &&
  9521  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) == 0 &&
  9522  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
  9523  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
  9524  			return 1
  9525  		}
  9526  	}
  9527  	return 0
  9528  }
  9529  
  9530  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9531  	bp := tls.Alloc(16)
  9532  	defer tls.Free(16)
  9533  
  9534  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
  9535  		sz&int64(0x1ff) != int64(0) ||
  9536  		SQLITE_OK != (*struct {
  9537  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9538  		})(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)) ||
  9539  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) != 0 {
  9540  		return 0
  9541  	} else {
  9542  		return 1
  9543  	}
  9544  	return int32(0)
  9545  }
  9546  
  9547  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
  9548  	bp := tls.Alloc(8)
  9549  	defer tls.Free(8)
  9550  
  9551  	var pApndFile uintptr = pFile
  9552  	var pBaseFile uintptr = pFile + uintptr(1)*24
  9553  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
  9554  	var rc int32
  9555  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
  9556  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
  9557  		return (*struct {
  9558  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9559  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
  9560  	}
  9561  	libc.Xmemset(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})))
  9562  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
  9563  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
  9564  
  9565  	rc = (*struct {
  9566  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9567  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
  9568  	if rc == SQLITE_OK {
  9569  		rc = (*struct {
  9570  			f func(*libc.TLS, uintptr, uintptr) int32
  9571  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
  9572  		if rc != 0 {
  9573  			(*struct {
  9574  				f func(*libc.TLS, uintptr) int32
  9575  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9576  		}
  9577  	}
  9578  	if rc != 0 {
  9579  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9580  		return rc
  9581  	}
  9582  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
  9583  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
  9584  		return SQLITE_OK
  9585  	}
  9586  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
  9587  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
  9588  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
  9589  		return SQLITE_OK
  9590  	}
  9591  	if flags&SQLITE_OPEN_CREATE == 0 {
  9592  		(*struct {
  9593  			f func(*libc.TLS, uintptr) int32
  9594  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9595  		rc = SQLITE_CANTOPEN
  9596  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9597  	} else {
  9598  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
  9599  	}
  9600  	return rc
  9601  }
  9602  
  9603  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
  9604  	return (*struct {
  9605  		f func(*libc.TLS, uintptr, uintptr, int32) int32
  9606  	})(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)
  9607  }
  9608  
  9609  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
  9610  	return (*struct {
  9611  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9612  	})(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)
  9613  }
  9614  
  9615  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
  9616  	return (*struct {
  9617  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9618  	})(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)
  9619  }
  9620  
  9621  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
  9622  	return (*struct {
  9623  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9624  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
  9625  }
  9626  
  9627  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
  9628  	(*struct {
  9629  		f func(*libc.TLS, uintptr, int32, uintptr)
  9630  	})(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)
  9631  }
  9632  
  9633  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
  9634  	return (*struct {
  9635  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
  9636  	})(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)
  9637  }
  9638  
  9639  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
  9640  	(*struct {
  9641  		f func(*libc.TLS, uintptr, uintptr)
  9642  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
  9643  }
  9644  
  9645  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
  9646  	return (*struct {
  9647  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9648  	})(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)
  9649  }
  9650  
  9651  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
  9652  	return (*struct {
  9653  		f func(*libc.TLS, uintptr, int32) int32
  9654  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
  9655  }
  9656  
  9657  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
  9658  	return (*struct {
  9659  		f func(*libc.TLS, uintptr, uintptr) int32
  9660  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
  9661  }
  9662  
  9663  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
  9664  	return (*struct {
  9665  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9666  	})(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)
  9667  }
  9668  
  9669  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
  9670  	return (*struct {
  9671  		f func(*libc.TLS, uintptr, uintptr) int32
  9672  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
  9673  }
  9674  
  9675  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
  9676  	return (*struct {
  9677  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
  9678  	})(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)
  9679  }
  9680  
  9681  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
  9682  	return (*struct {
  9683  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
  9684  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9685  }
  9686  
  9687  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
  9688  	return (*struct {
  9689  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9690  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9691  }
  9692  
  9693  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
  9694  	var rc int32 = SQLITE_OK
  9695  	var pOrig uintptr
  9696  	_ = pApi
  9697  
  9698  	_ = pzErrMsg
  9699  	_ = db
  9700  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
  9701  	if pOrig == uintptr(0) {
  9702  		return SQLITE_ERROR
  9703  	}
  9704  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
  9705  	apnd_vfs.FpAppData = pOrig
  9706  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
  9707  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
  9708  	if rc == SQLITE_OK {
  9709  		rc = SQLITE_OK | int32(1)<<8
  9710  	}
  9711  	return rc
  9712  }
  9713  
  9714  type rune_t = int32
  9715  
  9716  type div_t = struct {
  9717  	Fquot int32
  9718  	Frem  int32
  9719  }
  9720  
  9721  type ldiv_t = struct {
  9722  	Fquot int64
  9723  	Frem  int64
  9724  }
  9725  
  9726  type lldiv_t = struct {
  9727  	Fquot int64
  9728  	Frem  int64
  9729  }
  9730  
  9731  type constraint_handler_t = uintptr
  9732  
  9733  type _RuneEntry = struct {
  9734  	F__min       int32
  9735  	F__max       int32
  9736  	F__map       int32
  9737  	F__ccgo_pad1 [4]byte
  9738  	F__types     uintptr
  9739  }
  9740  
  9741  type _RuneRange = struct {
  9742  	F__nranges   int32
  9743  	F__ccgo_pad1 [4]byte
  9744  	F__ranges    uintptr
  9745  }
  9746  
  9747  type _RuneLocale = struct {
  9748  	F__magic        [8]int8
  9749  	F__encoding     [32]int8
  9750  	F__sgetrune     uintptr
  9751  	F__sputrune     uintptr
  9752  	F__invalid_rune int32
  9753  	F__ccgo_pad1    [4]byte
  9754  	F__runetype     [256]uint64
  9755  	F__maplower     [256]int32
  9756  	F__mapupper     [256]int32
  9757  	F__runetype_ext _RuneRange
  9758  	F__maplower_ext _RuneRange
  9759  	F__mapupper_ext _RuneRange
  9760  	F__variable     uintptr
  9761  	F__variable_len int32
  9762  	F__ccgo_pad2    [4]byte
  9763  }
  9764  
  9765  func __getCurrentRuneLocale(tls *libc.TLS) uintptr {
  9766  	if libc.X_ThreadRuneLocale != 0 {
  9767  		return libc.X_ThreadRuneLocale
  9768  	}
  9769  	return libc.X_CurrentRuneLocale
  9770  }
  9771  
  9772  func __maskrune(tls *libc.TLS, _c int32, _f uint64) int32 {
  9773  	return int32(func() uint64 {
  9774  		if _c < 0 || _c >= int32(1)<<8 {
  9775  			return libc.X___runetype(tls, _c)
  9776  		}
  9777  		return *(*uint64)(unsafe.Pointer(__getCurrentRuneLocale(tls) + 64 + uintptr(_c)*8))
  9778  	}() & _f)
  9779  }
  9780  
  9781  func __sbmaskrune(tls *libc.TLS, _c int32, _f uint64) int32 {
  9782  	if _c < 0 || _c >= libc.X__mb_sb_limit {
  9783  		return 0
  9784  	}
  9785  	return int32(*(*uint64)(unsafe.Pointer(__getCurrentRuneLocale(tls) + 64 + uintptr(_c)*8)) & _f)
  9786  }
  9787  
  9788  func __sbistype(tls *libc.TLS, _c int32, _f uint64) int32 {
  9789  	return libc.BoolInt32(!!(__sbmaskrune(tls, _c, _f) != 0))
  9790  }
  9791  
  9792  func __sbmaskrune_l(tls *libc.TLS, __c int32, __f uint64, __loc locale_t) int32 {
  9793  	bp := tls.Alloc(4)
  9794  	defer tls.Free(4)
  9795  
  9796  	var runes uintptr = libc.X__runes_for_locale(tls, __loc, bp)
  9797  	if __c < 0 || __c >= *(*int32)(unsafe.Pointer(bp)) {
  9798  		return 0
  9799  	}
  9800  	return int32(*(*uint64)(unsafe.Pointer(runes + 64 + uintptr(__c)*8)) & __f)
  9801  }
  9802  
  9803  func __sbistype_l(tls *libc.TLS, __c int32, __f uint64, __loc locale_t) int32 {
  9804  	return libc.BoolInt32(!!(tcl.X__sbmaskrune_l(tls, __c, __f, __loc) != 0))
  9805  }
  9806  
  9807  func isalnum_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9808  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_A|X_CTYPE_D|X_CTYPE_N), __l)
  9809  }
  9810  
  9811  func isalpha_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9812  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_A), __l)
  9813  }
  9814  
  9815  func isblank_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9816  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_B), __l)
  9817  }
  9818  
  9819  func iscntrl_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9820  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_C), __l)
  9821  }
  9822  
  9823  func isdigit_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9824  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_D), __l)
  9825  }
  9826  
  9827  func isgraph_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9828  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_G), __l)
  9829  }
  9830  
  9831  func ishexnumber_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9832  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_X), __l)
  9833  }
  9834  
  9835  func isideogram_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9836  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_I), __l)
  9837  }
  9838  
  9839  func islower_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9840  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_L), __l)
  9841  }
  9842  
  9843  func isnumber_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9844  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_D|X_CTYPE_N), __l)
  9845  }
  9846  
  9847  func isphonogram_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9848  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_Q), __l)
  9849  }
  9850  
  9851  func isprint_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9852  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_R), __l)
  9853  }
  9854  
  9855  func ispunct_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9856  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_P), __l)
  9857  }
  9858  
  9859  func isrune_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9860  	return tcl.X__sbistype_l(tls, __c, uint64(0xFFFFFF00), __l)
  9861  }
  9862  
  9863  func isspace_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9864  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_S), __l)
  9865  }
  9866  
  9867  func isspecial_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9868  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_T), __l)
  9869  }
  9870  
  9871  func isupper_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9872  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_U), __l)
  9873  }
  9874  
  9875  func isxdigit_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9876  	return tcl.X__sbistype_l(tls, __c, uint64(X_CTYPE_X), __l)
  9877  }
  9878  
  9879  func digittoint_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9880  	return tcl.X__sbmaskrune_l(tls, __c, uint64(0xFF), __l)
  9881  }
  9882  
  9883  func tolower_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9884  	bp := tls.Alloc(4)
  9885  	defer tls.Free(4)
  9886  
  9887  	var __runes uintptr = libc.X__runes_for_locale(tls, __l, bp)
  9888  	if __c < 0 || __c >= *(*int32)(unsafe.Pointer(bp)) {
  9889  		return __c
  9890  	}
  9891  	return *(*int32)(unsafe.Pointer(__runes + 2112 + uintptr(__c)*4))
  9892  }
  9893  
  9894  func toupper_l(tls *libc.TLS, __c int32, __l locale_t) int32 {
  9895  	bp := tls.Alloc(4)
  9896  	defer tls.Free(4)
  9897  
  9898  	var __runes uintptr = libc.X__runes_for_locale(tls, __l, bp)
  9899  	if __c < 0 || __c >= *(*int32)(unsafe.Pointer(bp)) {
  9900  		return __c
  9901  	}
  9902  	return *(*int32)(unsafe.Pointer(__runes + 3136 + uintptr(__c)*4))
  9903  }
  9904  
  9905  type amatch_vtab1 = struct {
  9906  	Fbase        sqlite3_vtab
  9907  	FzClassName  uintptr
  9908  	FzDb         uintptr
  9909  	FzSelf       uintptr
  9910  	FzCostTab    uintptr
  9911  	FzVocabTab   uintptr
  9912  	FzVocabWord  uintptr
  9913  	FzVocabLang  uintptr
  9914  	FpRule       uintptr
  9915  	FrIns        amatch_cost
  9916  	FrDel        amatch_cost
  9917  	FrSub        amatch_cost
  9918  	F__ccgo_pad1 [4]byte
  9919  	Fdb          uintptr
  9920  	FpVCheck     uintptr
  9921  	FnCursor     int32
  9922  	F__ccgo_pad2 [4]byte
  9923  }
  9924  
  9925  type amatch_vtab = amatch_vtab1
  9926  type amatch_cursor1 = struct {
  9927  	Fbase        sqlite3_vtab_cursor
  9928  	FiRowid      sqlite3_int64
  9929  	FiLang       amatch_langid
  9930  	FrLimit      amatch_cost
  9931  	FnBuf        int32
  9932  	FoomErr      int32
  9933  	FnWord       int32
  9934  	F__ccgo_pad1 [4]byte
  9935  	FzBuf        uintptr
  9936  	FzInput      uintptr
  9937  	FpVtab       uintptr
  9938  	FpAllWords   uintptr
  9939  	FpCurrent    uintptr
  9940  	FpCost       uintptr
  9941  	FpWord       uintptr
  9942  }
  9943  
  9944  type amatch_cursor = amatch_cursor1
  9945  type amatch_rule1 = struct {
  9946  	FpNext       uintptr
  9947  	FzFrom       uintptr
  9948  	FrCost       amatch_cost
  9949  	FiLang       amatch_langid
  9950  	FnFrom       amatch_len
  9951  	FnTo         amatch_len
  9952  	FzTo         [4]int8
  9953  	F__ccgo_pad1 [2]byte
  9954  }
  9955  
  9956  type amatch_rule = amatch_rule1
  9957  type amatch_word1 = struct {
  9958  	FpNext  uintptr
  9959  	FsCost  amatch_avl
  9960  	FsWord  amatch_avl
  9961  	FrCost  amatch_cost
  9962  	FiSeq   int32
  9963  	FzCost  [10]int8
  9964  	FnMatch int16
  9965  	FzWord  [4]int8
  9966  }
  9967  
  9968  type amatch_word = amatch_word1
  9969  type amatch_avl1 = struct {
  9970  	FpWord       uintptr
  9971  	FzKey        uintptr
  9972  	FpBefore     uintptr
  9973  	FpAfter      uintptr
  9974  	FpUp         uintptr
  9975  	Fheight      int16
  9976  	Fimbalance   int16
  9977  	F__ccgo_pad1 [4]byte
  9978  }
  9979  
  9980  type amatch_avl = amatch_avl1
  9981  
  9982  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
  9983  	var hBefore int16
  9984  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9985  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
  9986  	} else {
  9987  		hBefore = int16(0)
  9988  	}
  9989  	var hAfter int16
  9990  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
  9991  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
  9992  	} else {
  9993  		hAfter = int16(0)
  9994  	}
  9995  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
  9996  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
  9997  		if int32(hBefore) > int32(hAfter) {
  9998  			return int32(hBefore)
  9999  		}
 10000  		return int32(hAfter)
 10001  	}() + 1)
 10002  }
 10003  
 10004  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 10005  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
 10006  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
 10007  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10008  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
 10009  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
 10010  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
 10011  	if pY != 0 {
 10012  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10013  	}
 10014  	amatchAvlRecomputeHeight(tls, pP)
 10015  	amatchAvlRecomputeHeight(tls, pB)
 10016  	return pB
 10017  }
 10018  
 10019  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 10020  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
 10021  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
 10022  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10023  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
 10024  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
 10025  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
 10026  	if pY != 0 {
 10027  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10028  	}
 10029  	amatchAvlRecomputeHeight(tls, pP)
 10030  	amatchAvlRecomputeHeight(tls, pA)
 10031  	return pA
 10032  }
 10033  
 10034  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 10035  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
 10036  	if pUp == uintptr(0) {
 10037  		return pp
 10038  	}
 10039  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 10040  		return pUp + 24
 10041  	}
 10042  	return pUp + 16
 10043  }
 10044  
 10045  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 10046  	bp := tls.Alloc(8)
 10047  	defer tls.Free(8)
 10048  	*(*uintptr)(unsafe.Pointer(bp)) = p
 10049  
 10050  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 10051  	var pp uintptr
 10052  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 10053  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 10054  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 10055  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 10056  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 10057  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
 10058  			}
 10059  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10060  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10061  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 10062  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 10063  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 10064  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
 10065  			}
 10066  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10067  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10068  		}
 10069  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 10070  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 10071  	}
 10072  	return pTop
 10073  }
 10074  
 10075  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
 10076  	var c int32
 10077  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
 10078  		if c < 0 {
 10079  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10080  		} else {
 10081  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10082  		}
 10083  	}
 10084  	return p
 10085  }
 10086  
 10087  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 10088  	if p != 0 {
 10089  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10090  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10091  		}
 10092  	}
 10093  	return p
 10094  }
 10095  
 10096  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 10097  	var c int32
 10098  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 10099  	if p == uintptr(0) {
 10100  		p = pNew
 10101  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 10102  	} else {
 10103  		for p != 0 {
 10104  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
 10105  			if c < 0 {
 10106  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10107  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10108  				} else {
 10109  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
 10110  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10111  					break
 10112  				}
 10113  			} else if c > 0 {
 10114  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10115  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10116  				} else {
 10117  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
 10118  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10119  					break
 10120  				}
 10121  			} else {
 10122  				return p
 10123  			}
 10124  		}
 10125  	}
 10126  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 10127  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 10128  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 10129  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 10130  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
 10131  
 10132  	return uintptr(0)
 10133  }
 10134  
 10135  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
 10136  	var ppParent uintptr
 10137  	var pBalance uintptr = uintptr(0)
 10138  
 10139  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
 10140  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10141  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
 10142  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10143  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
 10144  		var pX uintptr
 10145  		var pY uintptr
 10146  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10147  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
 10148  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10149  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10150  		}
 10151  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10152  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
 10153  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10154  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
 10155  		} else {
 10156  			pBalance = pX
 10157  		}
 10158  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10159  		if pY != 0 {
 10160  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
 10161  		}
 10162  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10163  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
 10164  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
 10165  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10166  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10167  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10168  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10169  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10170  	}
 10171  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
 10172  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
 10173  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
 10174  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
 10175  
 10176  }
 10177  
 10178  type amatch_cost = int32
 10179  type amatch_len = int8
 10180  type amatch_langid = int32
 10181  
 10182  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 10183  	bp := tls.Alloc(32)
 10184  	defer tls.Free(32)
 10185  
 10186  	var pTail uintptr
 10187  
 10188  	pTail = bp
 10189  	for pA != 0 && pB != 0 {
 10190  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
 10191  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10192  			pTail = pA
 10193  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
 10194  		} else {
 10195  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10196  			pTail = pB
 10197  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
 10198  		}
 10199  	}
 10200  	if pA == uintptr(0) {
 10201  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10202  	} else {
 10203  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10204  	}
 10205  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
 10206  }
 10207  
 10208  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 10209  	bp := tls.Alloc(48)
 10210  	defer tls.Free(48)
 10211  
 10212  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 10213  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 10214  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 10215  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 10216  
 10217  	var rc int32 = SQLITE_OK
 10218  	var nFrom int32
 10219  	var nTo int32
 10220  	var pRule uintptr = uintptr(0)
 10221  
 10222  	if zFrom == uintptr(0) {
 10223  		zFrom = ts + 584
 10224  	}
 10225  	if zTo == uintptr(0) {
 10226  		zTo = ts + 584
 10227  	}
 10228  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 10229  	nTo = int32(libc.Xstrlen(tls, zTo))
 10230  
 10231  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 10232  		if int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zFrom + 1))) == 0 {
 10233  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 10234  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 10235  			}
 10236  		}
 10237  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 10238  		return SQLITE_OK
 10239  	}
 10240  
 10241  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 10242  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 10243  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 10244  		rc = SQLITE_ERROR
 10245  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 10246  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 10247  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 10248  		rc = SQLITE_ERROR
 10249  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 10250  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 10251  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 10252  		rc = SQLITE_ERROR
 10253  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 10254  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 10255  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 10256  		}
 10257  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 10258  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 10259  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 10260  		}
 10261  	} else {
 10262  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 10263  		if pRule == uintptr(0) {
 10264  			rc = SQLITE_NOMEM
 10265  		} else {
 10266  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})))
 10267  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 10268  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 10269  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 10270  			libc.Xmemcpy(tls, pRule+26, zTo, uint64(nTo+1))
 10271  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 10272  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 10273  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 10274  		}
 10275  	}
 10276  
 10277  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 10278  	return rc
 10279  }
 10280  
 10281  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 10282  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 10283  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 10284  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 10285  		sqlite3.Xsqlite3_free(tls, pRule)
 10286  	}
 10287  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 10288  }
 10289  
 10290  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 10291  	bp := tls.Alloc(192)
 10292  	defer tls.Free(192)
 10293  
 10294  	var rc int32 = SQLITE_OK
 10295  	var zSql uintptr
 10296  	var pHead uintptr = uintptr(0)
 10297  
 10298  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 10299  	if zSql == uintptr(0) {
 10300  		rc = SQLITE_NOMEM
 10301  	} else {
 10302  		var rc2 int32
 10303  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 10304  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 10305  		if rc != SQLITE_OK {
 10306  			*(*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)))
 10307  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 10308  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 10309  				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)))))
 10310  			rc = SQLITE_ERROR
 10311  		} else {
 10312  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 10313  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 10314  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 10315  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 10316  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 10317  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 10318  				}
 10319  			}
 10320  		}
 10321  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 10322  		if rc == SQLITE_OK {
 10323  			rc = rc2
 10324  		}
 10325  	}
 10326  	sqlite3.Xsqlite3_free(tls, zSql)
 10327  
 10328  	if rc == SQLITE_OK {
 10329  		var i uint32
 10330  		var pX uintptr
 10331  
 10332  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10333  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10334  		}
 10335  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 10336  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 10337  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 10338  			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++ {
 10339  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10340  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10341  			}
 10342  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10343  		}
 10344  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 10345  		i = uint32(1)
 10346  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10347  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10348  		}
 10349  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 10350  	} else {
 10351  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 10352  	}
 10353  
 10354  	return rc
 10355  }
 10356  
 10357  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 10358  	var nIn sqlite3_int64
 10359  	var zOut uintptr
 10360  
 10361  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 10362  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 10363  	if zOut != 0 {
 10364  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 10365  
 10366  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 10367  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 10368  		} else {
 10369  			var iOut int32 = 0
 10370  			var iIn int32
 10371  
 10372  			if int32(q) == '[' {
 10373  				q = int8(']')
 10374  			}
 10375  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 10376  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 10377  					iIn++
 10378  				}
 10379  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 10380  			}
 10381  		}
 10382  
 10383  	}
 10384  	return zOut
 10385  }
 10386  
 10387  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 10388  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 10389  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10390  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 10391  	}
 10392  }
 10393  
 10394  func amatchFree(tls *libc.TLS, p uintptr) {
 10395  	if p != 0 {
 10396  		amatchFreeRules(tls, p)
 10397  		amatchVCheckClear(tls, p)
 10398  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 10399  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 10400  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 10401  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 10402  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 10403  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 10404  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 10405  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10406  		sqlite3.Xsqlite3_free(tls, p)
 10407  	}
 10408  }
 10409  
 10410  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10411  	var p uintptr = pVtab
 10412  
 10413  	amatchFree(tls, p)
 10414  	return SQLITE_OK
 10415  }
 10416  
 10417  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 10418  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 10419  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 10420  	var i int32
 10421  	if nStr < nKey+1 {
 10422  		return uintptr(0)
 10423  	}
 10424  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 10425  		return uintptr(0)
 10426  	}
 10427  	for i = nKey; __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))), uint64(X_CTYPE_S)) != 0; i++ {
 10428  	}
 10429  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 10430  		return uintptr(0)
 10431  	}
 10432  	i++
 10433  	for __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))), uint64(X_CTYPE_S)) != 0 {
 10434  		i++
 10435  	}
 10436  	return zStr + uintptr(i)
 10437  }
 10438  
 10439  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10440  	bp := tls.Alloc(32)
 10441  	defer tls.Free(32)
 10442  
 10443  	var rc int32
 10444  	var pNew uintptr
 10445  	var zModule uintptr
 10446  	var zDb uintptr
 10447  	var zVal uintptr
 10448  	var i int32
 10449  	rc = SQLITE_OK
 10450  	pNew = uintptr(0)
 10451  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 10452  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 10453  
 10454  	_ = pAux
 10455  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10456  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 10457  	if !(pNew == uintptr(0)) {
 10458  		goto __1
 10459  	}
 10460  	return SQLITE_NOMEM
 10461  __1:
 10462  	;
 10463  	rc = SQLITE_NOMEM
 10464  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10465  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 10466  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 10467  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 10468  		goto __2
 10469  	}
 10470  	goto amatchConnectError
 10471  __2:
 10472  	;
 10473  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 10474  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 10475  		goto __3
 10476  	}
 10477  	goto amatchConnectError
 10478  __3:
 10479  	;
 10480  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 10481  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 10482  		goto __4
 10483  	}
 10484  	goto amatchConnectError
 10485  __4:
 10486  	;
 10487  	i = 3
 10488  __5:
 10489  	if !(i < argc) {
 10490  		goto __7
 10491  	}
 10492  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10493  	if !(zVal != 0) {
 10494  		goto __8
 10495  	}
 10496  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 10497  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 10498  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 10499  		goto __9
 10500  	}
 10501  	goto amatchConnectError
 10502  __9:
 10503  	;
 10504  	goto __6
 10505  __8:
 10506  	;
 10507  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10508  	if !(zVal != 0) {
 10509  		goto __10
 10510  	}
 10511  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 10512  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 10513  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 10514  		goto __11
 10515  	}
 10516  	goto amatchConnectError
 10517  __11:
 10518  	;
 10519  	goto __6
 10520  __10:
 10521  	;
 10522  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10523  	if !(zVal != 0) {
 10524  		goto __12
 10525  	}
 10526  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 10527  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 10528  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 10529  		goto __13
 10530  	}
 10531  	goto amatchConnectError
 10532  __13:
 10533  	;
 10534  	goto __6
 10535  __12:
 10536  	;
 10537  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10538  	if !(zVal != 0) {
 10539  		goto __14
 10540  	}
 10541  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 10542  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 10543  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10544  		goto __15
 10545  	}
 10546  	goto amatchConnectError
 10547  __15:
 10548  	;
 10549  	goto __6
 10550  __14:
 10551  	;
 10552  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 10553  	amatchFree(tls, pNew)
 10554  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10555  	return SQLITE_ERROR
 10556  	goto __6
 10557  __6:
 10558  	i++
 10559  	goto __5
 10560  	goto __7
 10561  __7:
 10562  	;
 10563  	rc = SQLITE_OK
 10564  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10565  		goto __16
 10566  	}
 10567  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 10568  	rc = SQLITE_ERROR
 10569  	goto __17
 10570  __16:
 10571  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 10572  __17:
 10573  	;
 10574  	if !(rc == SQLITE_OK) {
 10575  		goto __18
 10576  	}
 10577  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 10578  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10579  		ts+3599)
 10580  __18:
 10581  	;
 10582  	if !(rc != SQLITE_OK) {
 10583  		goto __19
 10584  	}
 10585  	amatchFree(tls, pNew)
 10586  __19:
 10587  	;
 10588  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 10589  	return rc
 10590  
 10591  amatchConnectError:
 10592  	amatchFree(tls, pNew)
 10593  	return rc
 10594  }
 10595  
 10596  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 10597  	var p uintptr = pVTab
 10598  	var pCur uintptr
 10599  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 10600  	if pCur == uintptr(0) {
 10601  		return SQLITE_NOMEM
 10602  	}
 10603  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})))
 10604  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 10605  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10606  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 10607  	return SQLITE_OK
 10608  }
 10609  
 10610  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 10611  	var pWord uintptr
 10612  	var pNextWord uintptr
 10613  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 10614  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 10615  		sqlite3.Xsqlite3_free(tls, pWord)
 10616  	}
 10617  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 10618  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 10619  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 10620  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10621  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 10622  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10623  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 10624  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 10625  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 10626  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 10627  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 10628  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 10629  }
 10630  
 10631  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 10632  	var pCur uintptr = cur
 10633  	amatchClearCursor(tls, pCur)
 10634  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 10635  	sqlite3.Xsqlite3_free(tls, pCur)
 10636  	return SQLITE_OK
 10637  }
 10638  
 10639  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 10640  	*(*int8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 10641  	*(*int8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 10642  	*(*int8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 10643  	*(*int8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 10644  }
 10645  
 10646  var a = *(*[65]int8)(unsafe.Pointer(ts + 3666))
 10647  
 10648  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 10649  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 10650  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 10651  	*(*int8)(unsafe.Pointer(pWord + 112 + 8)) = int8(0)
 10652  }
 10653  
 10654  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 10655  	for int32(libc.AssignPtrInt8(libc.PostIncUintptr(&dest, 1), *(*int8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 10656  	}
 10657  }
 10658  
 10659  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 10660  	for *(*int8)(unsafe.Pointer(dest)) != 0 {
 10661  		dest++
 10662  	}
 10663  	amatchStrcpy(tls, dest, src)
 10664  }
 10665  
 10666  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 10667  	bp := tls.Alloc(4)
 10668  	defer tls.Free(4)
 10669  
 10670  	var pWord uintptr
 10671  	var pNode uintptr
 10672  	var pOther uintptr
 10673  	_ = pOther
 10674  	var nBase int32
 10675  	var nTail int32
 10676  
 10677  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 10678  		return
 10679  	}
 10680  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 10681  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 10682  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 10683  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 10684  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 10685  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 10686  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10687  			return
 10688  		}
 10689  	}
 10690  	amatchEncodeInt(tls, nMatch, bp)
 10691  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2))
 10692  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase))
 10693  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1))
 10694  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10695  	if pNode != 0 {
 10696  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10697  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 10698  			amatchAvlRemove(tls, pCur+80, pWord+8)
 10699  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10700  			amatchWriteCost(tls, pWord)
 10701  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10702  			_ = pOther
 10703  		}
 10704  		return
 10705  	}
 10706  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 10707  	if pWord == uintptr(0) {
 10708  		return
 10709  	}
 10710  	libc.Xmemset(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})))
 10711  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10712  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 10713  	amatchWriteCost(tls, pWord)
 10714  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 10715  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 10716  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 10717  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 10718  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 10719  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10720  	_ = pOther
 10721  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 10722  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 10723  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10724  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 10725  	_ = pOther
 10726  }
 10727  
 10728  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 10729  	bp := tls.Alloc(80)
 10730  	defer tls.Free(80)
 10731  
 10732  	var pCur uintptr = cur
 10733  	var pWord uintptr = uintptr(0)
 10734  	var pNode uintptr
 10735  	var isMatch int32 = 0
 10736  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 10737  	var nWord int32
 10738  	var rc int32
 10739  	var i int32
 10740  	var zW uintptr
 10741  	var pRule uintptr
 10742  	var zBuf uintptr = uintptr(0)
 10743  	var nBuf int8 = int8(0)
 10744  
 10745  	var nNextIn int32
 10746  
 10747  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 10748  		var zSql uintptr
 10749  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*int8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 10750  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10751  				ts+3731,
 10752  				libc.VaList(bp, ts+3753,
 10753  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10754  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 10755  		} else {
 10756  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10757  				ts+3792,
 10758  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10759  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 10760  		}
 10761  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 10762  		sqlite3.Xsqlite3_free(tls, zSql)
 10763  		if rc != 0 {
 10764  			return rc
 10765  		}
 10766  	}
 10767  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10768  
 10769  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 10770  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 10771  		if pNode == uintptr(0) {
 10772  			pWord = uintptr(0)
 10773  			break
 10774  		}
 10775  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10776  		amatchAvlRemove(tls, pCur+80, pWord+8)
 10777  
 10778  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 10779  		if nWord+20 > int32(nBuf) {
 10780  			nBuf = int8(nWord + 100)
 10781  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 10782  			if zBuf == uintptr(0) {
 10783  				return SQLITE_NOMEM
 10784  			}
 10785  		}
 10786  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 10787  		*(*int8)(unsafe.Pointer(bp + 64)) = int8(0)
 10788  		*(*int8)(unsafe.Pointer(bp + 72)) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 10789  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 {
 10790  			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++ {
 10791  				*(*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)))
 10792  			}
 10793  			*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = int8(0)
 10794  			nNextIn = i
 10795  		} else {
 10796  			nNextIn = 0
 10797  		}
 10798  
 10799  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*int8)(unsafe.Pointer(bp + 72))) != '*' {
 10800  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10801  			amatchStrcat(tls, zBuf, bp+72)
 10802  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 10803  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10804  			if rc == SQLITE_ROW {
 10805  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10806  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 10807  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 10808  				}
 10809  			}
 10810  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10811  		}
 10812  
 10813  		for 1 != 0 {
 10814  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10815  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10816  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 10817  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10818  			if rc != SQLITE_ROW {
 10819  				break
 10820  			}
 10821  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10822  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10823  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 10824  				break
 10825  			}
 10826  			if int32(*(*int8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*int8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 10827  				int32(*(*int8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 10828  				isMatch = 1
 10829  				*(*int8)(unsafe.Pointer(bp + 72)) = int8(0)
 10830  				nNextIn = 0
 10831  				break
 10832  			}
 10833  			*(*int8)(unsafe.Pointer(bp + 64)) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord)))
 10834  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 10835  				*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 10836  			}
 10837  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = int8(0)
 10838  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10839  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 10840  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 10841  					zBuf, bp+64)
 10842  			}
 10843  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 10844  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10845  					zBuf, bp+64)
 10846  			}
 10847  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 10848  				break
 10849  			}
 10850  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 10851  		}
 10852  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10853  
 10854  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 10855  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10856  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10857  				zBuf, ts+584)
 10858  		}
 10859  
 10860  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 10861  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 10862  				continue
 10863  			}
 10864  			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 {
 10865  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 10866  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 10867  			}
 10868  		}
 10869  	}
 10870  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 10871  	sqlite3.Xsqlite3_free(tls, zBuf)
 10872  	return SQLITE_OK
 10873  }
 10874  
 10875  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 10876  	bp := tls.Alloc(8)
 10877  	defer tls.Free(8)
 10878  
 10879  	var pCur uintptr = pVtabCursor
 10880  	var zWord uintptr = ts + 3840
 10881  	var idx int32
 10882  
 10883  	amatchClearCursor(tls, pCur)
 10884  	idx = 0
 10885  	if idxNum&1 != 0 {
 10886  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 10887  		idx++
 10888  	}
 10889  	if idxNum&2 != 0 {
 10890  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10891  		idx++
 10892  	}
 10893  	if idxNum&4 != 0 {
 10894  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10895  		idx++
 10896  	}
 10897  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 10898  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 10899  		return SQLITE_NOMEM
 10900  	}
 10901  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 10902  	amatchNext(tls, pVtabCursor)
 10903  
 10904  	return SQLITE_OK
 10905  }
 10906  
 10907  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 10908  	var pCur uintptr = cur
 10909  	switch i {
 10910  	case AMATCH_COL_WORD:
 10911  		{
 10912  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 10913  			break
 10914  
 10915  		}
 10916  	case AMATCH_COL_DISTANCE:
 10917  		{
 10918  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 10919  			break
 10920  
 10921  		}
 10922  	case AMATCH_COL_LANGUAGE:
 10923  		{
 10924  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10925  			break
 10926  
 10927  		}
 10928  	case AMATCH_COL_NWORD:
 10929  		{
 10930  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 10931  			break
 10932  
 10933  		}
 10934  	default:
 10935  		{
 10936  			sqlite3.Xsqlite3_result_null(tls, ctx)
 10937  			break
 10938  
 10939  		}
 10940  	}
 10941  	return SQLITE_OK
 10942  }
 10943  
 10944  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 10945  	var pCur uintptr = cur
 10946  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 10947  	return SQLITE_OK
 10948  }
 10949  
 10950  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 10951  	var pCur uintptr = cur
 10952  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 10953  }
 10954  
 10955  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 10956  	var iPlan int32 = 0
 10957  	var iDistTerm int32 = -1
 10958  	var iLangTerm int32 = -1
 10959  	var i int32
 10960  	var pConstraint uintptr
 10961  
 10962  	_ = tab
 10963  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 10964  	i = 0
 10965  __1:
 10966  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 10967  		goto __3
 10968  	}
 10969  	{
 10970  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 10971  			goto __2
 10972  		}
 10973  		if iPlan&1 == 0 &&
 10974  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 10975  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 10976  			iPlan = iPlan | 1
 10977  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 10978  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10979  		}
 10980  		if iPlan&2 == 0 &&
 10981  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 10982  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 10983  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 10984  			iPlan = iPlan | 2
 10985  			iDistTerm = i
 10986  		}
 10987  		if iPlan&4 == 0 &&
 10988  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 10989  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 10990  			iPlan = iPlan | 4
 10991  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10992  			iLangTerm = i
 10993  		}
 10994  
 10995  	}
 10996  	goto __2
 10997  __2:
 10998  	i++
 10999  	pConstraint += 12
 11000  	goto __1
 11001  	goto __3
 11002  __3:
 11003  	;
 11004  	if iPlan&2 != 0 {
 11005  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 11006  	}
 11007  	if iPlan&4 != 0 {
 11008  		var idx int32 = 1
 11009  		if iPlan&1 != 0 {
 11010  			idx++
 11011  		}
 11012  		if iPlan&2 != 0 {
 11013  			idx++
 11014  		}
 11015  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 11016  	}
 11017  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 11018  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 11019  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 11020  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 11021  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 11022  	}
 11023  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 11024  
 11025  	return SQLITE_OK
 11026  }
 11027  
 11028  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 11029  	bp := tls.Alloc(24)
 11030  	defer tls.Free(24)
 11031  
 11032  	var p uintptr = pVTab
 11033  	var zCmd uintptr
 11034  	_ = pRowid
 11035  	if argc == 1 {
 11036  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 11037  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11038  		return SQLITE_ERROR
 11039  	}
 11040  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 11041  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 11042  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11043  		return SQLITE_ERROR
 11044  	}
 11045  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 11046  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 11047  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 11048  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11049  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11050  		return SQLITE_ERROR
 11051  	}
 11052  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 11053  	if zCmd == uintptr(0) {
 11054  		return SQLITE_OK
 11055  	}
 11056  
 11057  	return SQLITE_OK
 11058  }
 11059  
 11060  var amatchModule = sqlite3_module{
 11061  	FxCreate:     0,
 11062  	FxConnect:    0,
 11063  	FxBestIndex:  0,
 11064  	FxDisconnect: 0,
 11065  	FxDestroy:    0,
 11066  	FxOpen:       0,
 11067  	FxClose:      0,
 11068  	FxFilter:     0,
 11069  	FxNext:       0,
 11070  	FxEof:        0,
 11071  	FxColumn:     0,
 11072  	FxRowid:      0,
 11073  	FxUpdate:     0,
 11074  }
 11075  
 11076  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11077  	var rc int32 = SQLITE_OK
 11078  	_ = pApi
 11079  
 11080  	_ = pzErrMsg
 11081  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 11082  	return rc
 11083  }
 11084  
 11085  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 11086  
 11087  type carray_bind1 = struct {
 11088  	FaData  uintptr
 11089  	FnData  int32
 11090  	FmFlags int32
 11091  	FxDel   uintptr
 11092  }
 11093  
 11094  type carray_bind = carray_bind1
 11095  
 11096  type carray_cursor1 = struct {
 11097  	Fbase        sqlite3_vtab_cursor
 11098  	FiRowid      sqlite3_int64
 11099  	FpPtr        uintptr
 11100  	FiCnt        sqlite3_int64
 11101  	FeType       uint8
 11102  	F__ccgo_pad1 [7]byte
 11103  }
 11104  
 11105  type carray_cursor = carray_cursor1
 11106  
 11107  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 11108  	var pNew uintptr
 11109  	var rc int32
 11110  
 11111  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11112  		ts+3985)
 11113  	if rc == SQLITE_OK {
 11114  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 11115  		if pNew == uintptr(0) {
 11116  			return SQLITE_NOMEM
 11117  		}
 11118  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 11119  	}
 11120  	return rc
 11121  }
 11122  
 11123  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 11124  	sqlite3.Xsqlite3_free(tls, pVtab)
 11125  	return SQLITE_OK
 11126  }
 11127  
 11128  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 11129  	var pCur uintptr
 11130  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 11131  	if pCur == uintptr(0) {
 11132  		return SQLITE_NOMEM
 11133  	}
 11134  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})))
 11135  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11136  	return SQLITE_OK
 11137  }
 11138  
 11139  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 11140  	sqlite3.Xsqlite3_free(tls, cur)
 11141  	return SQLITE_OK
 11142  }
 11143  
 11144  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 11145  	var pCur uintptr = cur
 11146  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 11147  	return SQLITE_OK
 11148  }
 11149  
 11150  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11151  	var pCur uintptr = cur
 11152  	var x sqlite3_int64 = int64(0)
 11153  	switch i {
 11154  	case CARRAY_COLUMN_POINTER:
 11155  		return SQLITE_OK
 11156  	case CARRAY_COLUMN_COUNT:
 11157  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 11158  		break
 11159  	case CARRAY_COLUMN_CTYPE:
 11160  		{
 11161  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 11162  			return SQLITE_OK
 11163  
 11164  		}
 11165  	default:
 11166  		{
 11167  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 11168  			case CARRAY_INT32:
 11169  				{
 11170  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11171  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 11172  					return SQLITE_OK
 11173  
 11174  				}
 11175  			case CARRAY_INT64:
 11176  				{
 11177  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11178  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11179  					return SQLITE_OK
 11180  
 11181  				}
 11182  			case CARRAY_DOUBLE:
 11183  				{
 11184  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11185  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11186  					return SQLITE_OK
 11187  
 11188  				}
 11189  			case CARRAY_TEXT:
 11190  				{
 11191  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11192  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 11193  					return SQLITE_OK
 11194  
 11195  				}
 11196  			}
 11197  
 11198  		}
 11199  	}
 11200  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 11201  	return SQLITE_OK
 11202  }
 11203  
 11204  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11205  	var pCur uintptr = cur
 11206  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 11207  	return SQLITE_OK
 11208  }
 11209  
 11210  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 11211  	var pCur uintptr = cur
 11212  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 11213  }
 11214  
 11215  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11216  	bp := tls.Alloc(8)
 11217  	defer tls.Free(8)
 11218  
 11219  	var pCur uintptr = pVtabCursor
 11220  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 11221  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 11222  	switch idxNum {
 11223  	case 1:
 11224  		{
 11225  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 11226  			if pBind == uintptr(0) {
 11227  				break
 11228  			}
 11229  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 11230  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 11231  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 11232  			break
 11233  
 11234  		}
 11235  	case 2:
 11236  		fallthrough
 11237  	case 3:
 11238  		{
 11239  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 11240  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 11241  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 11242  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 11243  				}
 11244  				return int64(0)
 11245  			}()
 11246  			if idxNum < 3 {
 11247  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 11248  			} else {
 11249  				var i uint8
 11250  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 11251  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11252  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 11253  						break
 11254  					}
 11255  				}
 11256  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 11257  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11258  						ts+4067, libc.VaList(bp, zType))
 11259  					return SQLITE_ERROR
 11260  				} else {
 11261  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 11262  				}
 11263  			}
 11264  			break
 11265  
 11266  		}
 11267  	}
 11268  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 11269  	return SQLITE_OK
 11270  }
 11271  
 11272  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11273  	var i int32
 11274  	var ptrIdx int32 = -1
 11275  	var cntIdx int32 = -1
 11276  	var ctypeIdx int32 = -1
 11277  
 11278  	var pConstraint uintptr
 11279  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11280  	i = 0
 11281  __1:
 11282  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11283  		goto __3
 11284  	}
 11285  	{
 11286  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11287  			goto __2
 11288  		}
 11289  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 11290  			goto __2
 11291  		}
 11292  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 11293  		case CARRAY_COLUMN_POINTER:
 11294  			ptrIdx = i
 11295  			break
 11296  		case CARRAY_COLUMN_COUNT:
 11297  			cntIdx = i
 11298  			break
 11299  		case CARRAY_COLUMN_CTYPE:
 11300  			ctypeIdx = i
 11301  			break
 11302  		}
 11303  
 11304  	}
 11305  	goto __2
 11306  __2:
 11307  	i++
 11308  	pConstraint += 12
 11309  	goto __1
 11310  	goto __3
 11311  __3:
 11312  	;
 11313  	if ptrIdx >= 0 {
 11314  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 11315  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 11316  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 11317  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 11318  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 11319  		if cntIdx >= 0 {
 11320  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 11321  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 11322  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 11323  			if ctypeIdx >= 0 {
 11324  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 11325  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 11326  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 11327  			}
 11328  		}
 11329  	} else {
 11330  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 11331  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 11332  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 11333  	}
 11334  	return SQLITE_OK
 11335  }
 11336  
 11337  var carrayModule = sqlite3_module{
 11338  	FxConnect:    0,
 11339  	FxBestIndex:  0,
 11340  	FxDisconnect: 0,
 11341  	FxOpen:       0,
 11342  	FxClose:      0,
 11343  	FxFilter:     0,
 11344  	FxNext:       0,
 11345  	FxEof:        0,
 11346  	FxColumn:     0,
 11347  	FxRowid:      0,
 11348  }
 11349  
 11350  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 11351  	var p uintptr = pPtr
 11352  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 11353  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 11354  	}
 11355  	sqlite3.Xsqlite3_free(tls, p)
 11356  }
 11357  
 11358  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 11359  	var pNew uintptr
 11360  	var i int32
 11361  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 11362  	if pNew == uintptr(0) {
 11363  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 11364  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 11365  		}
 11366  		return SQLITE_NOMEM
 11367  	}
 11368  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 11369  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 11370  	if xDestroy == libc.UintptrFromInt32(-1) {
 11371  		var sz sqlite3_int64 = sqlite3_int64(nData)
 11372  		switch mFlags & 0x03 {
 11373  		case CARRAY_INT32:
 11374  			sz = sz * int64(4)
 11375  			break
 11376  			fallthrough
 11377  		case CARRAY_INT64:
 11378  			sz = sz * int64(8)
 11379  			break
 11380  			fallthrough
 11381  		case CARRAY_DOUBLE:
 11382  			sz = sz * int64(8)
 11383  			break
 11384  			fallthrough
 11385  		case CARRAY_TEXT:
 11386  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 11387  			break
 11388  		}
 11389  		if mFlags&0x03 == CARRAY_TEXT {
 11390  			for i = 0; i < nData; i++ {
 11391  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11392  				if z != 0 {
 11393  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 11394  				}
 11395  			}
 11396  		}
 11397  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 11398  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 11399  			sqlite3.Xsqlite3_free(tls, pNew)
 11400  			return SQLITE_NOMEM
 11401  		}
 11402  		if mFlags&0x03 == CARRAY_TEXT {
 11403  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 11404  			var z uintptr = az + uintptr(nData)*8
 11405  			for i = 0; i < nData; i++ {
 11406  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11407  				var n sqlite3_int64
 11408  				if zData == uintptr(0) {
 11409  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 11410  					continue
 11411  				}
 11412  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 11413  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 11414  				libc.Xmemcpy(tls, z, zData, uint64(n+int64(1)))
 11415  				z += uintptr(n + int64(1))
 11416  			}
 11417  		} else {
 11418  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz))
 11419  		}
 11420  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 11421  	} else {
 11422  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 11423  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 11424  	}
 11425  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 11426  }
 11427  
 11428  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11429  	bp := tls.Alloc(20)
 11430  	defer tls.Free(20)
 11431  
 11432  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11433  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 11434  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 11435  	} else {
 11436  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 11437  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 11438  	}
 11439  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 11440  }
 11441  
 11442  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11443  	var rc int32 = SQLITE_OK
 11444  	_ = pApi
 11445  
 11446  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 11447  	if rc == SQLITE_OK {
 11448  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 11449  			*(*uintptr)(unsafe.Pointer(&struct {
 11450  				f func(*libc.TLS, uintptr, int32, uintptr)
 11451  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 11452  	}
 11453  	return rc
 11454  }
 11455  
 11456  type CksmVfs = sqlite3_vfs1
 11457  type CksmFile1 = struct {
 11458  	Fbase        sqlite3_file
 11459  	FzFName      uintptr
 11460  	FcomputeCksm int8
 11461  	FverifyCksm  int8
 11462  	FisWal       int8
 11463  	FinCkpt      int8
 11464  	F__ccgo_pad1 [4]byte
 11465  	FpPartner    uintptr
 11466  }
 11467  
 11468  type CksmFile = CksmFile1
 11469  
 11470  type u8 = uint8
 11471  
 11472  var cksm_vfs = sqlite3_vfs{
 11473  	FiVersion:          3,
 11474  	FmxPathname:        1024,
 11475  	FzName:             ts + 4097,
 11476  	FxOpen:             0,
 11477  	FxDelete:           0,
 11478  	FxAccess:           0,
 11479  	FxFullPathname:     0,
 11480  	FxDlOpen:           0,
 11481  	FxDlError:          0,
 11482  	FxDlSym:            0,
 11483  	FxDlClose:          0,
 11484  	FxRandomness:       0,
 11485  	FxSleep:            0,
 11486  	FxCurrentTime:      0,
 11487  	FxGetLastError:     0,
 11488  	FxCurrentTimeInt64: 0,
 11489  	FxSetSystemCall:    0,
 11490  	FxGetSystemCall:    0,
 11491  	FxNextSystemCall:   0,
 11492  }
 11493  
 11494  var cksm_io_methods = sqlite3_io_methods{
 11495  	FiVersion:               3,
 11496  	FxClose:                 0,
 11497  	FxRead:                  0,
 11498  	FxWrite:                 0,
 11499  	FxTruncate:              0,
 11500  	FxSync:                  0,
 11501  	FxFileSize:              0,
 11502  	FxLock:                  0,
 11503  	FxUnlock:                0,
 11504  	FxCheckReservedLock:     0,
 11505  	FxFileControl:           0,
 11506  	FxSectorSize:            0,
 11507  	FxDeviceCharacteristics: 0,
 11508  	FxShmMap:                0,
 11509  	FxShmLock:               0,
 11510  	FxShmBarrier:            0,
 11511  	FxShmUnmap:              0,
 11512  	FxFetch:                 0,
 11513  	FxUnfetch:               0,
 11514  }
 11515  
 11516  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 11517  	bp := tls.Alloc(12)
 11518  	defer tls.Free(12)
 11519  
 11520  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 11521  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 11522  	var aData uintptr = a
 11523  	var aEnd uintptr = a + uintptr(nByte)
 11524  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 11525  
 11526  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 11527  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 11528  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 11529  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 11530  		}
 11531  	} else {
 11532  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 11533  			*(*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))
 11534  			*(*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))
 11535  			aData += 4 * uintptr(2)
 11536  		}
 11537  		*(*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
 11538  		*(*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
 11539  	}
 11540  	libc.Xmemcpy(tls, aOut, bp+4, uint64(4))
 11541  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint64(4))
 11542  }
 11543  
 11544  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11545  	bp := tls.Alloc(8)
 11546  	defer tls.Free(8)
 11547  
 11548  	var nByte int32
 11549  	var data uintptr
 11550  
 11551  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11552  	if data == uintptr(0) {
 11553  		return
 11554  	}
 11555  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 11556  		return
 11557  	}
 11558  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11559  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 11560  		return
 11561  	}
 11562  	cksmCompute(tls, data, nByte-8, bp)
 11563  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 11564  }
 11565  
 11566  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 11567  	var p uintptr = pFile
 11568  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11569  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 11570  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 11571  	}
 11572  	pFile = pFile + uintptr(1)*32
 11573  	return (*struct {
 11574  		f func(*libc.TLS, uintptr) int32
 11575  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 11576  }
 11577  
 11578  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 11579  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 11580  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrInt8(p+17, int8(hasCorrectReserveSize))
 11581  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11582  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = int8(hasCorrectReserveSize)
 11583  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = int8(hasCorrectReserveSize)
 11584  		}
 11585  	}
 11586  }
 11587  
 11588  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11589  	bp := tls.Alloc(24)
 11590  	defer tls.Free(24)
 11591  
 11592  	var rc int32
 11593  	var p uintptr = pFile
 11594  	pFile = pFile + uintptr(1)*32
 11595  	rc = (*struct {
 11596  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11597  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 11598  	if rc == SQLITE_OK {
 11599  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11600  			var d uintptr = zBuf
 11601  			var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11602  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11603  		}
 11604  
 11605  		if iAmt >= 512 &&
 11606  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 11607  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11608  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 11609  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 11610  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 11611  					ts+4109,
 11612  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 11613  				rc = SQLITE_IOERR | int32(32)<<8
 11614  			}
 11615  		}
 11616  	}
 11617  	return rc
 11618  }
 11619  
 11620  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11621  	var p uintptr = pFile
 11622  	pFile = pFile + uintptr(1)*32
 11623  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11624  		var d uintptr = zBuf
 11625  		var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11626  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11627  	}
 11628  
 11629  	if iAmt >= 512 &&
 11630  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 11631  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11632  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 11633  	}
 11634  	return (*struct {
 11635  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11636  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 11637  }
 11638  
 11639  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 11640  	pFile = pFile + uintptr(1)*32
 11641  	return (*struct {
 11642  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 11643  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 11644  }
 11645  
 11646  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 11647  	pFile = pFile + uintptr(1)*32
 11648  	return (*struct {
 11649  		f func(*libc.TLS, uintptr, int32) int32
 11650  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 11651  }
 11652  
 11653  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 11654  	var p uintptr = pFile
 11655  	pFile = p + uintptr(1)*32
 11656  	return (*struct {
 11657  		f func(*libc.TLS, uintptr, uintptr) int32
 11658  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 11659  }
 11660  
 11661  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11662  	pFile = pFile + uintptr(1)*32
 11663  	return (*struct {
 11664  		f func(*libc.TLS, uintptr, int32) int32
 11665  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 11666  }
 11667  
 11668  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11669  	pFile = pFile + uintptr(1)*32
 11670  	return (*struct {
 11671  		f func(*libc.TLS, uintptr, int32) int32
 11672  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 11673  }
 11674  
 11675  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 11676  	pFile = pFile + uintptr(1)*32
 11677  	return (*struct {
 11678  		f func(*libc.TLS, uintptr, uintptr) int32
 11679  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 11680  }
 11681  
 11682  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 11683  	bp := tls.Alloc(16)
 11684  	defer tls.Free(16)
 11685  
 11686  	var rc int32
 11687  	var p uintptr = pFile
 11688  	pFile = pFile + uintptr(1)*32
 11689  	if op == SQLITE_FCNTL_PRAGMA {
 11690  		var azArg uintptr = pArg
 11691  
 11692  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 11693  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 11694  			if zArg != uintptr(0) {
 11695  				if int32(*(*int8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*int8)(unsafe.Pointer(zArg))) <= '9' ||
 11696  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 11697  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 11698  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 11699  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 11700  				} else {
 11701  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = int8(0)
 11702  				}
 11703  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11704  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 11705  				}
 11706  			}
 11707  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 11708  			return SQLITE_OK
 11709  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 11710  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 11711  			return SQLITE_OK
 11712  		}
 11713  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 11714  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = int8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 11715  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11716  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 11717  		}
 11718  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 11719  		var ppFile uintptr = pArg
 11720  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 11721  		return SQLITE_OK
 11722  	}
 11723  	rc = (*struct {
 11724  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11725  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 11726  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 11727  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 11728  	}
 11729  	return rc
 11730  }
 11731  
 11732  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 11733  	pFile = pFile + uintptr(1)*32
 11734  	return (*struct {
 11735  		f func(*libc.TLS, uintptr) int32
 11736  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 11737  }
 11738  
 11739  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 11740  	pFile = pFile + uintptr(1)*32
 11741  	return (*struct {
 11742  		f func(*libc.TLS, uintptr) int32
 11743  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 11744  }
 11745  
 11746  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 11747  	pFile = pFile + uintptr(1)*32
 11748  	return (*struct {
 11749  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 11750  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 11751  }
 11752  
 11753  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 11754  	pFile = pFile + uintptr(1)*32
 11755  	return (*struct {
 11756  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 11757  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 11758  }
 11759  
 11760  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 11761  	pFile = pFile + uintptr(1)*32
 11762  	(*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)
 11763  }
 11764  
 11765  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 11766  	pFile = pFile + uintptr(1)*32
 11767  	return (*struct {
 11768  		f func(*libc.TLS, uintptr, int32) int32
 11769  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 11770  }
 11771  
 11772  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 11773  	var p uintptr = pFile
 11774  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 11775  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11776  		return SQLITE_OK
 11777  	}
 11778  	pFile = pFile + uintptr(1)*32
 11779  	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 {
 11780  		return (*struct {
 11781  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 11782  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 11783  	}
 11784  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11785  	return SQLITE_OK
 11786  }
 11787  
 11788  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 11789  	pFile = pFile + uintptr(1)*32
 11790  	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 {
 11791  		return (*struct {
 11792  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 11793  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 11794  	}
 11795  	return SQLITE_OK
 11796  }
 11797  
 11798  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 11799  	bp := tls.Alloc(8)
 11800  	defer tls.Free(8)
 11801  
 11802  	var p uintptr
 11803  	var pSubFile uintptr
 11804  	var pSubVfs uintptr
 11805  	var rc int32
 11806  
 11807  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11808  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 11809  		goto __1
 11810  	}
 11811  	return (*struct {
 11812  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11813  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 11814  __1:
 11815  	;
 11816  	p = pFile
 11817  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})))
 11818  	pSubFile = pFile + uintptr(1)*32
 11819  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 11820  	rc = (*struct {
 11821  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11822  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 11823  	if !(rc != 0) {
 11824  		goto __2
 11825  	}
 11826  	goto cksm_open_done
 11827  __2:
 11828  	;
 11829  	if !(flags&SQLITE_OPEN_WAL != 0) {
 11830  		goto __3
 11831  	}
 11832  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 11833  	rc = (*struct {
 11834  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11835  	})(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)
 11836  
 11837  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 11838  
 11839  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 11840  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(1)
 11841  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 11842  	goto __4
 11843  __3:
 11844  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(0)
 11845  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = int8(0)
 11846  __4:
 11847  	;
 11848  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 11849  cksm_open_done:
 11850  	if !(rc != 0) {
 11851  		goto __5
 11852  	}
 11853  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 11854  __5:
 11855  	;
 11856  	return rc
 11857  }
 11858  
 11859  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 11860  	return (*struct {
 11861  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 11862  	})(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)
 11863  }
 11864  
 11865  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 11866  	return (*struct {
 11867  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11868  	})(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)
 11869  }
 11870  
 11871  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 11872  	return (*struct {
 11873  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11874  	})(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)
 11875  }
 11876  
 11877  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 11878  	return (*struct {
 11879  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11880  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 11881  }
 11882  
 11883  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 11884  	(*struct {
 11885  		f func(*libc.TLS, uintptr, int32, uintptr)
 11886  	})(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)
 11887  }
 11888  
 11889  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 11890  	return (*struct {
 11891  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 11892  	})(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)
 11893  }
 11894  
 11895  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 11896  	(*struct {
 11897  		f func(*libc.TLS, uintptr, uintptr)
 11898  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 11899  }
 11900  
 11901  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 11902  	return (*struct {
 11903  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11904  	})(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)
 11905  }
 11906  
 11907  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 11908  	return (*struct {
 11909  		f func(*libc.TLS, uintptr, int32) int32
 11910  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 11911  }
 11912  
 11913  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 11914  	return (*struct {
 11915  		f func(*libc.TLS, uintptr, uintptr) int32
 11916  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 11917  }
 11918  
 11919  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 11920  	return (*struct {
 11921  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11922  	})(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)
 11923  }
 11924  
 11925  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 11926  	bp := tls.Alloc(8)
 11927  	defer tls.Free(8)
 11928  
 11929  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11930  	var rc int32
 11931  
 11932  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 11933  		rc = (*struct {
 11934  			f func(*libc.TLS, uintptr, uintptr) int32
 11935  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 11936  	} else {
 11937  		rc = (*struct {
 11938  			f func(*libc.TLS, uintptr, uintptr) int32
 11939  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 11940  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 11941  	}
 11942  	return rc
 11943  }
 11944  
 11945  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 11946  	return (*struct {
 11947  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 11948  	})(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)
 11949  }
 11950  
 11951  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 11952  	return (*struct {
 11953  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 11954  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11955  }
 11956  
 11957  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 11958  	return (*struct {
 11959  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11960  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11961  }
 11962  
 11963  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11964  	var rc int32
 11965  	if db == uintptr(0) {
 11966  		return SQLITE_OK
 11967  	}
 11968  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 11969  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 11970  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 11971  			f func(*libc.TLS, uintptr, int32, uintptr)
 11972  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 11973  	return rc
 11974  }
 11975  
 11976  func cksmRegisterVfs(tls *libc.TLS) int32 {
 11977  	var rc int32 = SQLITE_OK
 11978  	var pOrig uintptr
 11979  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 11980  		return SQLITE_OK
 11981  	}
 11982  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 11983  	if pOrig == uintptr(0) {
 11984  		return SQLITE_ERROR
 11985  	}
 11986  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 11987  	cksm_vfs.FpAppData = pOrig
 11988  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 11989  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 11990  	if rc == SQLITE_OK {
 11991  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 11992  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 11993  		}{cksmRegisterFunc})))
 11994  	}
 11995  	return rc
 11996  }
 11997  
 11998  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 11999  	_ = NotUsed
 12000  	return cksmRegisterVfs(tls)
 12001  }
 12002  
 12003  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 12004  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 12005  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 12006  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12007  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12008  		}{cksmRegisterFunc})))
 12009  	}
 12010  	return SQLITE_OK
 12011  }
 12012  
 12013  type closure_vtab1 = struct {
 12014  	Fbase          sqlite3_vtab
 12015  	FzDb           uintptr
 12016  	FzSelf         uintptr
 12017  	FzTableName    uintptr
 12018  	FzIdColumn     uintptr
 12019  	FzParentColumn uintptr
 12020  	Fdb            uintptr
 12021  	FnCursor       int32
 12022  	F__ccgo_pad1   [4]byte
 12023  }
 12024  
 12025  type closure_vtab = closure_vtab1
 12026  type closure_cursor1 = struct {
 12027  	Fbase          sqlite3_vtab_cursor
 12028  	FpVtab         uintptr
 12029  	FzTableName    uintptr
 12030  	FzIdColumn     uintptr
 12031  	FzParentColumn uintptr
 12032  	FpCurrent      uintptr
 12033  	FpClosure      uintptr
 12034  }
 12035  
 12036  type closure_cursor = closure_cursor1
 12037  type closure_queue1 = struct {
 12038  	FpFirst uintptr
 12039  	FpLast  uintptr
 12040  }
 12041  
 12042  type closure_queue = closure_queue1
 12043  type closure_avl1 = struct {
 12044  	Fid          sqlite3_int64
 12045  	FiGeneration int32
 12046  	F__ccgo_pad1 [4]byte
 12047  	FpList       uintptr
 12048  	FpBefore     uintptr
 12049  	FpAfter      uintptr
 12050  	FpUp         uintptr
 12051  	Fheight      int16
 12052  	Fimbalance   int16
 12053  	F__ccgo_pad2 [4]byte
 12054  }
 12055  
 12056  type closure_avl = closure_avl1
 12057  
 12058  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 12059  	var hBefore int16
 12060  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12061  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 12062  	} else {
 12063  		hBefore = int16(0)
 12064  	}
 12065  	var hAfter int16
 12066  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12067  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 12068  	} else {
 12069  		hAfter = int16(0)
 12070  	}
 12071  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 12072  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 12073  		if int32(hBefore) > int32(hAfter) {
 12074  			return int32(hBefore)
 12075  		}
 12076  		return int32(hAfter)
 12077  	}() + 1)
 12078  }
 12079  
 12080  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 12081  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 12082  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 12083  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12084  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 12085  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 12086  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 12087  	if pY != 0 {
 12088  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12089  	}
 12090  	closureAvlRecomputeHeight(tls, pP)
 12091  	closureAvlRecomputeHeight(tls, pB)
 12092  	return pB
 12093  }
 12094  
 12095  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 12096  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 12097  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 12098  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12099  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 12100  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 12101  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 12102  	if pY != 0 {
 12103  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12104  	}
 12105  	closureAvlRecomputeHeight(tls, pP)
 12106  	closureAvlRecomputeHeight(tls, pA)
 12107  	return pA
 12108  }
 12109  
 12110  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 12111  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12112  	if pUp == uintptr(0) {
 12113  		return pp
 12114  	}
 12115  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 12116  		return pUp + 32
 12117  	}
 12118  	return pUp + 24
 12119  }
 12120  
 12121  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 12122  	bp := tls.Alloc(8)
 12123  	defer tls.Free(8)
 12124  	*(*uintptr)(unsafe.Pointer(bp)) = p
 12125  
 12126  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 12127  	var pp uintptr
 12128  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 12129  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 12130  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 12131  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 12132  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 12133  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 12134  			}
 12135  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12136  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12137  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 12138  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 12139  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 12140  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 12141  			}
 12142  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12143  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12144  		}
 12145  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 12146  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 12147  	}
 12148  	return pTop
 12149  }
 12150  
 12151  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 12152  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 12153  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12154  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12155  		} else {
 12156  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12157  		}
 12158  	}
 12159  	return p
 12160  }
 12161  
 12162  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 12163  	if p != 0 {
 12164  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12165  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12166  		}
 12167  	}
 12168  	return p
 12169  }
 12170  
 12171  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 12172  	var pPrev uintptr = uintptr(0)
 12173  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 12174  		pPrev = p
 12175  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12176  	}
 12177  	if p != 0 && pPrev == uintptr(0) {
 12178  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 12179  	}
 12180  	return p
 12181  }
 12182  
 12183  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 12184  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 12185  	if p == uintptr(0) {
 12186  		p = pNew
 12187  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 12188  	} else {
 12189  		for p != 0 {
 12190  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12191  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12192  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12193  				} else {
 12194  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 12195  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12196  					break
 12197  				}
 12198  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 12199  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12200  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12201  				} else {
 12202  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 12203  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12204  					break
 12205  				}
 12206  			} else {
 12207  				return p
 12208  			}
 12209  		}
 12210  	}
 12211  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 12212  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 12213  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 12214  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 12215  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 12216  	return uintptr(0)
 12217  }
 12218  
 12219  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 12220  	if p != 0 {
 12221  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 12222  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12223  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 12224  	}
 12225  }
 12226  
 12227  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 12228  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 12229  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 12230  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 12231  	} else {
 12232  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 12233  	}
 12234  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 12235  }
 12236  
 12237  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 12238  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 12239  	if p != 0 {
 12240  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 12241  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 12242  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 12243  		}
 12244  	}
 12245  	return p
 12246  }
 12247  
 12248  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 12249  	var nIn sqlite3_int64
 12250  	var zOut uintptr
 12251  
 12252  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 12253  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 12254  	if zOut != 0 {
 12255  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 12256  
 12257  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 12258  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 12259  		} else {
 12260  			var iOut int32 = 0
 12261  			var iIn int32
 12262  
 12263  			if int32(q) == '[' {
 12264  				q = int8(']')
 12265  			}
 12266  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 12267  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 12268  					iIn++
 12269  				}
 12270  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 12271  			}
 12272  		}
 12273  
 12274  	}
 12275  	return zOut
 12276  }
 12277  
 12278  func closureFree(tls *libc.TLS, p uintptr) {
 12279  	if p != 0 {
 12280  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 12281  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 12282  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 12283  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 12284  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 12285  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12286  		sqlite3.Xsqlite3_free(tls, p)
 12287  	}
 12288  }
 12289  
 12290  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12291  	var p uintptr = pVtab
 12292  
 12293  	closureFree(tls, p)
 12294  	return SQLITE_OK
 12295  }
 12296  
 12297  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 12298  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 12299  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 12300  	var i int32
 12301  	if nStr < nKey+1 {
 12302  		return uintptr(0)
 12303  	}
 12304  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 12305  		return uintptr(0)
 12306  	}
 12307  	for i = nKey; __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))), uint64(X_CTYPE_S)) != 0; i++ {
 12308  	}
 12309  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 12310  		return uintptr(0)
 12311  	}
 12312  	i++
 12313  	for __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))), uint64(X_CTYPE_S)) != 0 {
 12314  		i++
 12315  	}
 12316  	return zStr + uintptr(i)
 12317  }
 12318  
 12319  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12320  	bp := tls.Alloc(24)
 12321  	defer tls.Free(24)
 12322  
 12323  	var rc int32
 12324  	var pNew uintptr
 12325  	var zDb uintptr
 12326  	var zVal uintptr
 12327  	var i int32
 12328  	rc = SQLITE_OK
 12329  	pNew = uintptr(0)
 12330  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 12331  
 12332  	_ = pAux
 12333  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12334  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 12335  	if !(pNew == uintptr(0)) {
 12336  		goto __1
 12337  	}
 12338  	return SQLITE_NOMEM
 12339  __1:
 12340  	;
 12341  	rc = SQLITE_NOMEM
 12342  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12343  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 12344  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 12345  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 12346  		goto __2
 12347  	}
 12348  	goto closureConnectError
 12349  __2:
 12350  	;
 12351  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 12352  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 12353  		goto __3
 12354  	}
 12355  	goto closureConnectError
 12356  __3:
 12357  	;
 12358  	i = 3
 12359  __4:
 12360  	if !(i < argc) {
 12361  		goto __6
 12362  	}
 12363  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12364  	if !(zVal != 0) {
 12365  		goto __7
 12366  	}
 12367  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 12368  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 12369  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 12370  		goto __8
 12371  	}
 12372  	goto closureConnectError
 12373  __8:
 12374  	;
 12375  	goto __5
 12376  __7:
 12377  	;
 12378  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12379  	if !(zVal != 0) {
 12380  		goto __9
 12381  	}
 12382  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 12383  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 12384  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 12385  		goto __10
 12386  	}
 12387  	goto closureConnectError
 12388  __10:
 12389  	;
 12390  	goto __5
 12391  __9:
 12392  	;
 12393  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12394  	if !(zVal != 0) {
 12395  		goto __11
 12396  	}
 12397  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 12398  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 12399  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 12400  		goto __12
 12401  	}
 12402  	goto closureConnectError
 12403  __12:
 12404  	;
 12405  	goto __5
 12406  __11:
 12407  	;
 12408  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 12409  	closureFree(tls, pNew)
 12410  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12411  	return SQLITE_ERROR
 12412  	goto __5
 12413  __5:
 12414  	i++
 12415  	goto __4
 12416  	goto __6
 12417  __6:
 12418  	;
 12419  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 12420  		ts+4247)
 12421  	if !(rc != SQLITE_OK) {
 12422  		goto __13
 12423  	}
 12424  	closureFree(tls, pNew)
 12425  __13:
 12426  	;
 12427  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 12428  	return rc
 12429  
 12430  closureConnectError:
 12431  	closureFree(tls, pNew)
 12432  	return rc
 12433  }
 12434  
 12435  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 12436  	var p uintptr = pVTab
 12437  	var pCur uintptr
 12438  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 12439  	if pCur == uintptr(0) {
 12440  		return SQLITE_NOMEM
 12441  	}
 12442  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})))
 12443  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 12444  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 12445  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 12446  	return SQLITE_OK
 12447  }
 12448  
 12449  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 12450  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 12451  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 12452  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 12453  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 12454  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 12455  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 12456  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 12457  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 12458  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 12459  }
 12460  
 12461  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 12462  	var pCur uintptr = cur
 12463  	closureClearCursor(tls, pCur)
 12464  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 12465  	sqlite3.Xsqlite3_free(tls, pCur)
 12466  	return SQLITE_OK
 12467  }
 12468  
 12469  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 12470  	var pCur uintptr = cur
 12471  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 12472  	return SQLITE_OK
 12473  }
 12474  
 12475  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 12476  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 12477  	if pNew == uintptr(0) {
 12478  		return SQLITE_NOMEM
 12479  	}
 12480  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})))
 12481  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 12482  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 12483  	closureAvlInsert(tls, pCur+48, pNew)
 12484  	queuePush(tls, pQueue, pNew)
 12485  	return SQLITE_OK
 12486  }
 12487  
 12488  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 12489  	bp := tls.Alloc(96)
 12490  	defer tls.Free(96)
 12491  
 12492  	var pCur uintptr = pVtabCursor
 12493  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 12494  	var iRoot sqlite3_int64
 12495  	var mxGen int32 = 999999999
 12496  	var zSql uintptr
 12497  
 12498  	var pAvl uintptr
 12499  	var rc int32 = SQLITE_OK
 12500  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 12501  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 12502  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 12503  
 12504  	_ = idxStr
 12505  	_ = argc
 12506  	closureClearCursor(tls, pCur)
 12507  	libc.Xmemset(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})))
 12508  	if idxNum&1 == 0 {
 12509  		return SQLITE_OK
 12510  	}
 12511  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12512  	if idxNum&0x000f0 != 0 {
 12513  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 12514  		if idxNum&0x00002 != 0 {
 12515  			mxGen--
 12516  		}
 12517  	}
 12518  	if idxNum&0x00f00 != 0 {
 12519  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 12520  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 12521  	}
 12522  	if idxNum&0x0f000 != 0 {
 12523  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 12524  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 12525  	}
 12526  	if idxNum&0x0f0000 != 0 {
 12527  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 12528  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 12529  	}
 12530  
 12531  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 12532  		ts+4337,
 12533  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 12534  	if zSql == uintptr(0) {
 12535  		return SQLITE_NOMEM
 12536  	} else {
 12537  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 12538  		sqlite3.Xsqlite3_free(tls, zSql)
 12539  		if rc != 0 {
 12540  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 12541  			(*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)))
 12542  			return rc
 12543  		}
 12544  	}
 12545  	if rc == SQLITE_OK {
 12546  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 12547  	}
 12548  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 12549  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 12550  			continue
 12551  		}
 12552  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 12553  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 12554  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 12555  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 12556  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 12557  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 12558  				}
 12559  			}
 12560  		}
 12561  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12562  	}
 12563  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12564  	if rc == SQLITE_OK {
 12565  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 12566  	}
 12567  
 12568  	return rc
 12569  }
 12570  
 12571  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 12572  	var pCur uintptr = cur
 12573  	switch i {
 12574  	case CLOSURE_COL_ID:
 12575  		{
 12576  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 12577  			break
 12578  
 12579  		}
 12580  	case CLOSURE_COL_DEPTH:
 12581  		{
 12582  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 12583  			break
 12584  
 12585  		}
 12586  	case CLOSURE_COL_ROOT:
 12587  		{
 12588  			sqlite3.Xsqlite3_result_null(tls, ctx)
 12589  			break
 12590  
 12591  		}
 12592  	case CLOSURE_COL_TABLENAME:
 12593  		{
 12594  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12595  				func() uintptr {
 12596  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 12597  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 12598  					}
 12599  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 12600  				}(),
 12601  				-1, libc.UintptrFromInt32(-1))
 12602  			break
 12603  
 12604  		}
 12605  	case CLOSURE_COL_IDCOLUMN:
 12606  		{
 12607  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12608  				func() uintptr {
 12609  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 12610  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 12611  					}
 12612  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 12613  				}(),
 12614  				-1, libc.UintptrFromInt32(-1))
 12615  			break
 12616  
 12617  		}
 12618  	case CLOSURE_COL_PARENTCOLUMN:
 12619  		{
 12620  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12621  				func() uintptr {
 12622  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 12623  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 12624  					}
 12625  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 12626  				}(),
 12627  				-1, libc.UintptrFromInt32(-1))
 12628  			break
 12629  
 12630  		}
 12631  	}
 12632  	return SQLITE_OK
 12633  }
 12634  
 12635  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 12636  	var pCur uintptr = cur
 12637  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 12638  	return SQLITE_OK
 12639  }
 12640  
 12641  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 12642  	var pCur uintptr = cur
 12643  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 12644  }
 12645  
 12646  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 12647  	var iPlan int32 = 0
 12648  	var i int32
 12649  	var idx int32 = 1
 12650  	var pConstraint uintptr
 12651  	var pVtab uintptr = pTab
 12652  	var rCost float64 = 10000000.0
 12653  
 12654  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 12655  	i = 0
 12656  __1:
 12657  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12658  		goto __3
 12659  	}
 12660  	{
 12661  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 12662  			goto __2
 12663  		}
 12664  		if iPlan&1 == 0 &&
 12665  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 12666  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12667  			iPlan = iPlan | 1
 12668  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 12669  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12670  			rCost = rCost / 100.0
 12671  		}
 12672  		if iPlan&0x0000f0 == 0 &&
 12673  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 12674  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 12675  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 12676  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 12677  			iPlan = iPlan | idx<<4
 12678  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12679  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 12680  				iPlan = iPlan | 0x000002
 12681  			}
 12682  			rCost = rCost / 5.0
 12683  		}
 12684  		if iPlan&0x000f00 == 0 &&
 12685  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 12686  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12687  			iPlan = iPlan | idx<<8
 12688  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12689  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12690  			rCost = rCost / 5.0
 12691  		}
 12692  		if iPlan&0x00f000 == 0 &&
 12693  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 12694  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12695  			iPlan = iPlan | idx<<12
 12696  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12697  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12698  		}
 12699  		if iPlan&0x0f0000 == 0 &&
 12700  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 12701  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12702  			iPlan = iPlan | idx<<16
 12703  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12704  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12705  		}
 12706  
 12707  	}
 12708  	goto __2
 12709  __2:
 12710  	i++
 12711  	pConstraint += 12
 12712  	goto __1
 12713  	goto __3
 12714  __3:
 12715  	;
 12716  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 12717  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 12718  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 12719  		iPlan = 0
 12720  	}
 12721  	if iPlan&1 == 0 {
 12722  		rCost = rCost * 1e30
 12723  		i = 0
 12724  	__4:
 12725  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12726  			goto __6
 12727  		}
 12728  		{
 12729  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 12730  
 12731  		}
 12732  		goto __5
 12733  	__5:
 12734  		i++
 12735  		pConstraint += 12
 12736  		goto __4
 12737  		goto __6
 12738  	__6:
 12739  		;
 12740  		iPlan = 0
 12741  	}
 12742  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 12743  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 12744  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 12745  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 12746  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 12747  	}
 12748  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 12749  
 12750  	return SQLITE_OK
 12751  }
 12752  
 12753  var closureModule = sqlite3_module{
 12754  	FxCreate:     0,
 12755  	FxConnect:    0,
 12756  	FxBestIndex:  0,
 12757  	FxDisconnect: 0,
 12758  	FxDestroy:    0,
 12759  	FxOpen:       0,
 12760  	FxClose:      0,
 12761  	FxFilter:     0,
 12762  	FxNext:       0,
 12763  	FxEof:        0,
 12764  	FxColumn:     0,
 12765  	FxRowid:      0,
 12766  }
 12767  
 12768  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12769  	var rc int32 = SQLITE_OK
 12770  	_ = pApi
 12771  
 12772  	_ = pzErrMsg
 12773  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 12774  	return rc
 12775  }
 12776  
 12777  type CsvReader1 = struct {
 12778  	Fin          uintptr
 12779  	Fz           uintptr
 12780  	Fn           int32
 12781  	FnAlloc      int32
 12782  	FnLine       int32
 12783  	FbNotFirst   int32
 12784  	FcTerm       int32
 12785  	F__ccgo_pad1 [4]byte
 12786  	FiIn         size_t
 12787  	FnIn         size_t
 12788  	FzIn         uintptr
 12789  	FzErr        [200]int8
 12790  }
 12791  
 12792  type CsvReader = CsvReader1
 12793  
 12794  func csv_reader_init(tls *libc.TLS, p uintptr) {
 12795  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 12796  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 12797  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12798  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 12799  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 12800  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 12801  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 12802  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 12803  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 12804  }
 12805  
 12806  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 12807  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 12808  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 12809  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12810  	}
 12811  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 12812  	csv_reader_init(tls, p)
 12813  }
 12814  
 12815  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 12816  	var ap va_list
 12817  	_ = ap
 12818  	ap = va
 12819  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 12820  	_ = ap
 12821  }
 12822  
 12823  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 12824  	bp := tls.Alloc(8)
 12825  	defer tls.Free(8)
 12826  
 12827  	if zFilename != 0 {
 12828  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 12829  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 12830  			csv_errmsg(tls, p, ts+2069, 0)
 12831  			return 1
 12832  		}
 12833  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 12834  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 12835  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12836  			csv_reader_reset(tls, p)
 12837  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 12838  			return 1
 12839  		}
 12840  	} else {
 12841  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 12842  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 12843  	}
 12844  	return 0
 12845  }
 12846  
 12847  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 12848  	var got size_t
 12849  
 12850  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 12851  	if got == uint64(0) {
 12852  		return -1
 12853  	}
 12854  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 12855  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 12856  	return int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 12857  }
 12858  
 12859  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 12860  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 12861  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 12862  			return csv_getc_refill(tls, p)
 12863  		}
 12864  		return -1
 12865  	}
 12866  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 12867  }
 12868  
 12869  func csv_resize_and_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12870  	var zNew uintptr
 12871  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 12872  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 12873  	if zNew != 0 {
 12874  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 12875  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 12876  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12877  		return 0
 12878  	} else {
 12879  		csv_errmsg(tls, p, ts+2069, 0)
 12880  		return 1
 12881  	}
 12882  	return int32(0)
 12883  }
 12884  
 12885  func csv_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12886  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 12887  		return csv_resize_and_append(tls, p, c)
 12888  	}
 12889  	*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12890  	return 0
 12891  }
 12892  
 12893  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 12894  	bp := tls.Alloc(32)
 12895  	defer tls.Free(32)
 12896  
 12897  	var c int32
 12898  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12899  	c = csv_getc(tls, p)
 12900  	if c == -1 {
 12901  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 12902  		return uintptr(0)
 12903  	}
 12904  	if c == '"' {
 12905  		var pc int32
 12906  		var ppc int32
 12907  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 12908  		pc = libc.AssignInt32(&ppc, 0)
 12909  		for 1 != 0 {
 12910  			c = csv_getc(tls, p)
 12911  			if c <= '"' || pc == '"' {
 12912  				if c == '\n' {
 12913  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12914  				}
 12915  				if c == '"' {
 12916  					if pc == '"' {
 12917  						pc = 0
 12918  						continue
 12919  					}
 12920  				}
 12921  				if c == ',' && pc == '"' ||
 12922  					c == '\n' && pc == '"' ||
 12923  					c == '\n' && pc == '\r' && ppc == '"' ||
 12924  					c == -1 && pc == '"' {
 12925  					for __ccgo := true; __ccgo; __ccgo = int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 12926  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 12927  					}
 12928  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12929  					break
 12930  				}
 12931  				if pc == '"' && c != '\r' {
 12932  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 12933  					break
 12934  				}
 12935  				if c == -1 {
 12936  					csv_errmsg(tls, p, ts+4466,
 12937  						libc.VaList(bp+16, startLine, '"'))
 12938  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12939  					break
 12940  				}
 12941  			}
 12942  			if csv_append(tls, p, int8(c)) != 0 {
 12943  				return uintptr(0)
 12944  			}
 12945  			ppc = pc
 12946  			pc = c
 12947  		}
 12948  	} else {
 12949  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 12950  			csv_append(tls, p, int8(c))
 12951  			c = csv_getc(tls, p)
 12952  			if c&0xff == 0xbb {
 12953  				csv_append(tls, p, int8(c))
 12954  				c = csv_getc(tls, p)
 12955  				if c&0xff == 0xbf {
 12956  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12957  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12958  					return csv_read_one_field(tls, p)
 12959  				}
 12960  			}
 12961  		}
 12962  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 12963  			if csv_append(tls, p, int8(c)) != 0 {
 12964  				return uintptr(0)
 12965  			}
 12966  			c = csv_getc(tls, p)
 12967  		}
 12968  		if c == '\n' {
 12969  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12970  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 12971  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 12972  			}
 12973  		}
 12974  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12975  	}
 12976  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 12977  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = int8(0)
 12978  	}
 12979  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12980  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 12981  }
 12982  
 12983  type CsvTable1 = struct {
 12984  	Fbase      sqlite3_vtab
 12985  	FzFilename uintptr
 12986  	FzData     uintptr
 12987  	FiStart    int64
 12988  	FnCol      int32
 12989  	FtstFlags  uint32
 12990  }
 12991  
 12992  type CsvTable = CsvTable1
 12993  
 12994  type CsvCursor1 = struct {
 12995  	Fbase   sqlite3_vtab_cursor
 12996  	Frdr    CsvReader
 12997  	FazVal  uintptr
 12998  	FaLen   uintptr
 12999  	FiRowid sqlite3_int64
 13000  }
 13001  
 13002  type CsvCursor = CsvCursor1
 13003  
 13004  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 13005  	bp := tls.Alloc(8)
 13006  	defer tls.Free(8)
 13007  
 13008  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 13009  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 13010  }
 13011  
 13012  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13013  	var p uintptr = pVtab
 13014  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 13015  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 13016  	sqlite3.Xsqlite3_free(tls, p)
 13017  	return SQLITE_OK
 13018  }
 13019  
 13020  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 13021  	for __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(z)))), uint64(X_CTYPE_S)) != 0 {
 13022  		z++
 13023  	}
 13024  	return z
 13025  }
 13026  
 13027  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 13028  	var n size_t = libc.Xstrlen(tls, z)
 13029  	for n > uint64(0) && __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n))))), uint64(X_CTYPE_S)) != 0 {
 13030  		n--
 13031  	}
 13032  	*(*int8)(unsafe.Pointer(z + uintptr(n))) = int8(0)
 13033  }
 13034  
 13035  func csv_dequote(tls *libc.TLS, z uintptr) {
 13036  	var j int32
 13037  	var cQuote int8 = *(*int8)(unsafe.Pointer(z))
 13038  	var i size_t
 13039  	var n size_t
 13040  
 13041  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 13042  		return
 13043  	}
 13044  	n = libc.Xstrlen(tls, z)
 13045  	if n < uint64(2) || int32(*(*int8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*int8)(unsafe.Pointer(z))) {
 13046  		return
 13047  	}
 13048  	i = uint64(1)
 13049  	j = 0
 13050  	for ; i < n-uint64(1); i++ {
 13051  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*int8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 13052  			i++
 13053  		}
 13054  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 13055  	}
 13056  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 13057  }
 13058  
 13059  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 13060  	z = csv_skip_whitespace(tls, z)
 13061  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13062  		return uintptr(0)
 13063  	}
 13064  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13065  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 13066  		return uintptr(0)
 13067  	}
 13068  	return csv_skip_whitespace(tls, z+uintptr(1))
 13069  }
 13070  
 13071  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 13072  	bp := tls.Alloc(16)
 13073  	defer tls.Free(16)
 13074  
 13075  	var zValue uintptr
 13076  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 13077  	if zValue == uintptr(0) {
 13078  		return 0
 13079  	}
 13080  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 13081  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 13082  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 13083  		return 1
 13084  	}
 13085  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 13086  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 13087  		csv_errmsg(tls, p, ts+2069, 0)
 13088  		return 1
 13089  	}
 13090  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13091  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13092  	return 1
 13093  }
 13094  
 13095  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 13096  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 13097  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 13098  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 13099  		int32(*(*int8)(unsafe.Pointer(z))) == '1' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 13100  		return 1
 13101  	}
 13102  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 13103  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 13104  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 13105  		int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 13106  		return 0
 13107  	}
 13108  	return -1
 13109  }
 13110  
 13111  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 13112  	var b int32
 13113  	z = csv_skip_whitespace(tls, z)
 13114  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 13115  		return 0
 13116  	}
 13117  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13118  	if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 13119  		*(*int32)(unsafe.Pointer(pValue)) = 1
 13120  		return 1
 13121  	}
 13122  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 13123  		return 0
 13124  	}
 13125  	z = csv_skip_whitespace(tls, z+uintptr(1))
 13126  	b = csv_boolean(tls, z)
 13127  	if b >= 0 {
 13128  		*(*int32)(unsafe.Pointer(pValue)) = b
 13129  		return 1
 13130  	}
 13131  	return 0
 13132  }
 13133  
 13134  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13135  	bp := tls.Alloc(372)
 13136  	defer tls.Free(372)
 13137  
 13138  	var pNew uintptr
 13139  	var bHeader int32
 13140  	var rc int32
 13141  	var i int32
 13142  	var j int32
 13143  	var tstFlags int32
 13144  
 13145  	var nCol int32
 13146  
 13147  	var z uintptr
 13148  	var zValue uintptr
 13149  	var z1 uintptr
 13150  	var pStr uintptr
 13151  	var zSep uintptr
 13152  	var iCol int32
 13153  	pNew = uintptr(0)
 13154  	bHeader = -1
 13155  	rc = SQLITE_OK
 13156  	tstFlags = 0
 13157  	nCol = -99
 13158  
 13159  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})))
 13160  	libc.Xmemset(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})))
 13161  	i = 3
 13162  __1:
 13163  	if !(i < argc) {
 13164  		goto __3
 13165  	}
 13166  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 13167  	j = 0
 13168  __4:
 13169  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13170  		goto __6
 13171  	}
 13172  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 13173  		goto __7
 13174  	}
 13175  	goto __6
 13176  __7:
 13177  	;
 13178  	goto __5
 13179  __5:
 13180  	j++
 13181  	goto __4
 13182  	goto __6
 13183  __6:
 13184  	;
 13185  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13186  		goto __8
 13187  	}
 13188  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13189  		goto __10
 13190  	}
 13191  	goto csvtab_connect_error
 13192  __10:
 13193  	;
 13194  	goto __9
 13195  __8:
 13196  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 13197  		goto __11
 13198  	}
 13199  	if !(bHeader >= 0) {
 13200  		goto __13
 13201  	}
 13202  	csv_errmsg(tls, bp+80, ts+4559, 0)
 13203  	goto csvtab_connect_error
 13204  __13:
 13205  	;
 13206  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 13207  	goto __12
 13208  __11:
 13209  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 13210  		goto __14
 13211  	}
 13212  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 13213  	goto __15
 13214  __14:
 13215  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 13216  		goto __16
 13217  	}
 13218  	if !(nCol > 0) {
 13219  		goto __18
 13220  	}
 13221  	csv_errmsg(tls, bp+80, ts+4610, 0)
 13222  	goto csvtab_connect_error
 13223  __18:
 13224  	;
 13225  	nCol = libc.Xatoi(tls, zValue)
 13226  	if !(nCol <= 0) {
 13227  		goto __19
 13228  	}
 13229  	csv_errmsg(tls, bp+80, ts+4644, 0)
 13230  	goto csvtab_connect_error
 13231  __19:
 13232  	;
 13233  	goto __17
 13234  __16:
 13235  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 13236  	goto csvtab_connect_error
 13237  __17:
 13238  	;
 13239  __15:
 13240  	;
 13241  __12:
 13242  	;
 13243  __9:
 13244  	;
 13245  	goto __2
 13246  __2:
 13247  	i++
 13248  	goto __1
 13249  	goto __3
 13250  __3:
 13251  	;
 13252  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 13253  		goto __20
 13254  	}
 13255  	csv_errmsg(tls, bp+80, ts+4695, 0)
 13256  	goto csvtab_connect_error
 13257  __20:
 13258  	;
 13259  	if !((nCol <= 0 || bHeader == 1) &&
 13260  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 13261  		goto __21
 13262  	}
 13263  	goto csvtab_connect_error
 13264  __21:
 13265  	;
 13266  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 13267  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13268  	if !(pNew == uintptr(0)) {
 13269  		goto __22
 13270  	}
 13271  	goto csvtab_connect_oom
 13272  __22:
 13273  	;
 13274  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})))
 13275  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13276  		goto __23
 13277  	}
 13278  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 13279  	zSep = ts + 584
 13280  	iCol = 0
 13281  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 13282  	if !(nCol < 0 && bHeader < 1) {
 13283  		goto __25
 13284  	}
 13285  	nCol = 0
 13286  __26:
 13287  	csv_read_one_field(tls, bp+80)
 13288  	nCol++
 13289  	goto __27
 13290  __27:
 13291  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13292  		goto __26
 13293  	}
 13294  	goto __28
 13295  __28:
 13296  	;
 13297  __25:
 13298  	;
 13299  	if !(nCol > 0 && bHeader < 1) {
 13300  		goto __29
 13301  	}
 13302  	iCol = 0
 13303  __31:
 13304  	if !(iCol < nCol) {
 13305  		goto __33
 13306  	}
 13307  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 13308  	zSep = ts + 4758
 13309  	goto __32
 13310  __32:
 13311  	iCol++
 13312  	goto __31
 13313  	goto __33
 13314  __33:
 13315  	;
 13316  	goto __30
 13317  __29:
 13318  __34:
 13319  	z1 = csv_read_one_field(tls, bp+80)
 13320  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 13321  		goto __37
 13322  	}
 13323  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 13324  	zSep = ts + 4758
 13325  	iCol++
 13326  __37:
 13327  	;
 13328  	goto __35
 13329  __35:
 13330  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13331  		goto __34
 13332  	}
 13333  	goto __36
 13334  __36:
 13335  	;
 13336  	if !(nCol < 0) {
 13337  		goto __38
 13338  	}
 13339  	nCol = iCol
 13340  	goto __39
 13341  __38:
 13342  __40:
 13343  	if !(iCol < nCol) {
 13344  		goto __41
 13345  	}
 13346  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 13347  	zSep = ts + 4758
 13348  	goto __40
 13349  __41:
 13350  	;
 13351  __39:
 13352  	;
 13353  __30:
 13354  	;
 13355  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13356  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 13357  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 13358  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13359  		goto __42
 13360  	}
 13361  	goto csvtab_connect_oom
 13362  __42:
 13363  	;
 13364  	goto __24
 13365  __23:
 13366  	if !(nCol < 0) {
 13367  		goto __43
 13368  	}
 13369  __45:
 13370  	csv_read_one_field(tls, bp+80)
 13371  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 13372  	goto __46
 13373  __46:
 13374  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13375  		goto __45
 13376  	}
 13377  	goto __47
 13378  __47:
 13379  	;
 13380  	goto __44
 13381  __43:
 13382  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13383  __44:
 13384  	;
 13385  __24:
 13386  	;
 13387  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 13388  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 13389  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 13390  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 13391  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 13392  	if !(bHeader != 1) {
 13393  		goto __48
 13394  	}
 13395  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 13396  	goto __49
 13397  __48:
 13398  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 13399  		goto __50
 13400  	}
 13401  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 13402  	goto __51
 13403  __50:
 13404  	(*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))
 13405  __51:
 13406  	;
 13407  __49:
 13408  	;
 13409  	csv_reader_reset(tls, bp+80)
 13410  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 13411  	if !(rc != 0) {
 13412  		goto __52
 13413  	}
 13414  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 13415  	goto csvtab_connect_error
 13416  __52:
 13417  	;
 13418  	i = 0
 13419  __53:
 13420  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13421  		goto __55
 13422  	}
 13423  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13424  	goto __54
 13425  __54:
 13426  	i++
 13427  	goto __53
 13428  	goto __55
 13429  __55:
 13430  	;
 13431  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 13432  	return SQLITE_OK
 13433  
 13434  csvtab_connect_oom:
 13435  	rc = SQLITE_NOMEM
 13436  	csv_errmsg(tls, bp+80, ts+2069, 0)
 13437  
 13438  csvtab_connect_error:
 13439  	if !(pNew != 0) {
 13440  		goto __56
 13441  	}
 13442  	csvtabDisconnect(tls, pNew)
 13443  __56:
 13444  	;
 13445  	i = 0
 13446  __57:
 13447  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13448  		goto __59
 13449  	}
 13450  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13451  	goto __58
 13452  __58:
 13453  	i++
 13454  	goto __57
 13455  	goto __59
 13456  __59:
 13457  	;
 13458  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13459  		goto __60
 13460  	}
 13461  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 13462  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 13463  __60:
 13464  	;
 13465  	csv_reader_reset(tls, bp+80)
 13466  	if !(rc == SQLITE_OK) {
 13467  		goto __61
 13468  	}
 13469  	rc = SQLITE_ERROR
 13470  __61:
 13471  	;
 13472  	return rc
 13473  }
 13474  
 13475  var azParam = [3]uintptr{
 13476  	ts + 4794, ts + 4803, ts + 4808,
 13477  }
 13478  
 13479  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 13480  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 13481  	var i int32
 13482  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 13483  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13484  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13485  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13486  	}
 13487  }
 13488  
 13489  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13490  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 13491  }
 13492  
 13493  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 13494  	var pCur uintptr = cur
 13495  	csvtabCursorRowReset(tls, pCur)
 13496  	csv_reader_reset(tls, pCur+8)
 13497  	sqlite3.Xsqlite3_free(tls, cur)
 13498  	return SQLITE_OK
 13499  }
 13500  
 13501  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13502  	var pTab uintptr = p
 13503  	var pCur uintptr
 13504  	var nByte size_t
 13505  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 13506  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 13507  	if pCur == uintptr(0) {
 13508  		return SQLITE_NOMEM
 13509  	}
 13510  	libc.Xmemset(tls, pCur, 0, nByte)
 13511  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 13512  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 13513  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13514  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 13515  		csv_xfer_error(tls, pTab, pCur+8)
 13516  		return SQLITE_ERROR
 13517  	}
 13518  	return SQLITE_OK
 13519  }
 13520  
 13521  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 13522  	var pCur uintptr = cur
 13523  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13524  	var i int32 = 0
 13525  	var z uintptr
 13526  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 13527  		z = csv_read_one_field(tls, pCur+8)
 13528  		if z == uintptr(0) {
 13529  			break
 13530  		}
 13531  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13532  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 13533  				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))
 13534  				if zNew == uintptr(0) {
 13535  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 13536  					csv_xfer_error(tls, pTab, pCur+8)
 13537  					break
 13538  				}
 13539  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 13540  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 13541  			}
 13542  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13543  			i++
 13544  		}
 13545  	}
 13546  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13547  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 13548  	} else {
 13549  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 13550  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13551  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13552  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13553  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13554  			i++
 13555  		}
 13556  	}
 13557  	return SQLITE_OK
 13558  }
 13559  
 13560  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13561  	var pCur uintptr = cur
 13562  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13563  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 13564  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 13565  	}
 13566  	return SQLITE_OK
 13567  }
 13568  
 13569  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13570  	var pCur uintptr = cur
 13571  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 13572  	return SQLITE_OK
 13573  }
 13574  
 13575  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 13576  	var pCur uintptr = cur
 13577  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 13578  }
 13579  
 13580  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13581  	var pCur uintptr = pVtabCursor
 13582  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 13583  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 13584  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 13585  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 13586  	} else {
 13587  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 13588  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 13589  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 13590  	}
 13591  	return csvtabNext(tls, pVtabCursor)
 13592  }
 13593  
 13594  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 13595  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 13596  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 13597  		var i int32
 13598  		var nConst int32 = 0
 13599  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 13600  			var op uint8
 13601  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 13602  				continue
 13603  			}
 13604  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 13605  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 13606  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 13607  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 13608  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 13609  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 13610  				nConst++
 13611  			}
 13612  		}
 13613  	}
 13614  	return SQLITE_OK
 13615  }
 13616  
 13617  var CsvModule = sqlite3_module{
 13618  	FxCreate:     0,
 13619  	FxConnect:    0,
 13620  	FxBestIndex:  0,
 13621  	FxDisconnect: 0,
 13622  	FxDestroy:    0,
 13623  	FxOpen:       0,
 13624  	FxClose:      0,
 13625  	FxFilter:     0,
 13626  	FxNext:       0,
 13627  	FxEof:        0,
 13628  	FxColumn:     0,
 13629  	FxRowid:      0,
 13630  }
 13631  
 13632  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 13633  	return SQLITE_READONLY
 13634  }
 13635  
 13636  var CsvModuleFauxWrite = sqlite3_module{
 13637  	FxCreate:     0,
 13638  	FxConnect:    0,
 13639  	FxBestIndex:  0,
 13640  	FxDisconnect: 0,
 13641  	FxDestroy:    0,
 13642  	FxOpen:       0,
 13643  	FxClose:      0,
 13644  	FxFilter:     0,
 13645  	FxNext:       0,
 13646  	FxEof:        0,
 13647  	FxColumn:     0,
 13648  	FxRowid:      0,
 13649  	FxUpdate:     0,
 13650  }
 13651  
 13652  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13653  	var rc int32
 13654  	_ = pApi
 13655  
 13656  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 13657  	if rc == SQLITE_OK {
 13658  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 13659  	}
 13660  	return rc
 13661  }
 13662  
 13663  type Decimal1 = struct {
 13664  	Fsign        int8
 13665  	Foom         int8
 13666  	FisNull      int8
 13667  	FisInit      int8
 13668  	FnDigit      int32
 13669  	FnFrac       int32
 13670  	F__ccgo_pad1 [4]byte
 13671  	Fa           uintptr
 13672  }
 13673  
 13674  type Decimal = Decimal1
 13675  
 13676  func decimal_clear(tls *libc.TLS, p uintptr) {
 13677  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 13678  }
 13679  
 13680  func decimal_free(tls *libc.TLS, p uintptr) {
 13681  	if p != 0 {
 13682  		decimal_clear(tls, p)
 13683  		sqlite3.Xsqlite3_free(tls, p)
 13684  	}
 13685  }
 13686  
 13687  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 13688  	var p uintptr
 13689  	var n int32
 13690  	var i int32
 13691  	var zIn uintptr
 13692  	var iExp int32
 13693  	var j int32
 13694  	var neg int32
 13695  	var c int8
 13696  	var nExtra int32
 13697  	iExp = 0
 13698  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 13699  	if !(p == uintptr(0)) {
 13700  		goto __1
 13701  	}
 13702  	goto new_no_mem
 13703  __1:
 13704  	;
 13705  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13706  	(*Decimal)(unsafe.Pointer(p)).Foom = int8(0)
 13707  	(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 13708  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(0)
 13709  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 13710  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13711  	if !(zAlt != 0) {
 13712  		goto __2
 13713  	}
 13714  	n = nAlt
 13715  	zIn = zAlt
 13716  	goto __3
 13717  __2:
 13718  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 13719  		goto __4
 13720  	}
 13721  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 13722  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(1)
 13723  	return p
 13724  __4:
 13725  	;
 13726  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 13727  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 13728  __3:
 13729  	;
 13730  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 13731  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13732  		goto __5
 13733  	}
 13734  	goto new_no_mem
 13735  __5:
 13736  	;
 13737  	i = 0
 13738  __6:
 13739  	if !(__sbistype(tls, int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))), uint64(X_CTYPE_S)) != 0) {
 13740  		goto __8
 13741  	}
 13742  	goto __7
 13743  __7:
 13744  	i++
 13745  	goto __6
 13746  	goto __8
 13747  __8:
 13748  	;
 13749  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 13750  		goto __9
 13751  	}
 13752  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(1)
 13753  	i++
 13754  	goto __10
 13755  __9:
 13756  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 13757  		goto __11
 13758  	}
 13759  	i++
 13760  __11:
 13761  	;
 13762  __10:
 13763  	;
 13764  __12:
 13765  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 13766  		goto __13
 13767  	}
 13768  	i++
 13769  	goto __12
 13770  __13:
 13771  	;
 13772  __14:
 13773  	if !(i < n) {
 13774  		goto __15
 13775  	}
 13776  	c = int8(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))
 13777  	if !(int32(c) >= '0' && int32(c) <= '9') {
 13778  		goto __16
 13779  	}
 13780  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 13781  	goto __17
 13782  __16:
 13783  	if !(int32(c) == '.') {
 13784  		goto __18
 13785  	}
 13786  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 13787  	goto __19
 13788  __18:
 13789  	if !(int32(c) == 'e' || int32(c) == 'E') {
 13790  		goto __20
 13791  	}
 13792  	j = i + 1
 13793  	neg = 0
 13794  	if !(j >= n) {
 13795  		goto __21
 13796  	}
 13797  	goto __15
 13798  __21:
 13799  	;
 13800  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 13801  		goto __22
 13802  	}
 13803  	neg = 1
 13804  	j++
 13805  	goto __23
 13806  __22:
 13807  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 13808  		goto __24
 13809  	}
 13810  	j++
 13811  __24:
 13812  	;
 13813  __23:
 13814  	;
 13815  __25:
 13816  	if !(j < n && iExp < 1000000) {
 13817  		goto __26
 13818  	}
 13819  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 13820  		goto __27
 13821  	}
 13822  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 13823  __27:
 13824  	;
 13825  	j++
 13826  	goto __25
 13827  __26:
 13828  	;
 13829  	if !(neg != 0) {
 13830  		goto __28
 13831  	}
 13832  	iExp = -iExp
 13833  __28:
 13834  	;
 13835  	goto __15
 13836  __20:
 13837  	;
 13838  __19:
 13839  	;
 13840  __17:
 13841  	;
 13842  	i++
 13843  	goto __14
 13844  __15:
 13845  	;
 13846  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 13847  		goto __29
 13848  	}
 13849  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 13850  __29:
 13851  	;
 13852  	if !(iExp > 0) {
 13853  		goto __30
 13854  	}
 13855  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 13856  		goto __32
 13857  	}
 13858  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 13859  		goto __33
 13860  	}
 13861  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 13862  	iExp = 0
 13863  	goto __34
 13864  __33:
 13865  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13866  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13867  __34:
 13868  	;
 13869  __32:
 13870  	;
 13871  	if !(iExp > 0) {
 13872  		goto __35
 13873  	}
 13874  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13875  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13876  		goto __36
 13877  	}
 13878  	goto new_no_mem
 13879  __36:
 13880  	;
 13881  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp))
 13882  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13883  __35:
 13884  	;
 13885  	goto __31
 13886  __30:
 13887  	if !(iExp < 0) {
 13888  		goto __37
 13889  	}
 13890  	iExp = -iExp
 13891  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 13892  	if !(nExtra != 0) {
 13893  		goto __38
 13894  	}
 13895  	if !(nExtra >= iExp) {
 13896  		goto __39
 13897  	}
 13898  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13899  	iExp = 0
 13900  	goto __40
 13901  __39:
 13902  	iExp = iExp - nExtra
 13903  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 13904  __40:
 13905  	;
 13906  __38:
 13907  	;
 13908  	if !(iExp > 0) {
 13909  		goto __41
 13910  	}
 13911  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13912  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13913  		goto __42
 13914  	}
 13915  	goto new_no_mem
 13916  __42:
 13917  	;
 13918  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 13919  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp))
 13920  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13921  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13922  __41:
 13923  	;
 13924  __37:
 13925  	;
 13926  __31:
 13927  	;
 13928  	return p
 13929  
 13930  new_no_mem:
 13931  	if !(pCtx != 0) {
 13932  		goto __43
 13933  	}
 13934  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13935  __43:
 13936  	;
 13937  	sqlite3.Xsqlite3_free(tls, p)
 13938  	return uintptr(0)
 13939  }
 13940  
 13941  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 13942  	var z uintptr
 13943  	var i int32
 13944  	var j int32
 13945  	var n int32
 13946  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 13947  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13948  		return
 13949  	}
 13950  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 13951  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 13952  		return
 13953  	}
 13954  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 13955  	if z == uintptr(0) {
 13956  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13957  		return
 13958  	}
 13959  	i = 0
 13960  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 13961  		(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13962  	}
 13963  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 13964  		*(*int8)(unsafe.Pointer(z)) = int8('-')
 13965  		i = 1
 13966  	}
 13967  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13968  	if n <= 0 {
 13969  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('0')
 13970  	}
 13971  	j = 0
 13972  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 13973  		j++
 13974  		n--
 13975  	}
 13976  	for n > 0 {
 13977  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13978  		j++
 13979  		n--
 13980  	}
 13981  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 13982  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('.')
 13983  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 13984  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13985  			j++
 13986  		}
 13987  	}
 13988  	*(*int8)(unsafe.Pointer(z + uintptr(i))) = int8(0)
 13989  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 13990  }
 13991  
 13992  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13993  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13994  	_ = argc
 13995  	decimal_result(tls, context, p)
 13996  	decimal_free(tls, p)
 13997  }
 13998  
 13999  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 14000  	var nASig int32
 14001  	var nBSig int32
 14002  	var rc int32
 14003  	var n int32
 14004  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14005  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14006  			return -1
 14007  		}
 14008  		return +1
 14009  	}
 14010  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14011  		var pTemp uintptr = pA
 14012  		pA = pB
 14013  		pB = pTemp
 14014  	}
 14015  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14016  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14017  	if nASig != nBSig {
 14018  		return nASig - nBSig
 14019  	}
 14020  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 14021  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 14022  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14023  	}
 14024  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 14025  	if rc == 0 {
 14026  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14027  	}
 14028  	return rc
 14029  }
 14030  
 14031  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14032  	var pA uintptr
 14033  	var pB uintptr
 14034  	var rc int32
 14035  	pA = uintptr(0)
 14036  	pB = uintptr(0)
 14037  
 14038  	_ = argc
 14039  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14040  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 14041  		goto __1
 14042  	}
 14043  	goto cmp_done
 14044  __1:
 14045  	;
 14046  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14047  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14048  		goto __2
 14049  	}
 14050  	goto cmp_done
 14051  __2:
 14052  	;
 14053  	rc = decimal_cmp(tls, pA, pB)
 14054  	if !(rc < 0) {
 14055  		goto __3
 14056  	}
 14057  	rc = -1
 14058  	goto __4
 14059  __3:
 14060  	if !(rc > 0) {
 14061  		goto __5
 14062  	}
 14063  	rc = +1
 14064  __5:
 14065  	;
 14066  __4:
 14067  	;
 14068  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 14069  cmp_done:
 14070  	decimal_free(tls, pA)
 14071  	decimal_free(tls, pB)
 14072  }
 14073  
 14074  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 14075  	var nAddSig int32
 14076  	var nAddFrac int32
 14077  	if p == uintptr(0) {
 14078  		return
 14079  	}
 14080  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14081  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 14082  	if nAddFrac == 0 && nAddSig == 0 {
 14083  		return
 14084  	}
 14085  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 14086  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14087  		(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14088  		return
 14089  	}
 14090  	if nAddSig != 0 {
 14091  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14092  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig))
 14093  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 14094  	}
 14095  	if nAddFrac != 0 {
 14096  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac))
 14097  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 14098  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 14099  	}
 14100  }
 14101  
 14102  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 14103  	var nSig int32
 14104  	var nFrac int32
 14105  	var nDigit int32
 14106  	var i int32
 14107  	var rc int32
 14108  	if pA == uintptr(0) {
 14109  		return
 14110  	}
 14111  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14112  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 14113  		return
 14114  	}
 14115  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 14116  		(*Decimal)(unsafe.Pointer(pA)).FisNull = int8(1)
 14117  		return
 14118  	}
 14119  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14120  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 14121  		nSig--
 14122  	}
 14123  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14124  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14125  	}
 14126  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14127  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14128  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14129  	}
 14130  	nDigit = nSig + nFrac + 1
 14131  	decimal_expand(tls, pA, nDigit, nFrac)
 14132  	decimal_expand(tls, pB, nDigit, nFrac)
 14133  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14134  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 14135  	} else {
 14136  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14137  			var carry int32 = 0
 14138  			for i = nDigit - 1; i >= 0; i-- {
 14139  				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
 14140  				if x >= 10 {
 14141  					carry = 1
 14142  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 14143  				} else {
 14144  					carry = 0
 14145  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14146  				}
 14147  			}
 14148  		} else {
 14149  			var aA uintptr
 14150  			var aB uintptr
 14151  			var borrow int32 = 0
 14152  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 14153  			if rc < 0 {
 14154  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 14155  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 14156  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 14157  			} else {
 14158  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 14159  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 14160  			}
 14161  			for i = nDigit - 1; i >= 0; i-- {
 14162  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 14163  				if x < 0 {
 14164  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 14165  					borrow = 1
 14166  				} else {
 14167  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14168  					borrow = 0
 14169  				}
 14170  			}
 14171  		}
 14172  	}
 14173  }
 14174  
 14175  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 14176  	var zA uintptr = pKey1
 14177  	var zB uintptr = pKey2
 14178  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 14179  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 14180  	var rc int32
 14181  	_ = notUsed
 14182  	if pA == uintptr(0) || pB == uintptr(0) {
 14183  		rc = 0
 14184  	} else {
 14185  		rc = decimal_cmp(tls, pA, pB)
 14186  	}
 14187  	decimal_free(tls, pA)
 14188  	decimal_free(tls, pB)
 14189  	return rc
 14190  }
 14191  
 14192  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14193  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14194  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14195  	_ = argc
 14196  	decimal_add(tls, pA, pB)
 14197  	decimal_result(tls, context, pA)
 14198  	decimal_free(tls, pA)
 14199  	decimal_free(tls, pB)
 14200  }
 14201  
 14202  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14203  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14204  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14205  	_ = argc
 14206  	if pB != 0 {
 14207  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 14208  		decimal_add(tls, pA, pB)
 14209  		decimal_result(tls, context, pA)
 14210  	}
 14211  	decimal_free(tls, pA)
 14212  	decimal_free(tls, pB)
 14213  }
 14214  
 14215  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14216  	var p uintptr
 14217  	var pArg uintptr
 14218  	_ = argc
 14219  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14220  	if p == uintptr(0) {
 14221  		return
 14222  	}
 14223  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 14224  		(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 14225  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 14226  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14227  			(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14228  		} else {
 14229  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 14230  		}
 14231  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 14232  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14233  	}
 14234  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14235  		return
 14236  	}
 14237  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14238  	decimal_add(tls, p, pArg)
 14239  	decimal_free(tls, pArg)
 14240  }
 14241  
 14242  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14243  	var p uintptr
 14244  	var pArg uintptr
 14245  	_ = argc
 14246  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14247  	if p == uintptr(0) {
 14248  		return
 14249  	}
 14250  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14251  		return
 14252  	}
 14253  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14254  	if pArg != 0 {
 14255  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 14256  	}
 14257  	decimal_add(tls, p, pArg)
 14258  	decimal_free(tls, pArg)
 14259  }
 14260  
 14261  func decimalSumValue(tls *libc.TLS, context uintptr) {
 14262  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14263  	if p == uintptr(0) {
 14264  		return
 14265  	}
 14266  	decimal_result(tls, context, p)
 14267  }
 14268  
 14269  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 14270  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14271  	if p == uintptr(0) {
 14272  		return
 14273  	}
 14274  	decimal_result(tls, context, p)
 14275  	decimal_clear(tls, p)
 14276  }
 14277  
 14278  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14279  	var pA uintptr
 14280  	var pB uintptr
 14281  	var acc uintptr
 14282  	var i int32
 14283  	var j int32
 14284  	var k int32
 14285  	var minFrac int32
 14286  	var f int8
 14287  	var carry int32
 14288  	var x int32
 14289  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14290  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14291  	acc = uintptr(0)
 14292  	_ = argc
 14293  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 14294  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14295  		goto __1
 14296  	}
 14297  	goto mul_end
 14298  __1:
 14299  	;
 14300  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14301  	if !(acc == uintptr(0)) {
 14302  		goto __2
 14303  	}
 14304  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14305  	goto mul_end
 14306  __2:
 14307  	;
 14308  	libc.Xmemset(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14309  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14310  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 14311  		goto __3
 14312  	}
 14313  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14314  __3:
 14315  	;
 14316  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 14317  __4:
 14318  	if !(i >= 0) {
 14319  		goto __6
 14320  	}
 14321  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 14322  	carry = 0
 14323  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 14324  	k = i + j + 3
 14325  __7:
 14326  	if !(j >= 0) {
 14327  		goto __9
 14328  	}
 14329  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 14330  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14331  	carry = x / 10
 14332  	goto __8
 14333  __8:
 14334  	j--
 14335  	k--
 14336  	goto __7
 14337  	goto __9
 14338  __9:
 14339  	;
 14340  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 14341  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14342  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 14343  	goto __5
 14344  __5:
 14345  	i--
 14346  	goto __4
 14347  	goto __6
 14348  __6:
 14349  	;
 14350  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 14351  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 14352  	acc = uintptr(0)
 14353  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 14354  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14355  	*(*int8)(unsafe.Pointer(pA)) ^= int8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 14356  __10:
 14357  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 14358  		goto __11
 14359  	}
 14360  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 14361  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 14362  	goto __10
 14363  __11:
 14364  	;
 14365  	decimal_result(tls, context, pA)
 14366  
 14367  mul_end:
 14368  	sqlite3.Xsqlite3_free(tls, acc)
 14369  	decimal_free(tls, pA)
 14370  	decimal_free(tls, pB)
 14371  }
 14372  
 14373  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14374  	var rc int32 = SQLITE_OK
 14375  	var i uint32
 14376  	_ = pzErrMsg
 14377  
 14378  	_ = pApi
 14379  
 14380  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 14381  		FzFuncName   uintptr
 14382  		FnArg        int32
 14383  		F__ccgo_pad1 [4]byte
 14384  		FxFunc       uintptr
 14385  	}{})) && rc == SQLITE_OK; i++ {
 14386  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 14387  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14388  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 14389  	}
 14390  	if rc == SQLITE_OK {
 14391  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 14392  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 14393  			*(*uintptr)(unsafe.Pointer(&struct {
 14394  				f func(*libc.TLS, uintptr, int32, uintptr)
 14395  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 14396  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 14397  				f func(*libc.TLS, uintptr, int32, uintptr)
 14398  			}{decimalSumInverse})), uintptr(0))
 14399  	}
 14400  	if rc == SQLITE_OK {
 14401  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 14402  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14403  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 14404  			}{decimalCollFunc})))
 14405  	}
 14406  	return rc
 14407  }
 14408  
 14409  var aFunc = [5]struct {
 14410  	FzFuncName   uintptr
 14411  	FnArg        int32
 14412  	F__ccgo_pad1 [4]byte
 14413  	FxFunc       uintptr
 14414  }{
 14415  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 14416  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 14417  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 14418  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 14419  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 14420  }
 14421  
 14422  type EvalResult = struct {
 14423  	Fz           uintptr
 14424  	FzSep        uintptr
 14425  	FszSep       int32
 14426  	F__ccgo_pad1 [4]byte
 14427  	FnAlloc      sqlite3_int64
 14428  	FnUsed       sqlite3_int64
 14429  }
 14430  
 14431  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 14432  	var p uintptr = pCtx
 14433  	var i int32
 14434  	if argv == uintptr(0) {
 14435  		return 0
 14436  	}
 14437  	for i = 0; i < argc; i++ {
 14438  		var z uintptr
 14439  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 14440  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 14441  		} else {
 14442  			z = ts + 584
 14443  		}
 14444  		var sz size_t = libc.Xstrlen(tls, z)
 14445  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 14446  			var zNew uintptr
 14447  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 14448  
 14449  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 14450  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 14451  			} else {
 14452  				zNew = uintptr(0)
 14453  			}
 14454  			if zNew == uintptr(0) {
 14455  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 14456  				libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14457  				return 1
 14458  			}
 14459  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 14460  		}
 14461  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 14462  			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))
 14463  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 14464  		}
 14465  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 14466  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 14467  	}
 14468  	return 0
 14469  }
 14470  
 14471  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14472  	bp := tls.Alloc(48)
 14473  	defer tls.Free(48)
 14474  
 14475  	var zSql uintptr
 14476  	var db uintptr
 14477  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 14478  	var rc int32
 14479  
 14480  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14481  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 14482  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14483  	if zSql == uintptr(0) {
 14484  		return
 14485  	}
 14486  	if argc > 1 {
 14487  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 14488  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14489  			return
 14490  		}
 14491  	}
 14492  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 14493  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 14494  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 14495  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 14496  	}{callback})), bp, bp+40)
 14497  	if rc != SQLITE_OK {
 14498  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 14499  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 14500  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14501  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14502  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 14503  	} else {
 14504  		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})))
 14505  	}
 14506  }
 14507  
 14508  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14509  	var rc int32 = SQLITE_OK
 14510  	_ = pApi
 14511  
 14512  	_ = pzErrMsg
 14513  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 14514  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14515  		*(*uintptr)(unsafe.Pointer(&struct {
 14516  			f func(*libc.TLS, uintptr, int32, uintptr)
 14517  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14518  	if rc == SQLITE_OK {
 14519  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 14520  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14521  			*(*uintptr)(unsafe.Pointer(&struct {
 14522  				f func(*libc.TLS, uintptr, int32, uintptr)
 14523  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14524  	}
 14525  	return rc
 14526  }
 14527  
 14528  type explain_vtab1 = struct {
 14529  	Fbase sqlite3_vtab
 14530  	Fdb   uintptr
 14531  }
 14532  
 14533  type explain_vtab = explain_vtab1
 14534  
 14535  type explain_cursor1 = struct {
 14536  	Fbase        sqlite3_vtab_cursor
 14537  	Fdb          uintptr
 14538  	FzSql        uintptr
 14539  	FpExplain    uintptr
 14540  	Frc          int32
 14541  	F__ccgo_pad1 [4]byte
 14542  }
 14543  
 14544  type explain_cursor = explain_cursor1
 14545  
 14546  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14547  	var pNew uintptr
 14548  	var rc int32
 14549  
 14550  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 14551  		ts+4901)
 14552  	if rc == SQLITE_OK {
 14553  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 14554  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14555  		if pNew == uintptr(0) {
 14556  			return SQLITE_NOMEM
 14557  		}
 14558  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})))
 14559  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 14560  	}
 14561  	return rc
 14562  }
 14563  
 14564  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14565  	sqlite3.Xsqlite3_free(tls, pVtab)
 14566  	return SQLITE_OK
 14567  }
 14568  
 14569  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14570  	var pCur uintptr
 14571  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 14572  	if pCur == uintptr(0) {
 14573  		return SQLITE_NOMEM
 14574  	}
 14575  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})))
 14576  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 14577  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14578  	return SQLITE_OK
 14579  }
 14580  
 14581  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 14582  	var pCur uintptr = cur
 14583  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14584  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14585  	sqlite3.Xsqlite3_free(tls, pCur)
 14586  	return SQLITE_OK
 14587  }
 14588  
 14589  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 14590  	var pCur uintptr = cur
 14591  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14592  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 14593  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14594  	}
 14595  	return SQLITE_OK
 14596  }
 14597  
 14598  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 14599  	var pCur uintptr = cur
 14600  	if i == EXPLN_COLUMN_SQL {
 14601  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 14602  	} else {
 14603  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 14604  	}
 14605  	return SQLITE_OK
 14606  }
 14607  
 14608  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 14609  	var pCur uintptr = cur
 14610  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 14611  	return SQLITE_OK
 14612  }
 14613  
 14614  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 14615  	var pCur uintptr = cur
 14616  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 14617  }
 14618  
 14619  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14620  	bp := tls.Alloc(16)
 14621  	defer tls.Free(16)
 14622  
 14623  	var pCur uintptr = pVtabCursor
 14624  	var zSql uintptr = uintptr(0)
 14625  	var rc int32
 14626  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14627  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14628  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 14629  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 14630  		return SQLITE_OK
 14631  	}
 14632  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14633  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 14634  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 14635  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 14636  	}
 14637  	if zSql == uintptr(0) {
 14638  		rc = SQLITE_NOMEM
 14639  	} else {
 14640  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 14641  		sqlite3.Xsqlite3_free(tls, zSql)
 14642  	}
 14643  	if rc != 0 {
 14644  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14645  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14646  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14647  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 14648  	} else {
 14649  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14650  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 14651  			rc = SQLITE_OK
 14652  		} else {
 14653  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14654  		}
 14655  	}
 14656  	return rc
 14657  }
 14658  
 14659  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14660  	var i int32
 14661  	var idx int32 = -1
 14662  	var unusable int32 = 0
 14663  
 14664  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 14665  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 14666  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 14667  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 14668  			continue
 14669  		}
 14670  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 14671  			unusable = 1
 14672  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 14673  			idx = i
 14674  		}
 14675  	}
 14676  	if idx >= 0 {
 14677  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 14678  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 14679  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 14680  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 14681  	} else if unusable != 0 {
 14682  		return SQLITE_CONSTRAINT
 14683  	}
 14684  	return SQLITE_OK
 14685  }
 14686  
 14687  var explainModule = sqlite3_module{
 14688  	FxConnect:    0,
 14689  	FxBestIndex:  0,
 14690  	FxDisconnect: 0,
 14691  	FxOpen:       0,
 14692  	FxClose:      0,
 14693  	FxFilter:     0,
 14694  	FxNext:       0,
 14695  	FxEof:        0,
 14696  	FxColumn:     0,
 14697  	FxRowid:      0,
 14698  }
 14699  
 14700  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 14701  	var rc int32 = SQLITE_OK
 14702  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 14703  	return rc
 14704  }
 14705  
 14706  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14707  	var rc int32 = SQLITE_OK
 14708  	_ = pApi
 14709  
 14710  	rc = sqlite3ExplainVtabInit(tls, db)
 14711  	return rc
 14712  }
 14713  
 14714  type pthread_once = struct {
 14715  	Fstate       int32
 14716  	F__ccgo_pad1 [4]byte
 14717  	Fmutex       pthread_mutex_t
 14718  }
 14719  
 14720  type pthread_t = uintptr
 14721  type pthread_attr_t = uintptr
 14722  type pthread_mutex_t = uintptr
 14723  type pthread_mutexattr_t = uintptr
 14724  type pthread_cond_t = uintptr
 14725  type pthread_condattr_t = uintptr
 14726  type pthread_key_t = int32
 14727  type pthread_once_t = pthread_once
 14728  type pthread_rwlock_t = uintptr
 14729  type pthread_rwlockattr_t = uintptr
 14730  type pthread_barrier_t = uintptr
 14731  type pthread_barrierattr_t = uintptr
 14732  type pthread_spinlock_t = uintptr
 14733  
 14734  type pthread_addr_t = uintptr
 14735  type pthread_startroutine_t = uintptr
 14736  
 14737  type u_char = uint8
 14738  type u_short = uint16
 14739  type u_int = uint32
 14740  type u_long = uint64
 14741  type ushort = uint16
 14742  type uint = uint32
 14743  
 14744  type int8_t = int8
 14745  
 14746  type int16_t = int16
 14747  
 14748  type int32_t = int32
 14749  
 14750  type int64_t = int64
 14751  
 14752  type uint8_t = uint8
 14753  
 14754  type uint16_t = uint16
 14755  
 14756  type uint32_t = uint32
 14757  
 14758  type uint64_t = uint64
 14759  
 14760  type intptr_t = int64
 14761  type uintptr_t = uint64
 14762  type intmax_t = int64
 14763  type uintmax_t = uint64
 14764  
 14765  type u_int8_t = uint8
 14766  type u_int16_t = uint16
 14767  type u_int32_t = uint32
 14768  type u_int64_t = uint64
 14769  
 14770  type u_quad_t = uint64
 14771  type quad_t = int64
 14772  type qaddr_t = uintptr
 14773  
 14774  type caddr_t = uintptr
 14775  type c_caddr_t = uintptr
 14776  
 14777  type blksize_t = int32
 14778  
 14779  type cpuwhich_t = int32
 14780  type cpulevel_t = int32
 14781  type cpusetid_t = int32
 14782  
 14783  type blkcnt_t = int64
 14784  
 14785  type clock_t = int32
 14786  
 14787  type clockid_t = int32
 14788  
 14789  type critical_t = int64
 14790  type daddr_t = int64
 14791  
 14792  type dev_t = uint64
 14793  
 14794  type fflags_t = uint32
 14795  
 14796  type fixpt_t = uint32
 14797  
 14798  type fsblkcnt_t = uint64
 14799  type fsfilcnt_t = uint64
 14800  
 14801  type gid_t = uint32
 14802  
 14803  type in_addr_t = uint32
 14804  
 14805  type in_port_t = uint16
 14806  
 14807  type id_t = int64
 14808  
 14809  type ino_t = uint64
 14810  
 14811  type key_t = int64
 14812  
 14813  type lwpid_t = int32
 14814  
 14815  type mode_t = uint16
 14816  
 14817  type accmode_t = int32
 14818  
 14819  type nlink_t = uint64
 14820  
 14821  type pid_t = int32
 14822  
 14823  type register_t = int64
 14824  
 14825  type rlim_t = int64
 14826  
 14827  type sbintime_t = int64
 14828  
 14829  type segsz_t = int64
 14830  
 14831  type suseconds_t = int64
 14832  
 14833  type time_t = int64
 14834  
 14835  type timer_t = uintptr
 14836  
 14837  type mqd_t = uintptr
 14838  
 14839  type u_register_t = uint64
 14840  
 14841  type uid_t = uint32
 14842  
 14843  type useconds_t = uint32
 14844  
 14845  type cap_ioctl_t = uint64
 14846  
 14847  type kpaddr_t = uint64
 14848  type kvaddr_t = uint64
 14849  type ksize_t = uint64
 14850  type kssize_t = int64
 14851  
 14852  type vm_offset_t = uint64
 14853  type vm_ooffset_t = uint64
 14854  type vm_paddr_t = uint64
 14855  type vm_pindex_t = uint64
 14856  type vm_size_t = uint64
 14857  
 14858  type rman_res_t = uint64
 14859  
 14860  type __sigset = struct{ F__bits [4]uint32 }
 14861  
 14862  type timeval = struct {
 14863  	Ftv_sec  time_t
 14864  	Ftv_usec suseconds_t
 14865  }
 14866  
 14867  type timespec = struct {
 14868  	Ftv_sec  time_t
 14869  	Ftv_nsec int64
 14870  }
 14871  
 14872  type itimerspec = struct {
 14873  	Fit_interval struct {
 14874  		Ftv_sec  time_t
 14875  		Ftv_nsec int64
 14876  	}
 14877  	Fit_value struct {
 14878  		Ftv_sec  time_t
 14879  		Ftv_nsec int64
 14880  	}
 14881  }
 14882  
 14883  type fd_mask = uint64
 14884  
 14885  type sigset_t = __sigset
 14886  
 14887  type fd_set1 = struct{ F__fds_bits [16]uint64 }
 14888  
 14889  type fd_set = fd_set1
 14890  
 14891  type timezone = struct {
 14892  	Ftz_minuteswest int32
 14893  	Ftz_dsttime     int32
 14894  }
 14895  
 14896  type bintime = struct {
 14897  	Fsec  time_t
 14898  	Ffrac uint64_t
 14899  }
 14900  
 14901  func sbttons(tls *libc.TLS, _sbt sbintime_t) int64_t {
 14902  	var ns uint64_t
 14903  
 14904  	ns = uint64_t(_sbt)
 14905  	if ns >= uint64(int64(1)<<32) {
 14906  		ns = ns >> 32 * uint64(1000000000)
 14907  	} else {
 14908  		ns = uint64(0)
 14909  	}
 14910  
 14911  	return int64_t(ns + uint64_t(int64(1000000000)*(_sbt&int64(0xffffffff))>>32))
 14912  }
 14913  
 14914  func nstosbt(tls *libc.TLS, _ns int64_t) sbintime_t {
 14915  	var sb sbintime_t = int64(0)
 14916  
 14917  	if _ns >= int64(1000000000) {
 14918  		sb = _ns / int64(1000000000) * (int64(1) << 32)
 14919  		_ns = _ns % int64(1000000000)
 14920  	}
 14921  
 14922  	sb = sbintime_t(uint64(sb) + (uint64(_ns)*9223372037+uint64(0x7fffffff))>>31)
 14923  	return sb
 14924  }
 14925  
 14926  func sbttous(tls *libc.TLS, _sbt sbintime_t) int64_t {
 14927  	return int64(1000000) * _sbt >> 32
 14928  }
 14929  
 14930  func ustosbt(tls *libc.TLS, _us int64_t) sbintime_t {
 14931  	var sb sbintime_t = int64(0)
 14932  
 14933  	if _us >= int64(1000000) {
 14934  		sb = _us / int64(1000000) * (int64(1) << 32)
 14935  		_us = _us % int64(1000000)
 14936  	}
 14937  
 14938  	sb = sbintime_t(uint64(sb) + (uint64(_us)*9223372036855+uint64(0x7fffffff))>>31)
 14939  	return sb
 14940  }
 14941  
 14942  type itimerval = struct {
 14943  	Fit_interval struct {
 14944  		Ftv_sec  time_t
 14945  		Ftv_usec suseconds_t
 14946  	}
 14947  	Fit_value struct {
 14948  		Ftv_sec  time_t
 14949  		Ftv_usec suseconds_t
 14950  	}
 14951  }
 14952  
 14953  type clockinfo = struct {
 14954  	Fhz     int32
 14955  	Ftick   int32
 14956  	Fspare  int32
 14957  	Fstathz int32
 14958  	Fprofhz int32
 14959  }
 14960  
 14961  type tm = struct {
 14962  	Ftm_sec      int32
 14963  	Ftm_min      int32
 14964  	Ftm_hour     int32
 14965  	Ftm_mday     int32
 14966  	Ftm_mon      int32
 14967  	Ftm_year     int32
 14968  	Ftm_wday     int32
 14969  	Ftm_yday     int32
 14970  	Ftm_isdst    int32
 14971  	F__ccgo_pad1 [4]byte
 14972  	Ftm_gmtoff   int64
 14973  	Ftm_zone     uintptr
 14974  }
 14975  
 14976  type sigevent = struct {
 14977  	Fsigev_notify int32
 14978  	Fsigev_signo  int32
 14979  	Fsigev_value  struct {
 14980  		F__ccgo_pad1 [0]uint64
 14981  		Fsival_int   int32
 14982  		F__ccgo_pad2 [4]byte
 14983  	}
 14984  	F_sigev_un struct {
 14985  		F__ccgo_pad1 [0]uint64
 14986  		F_threadid   int32
 14987  		F__ccgo_pad2 [60]byte
 14988  	}
 14989  }
 14990  
 14991  type flock = struct {
 14992  	Fl_start     off_t
 14993  	Fl_len       off_t
 14994  	Fl_pid       pid_t
 14995  	Fl_type      int16
 14996  	Fl_whence    int16
 14997  	Fl_sysid     int32
 14998  	F__ccgo_pad1 [4]byte
 14999  }
 15000  
 15001  type __oflock = struct {
 15002  	Fl_start  off_t
 15003  	Fl_len    off_t
 15004  	Fl_pid    pid_t
 15005  	Fl_type   int16
 15006  	Fl_whence int16
 15007  }
 15008  
 15009  type crypt_data = struct {
 15010  	Finitialized int32
 15011  	F__buf       [256]int8
 15012  }
 15013  
 15014  type dirent = struct {
 15015  	Fd_fileno ino_t
 15016  	Fd_off    off_t
 15017  	Fd_reclen uint16
 15018  	Fd_type   uint8
 15019  	Fd_pad0   uint8
 15020  	Fd_namlen uint16
 15021  	Fd_pad1   uint16
 15022  	Fd_name   [256]int8
 15023  }
 15024  
 15025  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 15026  	var in uintptr
 15027  	var nIn sqlite3_int64
 15028  	var pBuf uintptr
 15029  	var db uintptr
 15030  	var mxBlob int32
 15031  
 15032  	in = libc.Xfopen(tls, zName, ts+4402)
 15033  	if in == uintptr(0) {
 15034  		return
 15035  	}
 15036  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 15037  	nIn = libc.Xftell(tls, in)
 15038  	libc.Xrewind(tls, in)
 15039  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 15040  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 15041  	if nIn > sqlite3_int64(mxBlob) {
 15042  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 15043  		libc.Xfclose(tls, in)
 15044  		return
 15045  	}
 15046  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 15047  		if nIn != 0 {
 15048  			return uint64(nIn)
 15049  		}
 15050  		return uint64(1)
 15051  	}())
 15052  	if pBuf == uintptr(0) {
 15053  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15054  		libc.Xfclose(tls, in)
 15055  		return
 15056  	}
 15057  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 15058  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 15059  	} else {
 15060  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 15061  		sqlite3.Xsqlite3_free(tls, pBuf)
 15062  	}
 15063  	libc.Xfclose(tls, in)
 15064  }
 15065  
 15066  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15067  	var zName uintptr
 15068  	_ = argc
 15069  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15070  	if zName == uintptr(0) {
 15071  		return
 15072  	}
 15073  	readFileContents(tls, context, zName)
 15074  }
 15075  
 15076  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 15077  	var zMsg uintptr = uintptr(0)
 15078  	var ap va_list
 15079  	_ = ap
 15080  	ap = va
 15081  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15082  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 15083  	sqlite3.Xsqlite3_free(tls, zMsg)
 15084  	_ = ap
 15085  }
 15086  
 15087  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15088  	return libc.Xstat(tls, zPath, pStatBuf)
 15089  }
 15090  
 15091  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15092  	return libc.Xlstat(tls, zPath, pStatBuf)
 15093  }
 15094  
 15095  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 15096  	bp := tls.Alloc(232)
 15097  	defer tls.Free(232)
 15098  
 15099  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 15100  	var rc int32 = SQLITE_OK
 15101  
 15102  	if zCopy == uintptr(0) {
 15103  		rc = SQLITE_NOMEM
 15104  	} else {
 15105  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 15106  		var i int32 = 1
 15107  
 15108  		for rc == SQLITE_OK {
 15109  			var rc2 int32
 15110  
 15111  			for ; int32(*(*int8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 15112  			}
 15113  			if i == nCopy {
 15114  				break
 15115  			}
 15116  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8(0)
 15117  
 15118  			rc2 = fileStat(tls, zCopy, bp+8)
 15119  			if rc2 != 0 {
 15120  				if libc.Xmkdir(tls, zCopy, uint16(0777)) != 0 {
 15121  					rc = SQLITE_ERROR
 15122  				}
 15123  			} else {
 15124  				if !(int32((*stat)(unsafe.Pointer(bp+8)).Fst_mode)&0170000 == 0040000) {
 15125  					rc = SQLITE_ERROR
 15126  				}
 15127  			}
 15128  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8('/')
 15129  			i++
 15130  		}
 15131  
 15132  		sqlite3.Xsqlite3_free(tls, zCopy)
 15133  	}
 15134  
 15135  	return rc
 15136  }
 15137  
 15138  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 15139  	bp := tls.Alloc(256)
 15140  	defer tls.Free(256)
 15141  
 15142  	if zFile == uintptr(0) {
 15143  		return 1
 15144  	}
 15145  	if int32(mode)&0170000 == 0120000 {
 15146  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 15147  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 15148  			return 1
 15149  		}
 15150  	} else {
 15151  		if int32(mode)&0170000 == 0040000 {
 15152  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 15153  				if *(*int32)(unsafe.Pointer(libc.X__error(tls))) != EEXIST ||
 15154  					0 != fileStat(tls, zFile, bp) ||
 15155  					!(int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&0170000 == 0040000) ||
 15156  					int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&0777 != int32(mode)&0777 && 0 != libc.Xchmod(tls, zFile, uint16(int32(mode)&0777)) {
 15157  					return 1
 15158  				}
 15159  			}
 15160  		} else {
 15161  			var nWrite sqlite3_int64 = int64(0)
 15162  			var z uintptr
 15163  			var rc int32 = 0
 15164  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 15165  			if out == uintptr(0) {
 15166  				return 1
 15167  			}
 15168  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 15169  			if z != 0 {
 15170  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 15171  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 15172  				if nWrite != n {
 15173  					rc = 1
 15174  				}
 15175  			}
 15176  			libc.Xfclose(tls, out)
 15177  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, uint16(int32(mode)&0777)) != 0 {
 15178  				rc = 1
 15179  			}
 15180  			if rc != 0 {
 15181  				return 2
 15182  			}
 15183  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 15184  		}
 15185  	}
 15186  
 15187  	if mtime >= int64(0) {
 15188  		(*timeval)(unsafe.Pointer(bp + 224)).Ftv_usec = libc.AssignPtrInt64(bp+224+1*16+8, int64(0))
 15189  		(*timeval)(unsafe.Pointer(bp + 224)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 15190  		(*timeval)(unsafe.Pointer(bp + 224 + 1*16)).Ftv_sec = mtime
 15191  		if libc.Xutimes(tls, zFile, bp+224) != 0 {
 15192  			return 1
 15193  		}
 15194  	}
 15195  
 15196  	return 0
 15197  }
 15198  
 15199  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15200  	bp := tls.Alloc(24)
 15201  	defer tls.Free(24)
 15202  
 15203  	var zFile uintptr
 15204  	var mode mode_t = mode_t(0)
 15205  	var res int32
 15206  	var mtime sqlite3_int64 = int64(-1)
 15207  
 15208  	if argc < 2 || argc > 4 {
 15209  		sqlite3.Xsqlite3_result_error(tls, context,
 15210  			ts+4985, -1)
 15211  		return
 15212  	}
 15213  
 15214  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15215  	if zFile == uintptr(0) {
 15216  		return
 15217  	}
 15218  	if argc >= 3 {
 15219  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 15220  	}
 15221  	if argc == 4 {
 15222  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 15223  	}
 15224  
 15225  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15226  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__error(tls))) == ENOENT {
 15227  		if makeDirectory(tls, zFile) == SQLITE_OK {
 15228  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 15229  		}
 15230  	}
 15231  
 15232  	if argc > 2 && res != 0 {
 15233  		if int32(mode)&0170000 == 0120000 {
 15234  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 15235  		} else if int32(mode)&0170000 == 0040000 {
 15236  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 15237  		} else {
 15238  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 15239  		}
 15240  	}
 15241  }
 15242  
 15243  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15244  	bp := tls.Alloc(16)
 15245  	defer tls.Free(16)
 15246  
 15247  	var i int32
 15248  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15249  
 15250  	_ = argc
 15251  	if iMode&0170000 == 0120000 {
 15252  		*(*int8)(unsafe.Pointer(bp)) = int8('l')
 15253  	} else if iMode&0170000 == 0100000 {
 15254  		*(*int8)(unsafe.Pointer(bp)) = int8('-')
 15255  	} else if iMode&0170000 == 0040000 {
 15256  		*(*int8)(unsafe.Pointer(bp)) = int8('d')
 15257  	} else {
 15258  		*(*int8)(unsafe.Pointer(bp)) = int8('?')
 15259  	}
 15260  	for i = 0; i < 3; i++ {
 15261  		var m int32 = iMode >> ((2 - i) * 3)
 15262  		var a uintptr = bp + uintptr(1+i*3)
 15263  		*(*int8)(unsafe.Pointer(a)) = func() int8 {
 15264  			if m&0x4 != 0 {
 15265  				return int8('r')
 15266  			}
 15267  			return int8('-')
 15268  		}()
 15269  		*(*int8)(unsafe.Pointer(a + 1)) = func() int8 {
 15270  			if m&0x2 != 0 {
 15271  				return int8('w')
 15272  			}
 15273  			return int8('-')
 15274  		}()
 15275  		*(*int8)(unsafe.Pointer(a + 2)) = func() int8 {
 15276  			if m&0x1 != 0 {
 15277  				return int8('x')
 15278  			}
 15279  			return int8('-')
 15280  		}()
 15281  	}
 15282  	*(*int8)(unsafe.Pointer(bp + 10)) = int8(0)
 15283  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 15284  }
 15285  
 15286  type fsdir_cursor1 = struct {
 15287  	Fbase        sqlite3_vtab_cursor
 15288  	FnLvl        int32
 15289  	FiLvl        int32
 15290  	FaLvl        uintptr
 15291  	FzBase       uintptr
 15292  	FnBase       int32
 15293  	F__ccgo_pad1 [4]byte
 15294  	FsStat       struct {
 15295  		Fst_dev      dev_t
 15296  		Fst_ino      ino_t
 15297  		Fst_nlink    nlink_t
 15298  		Fst_mode     mode_t
 15299  		Fst_padding0 int16
 15300  		Fst_uid      uid_t
 15301  		Fst_gid      gid_t
 15302  		Fst_padding1 int32
 15303  		Fst_rdev     dev_t
 15304  		Fst_atim     struct {
 15305  			Ftv_sec  time_t
 15306  			Ftv_nsec int64
 15307  		}
 15308  		Fst_mtim struct {
 15309  			Ftv_sec  time_t
 15310  			Ftv_nsec int64
 15311  		}
 15312  		Fst_ctim struct {
 15313  			Ftv_sec  time_t
 15314  			Ftv_nsec int64
 15315  		}
 15316  		Fst_birthtim struct {
 15317  			Ftv_sec  time_t
 15318  			Ftv_nsec int64
 15319  		}
 15320  		Fst_size    off_t
 15321  		Fst_blocks  blkcnt_t
 15322  		Fst_blksize blksize_t
 15323  		Fst_flags   fflags_t
 15324  		Fst_gen     uint64
 15325  		Fst_spare   [10]uint64
 15326  	}
 15327  	FzPath  uintptr
 15328  	FiRowid sqlite3_int64
 15329  }
 15330  
 15331  type fsdir_cursor = fsdir_cursor1
 15332  type FsdirLevel1 = struct {
 15333  	FpDir uintptr
 15334  	FzDir uintptr
 15335  }
 15336  
 15337  type FsdirLevel = FsdirLevel1
 15338  
 15339  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 15340  
 15341  type fsdir_tab = fsdir_tab1
 15342  
 15343  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15344  	var pNew uintptr = uintptr(0)
 15345  	var rc int32
 15346  	_ = pAux
 15347  	_ = argc
 15348  	_ = argv
 15349  	_ = pzErr
 15350  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 15351  	if rc == SQLITE_OK {
 15352  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 15353  		if pNew == uintptr(0) {
 15354  			return SQLITE_NOMEM
 15355  		}
 15356  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})))
 15357  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 15358  	}
 15359  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15360  	return rc
 15361  }
 15362  
 15363  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15364  	sqlite3.Xsqlite3_free(tls, pVtab)
 15365  	return SQLITE_OK
 15366  }
 15367  
 15368  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 15369  	var pCur uintptr
 15370  	_ = p
 15371  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 15372  	if pCur == uintptr(0) {
 15373  		return SQLITE_NOMEM
 15374  	}
 15375  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})))
 15376  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15377  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15378  	return SQLITE_OK
 15379  }
 15380  
 15381  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 15382  	var i int32
 15383  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 15384  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 15385  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 15386  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15387  		}
 15388  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15389  	}
 15390  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15391  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 15392  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 15393  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15394  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 15395  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 15396  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 15397  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15398  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15399  }
 15400  
 15401  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 15402  	var pCur uintptr = cur
 15403  
 15404  	fsdirResetCursor(tls, pCur)
 15405  	sqlite3.Xsqlite3_free(tls, pCur)
 15406  	return SQLITE_OK
 15407  }
 15408  
 15409  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 15410  	var ap va_list
 15411  	_ = ap
 15412  	ap = va
 15413  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15414  	_ = ap
 15415  }
 15416  
 15417  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 15418  	bp := tls.Alloc(32)
 15419  	defer tls.Free(32)
 15420  
 15421  	var pCur uintptr = cur
 15422  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15423  
 15424  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15425  	if int32(m)&0170000 == 0040000 {
 15426  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 15427  		var pLvl uintptr
 15428  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 15429  			var nNew int32 = iNew + 1
 15430  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 15431  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 15432  			if aNew == uintptr(0) {
 15433  				return SQLITE_NOMEM
 15434  			}
 15435  			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))
 15436  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 15437  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 15438  		}
 15439  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15440  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 15441  
 15442  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15443  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15444  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15445  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15446  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15447  			return SQLITE_ERROR
 15448  		}
 15449  	}
 15450  
 15451  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15452  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 15453  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15454  		if pEntry != 0 {
 15455  			if int32(*(*int8)(unsafe.Pointer(pEntry + 24))) == '.' {
 15456  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == '.' && int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 2))) == 0 {
 15457  					continue
 15458  				}
 15459  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == 0 {
 15460  					continue
 15461  				}
 15462  			}
 15463  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15464  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+24))
 15465  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15466  				return SQLITE_NOMEM
 15467  			}
 15468  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15469  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15470  				return SQLITE_ERROR
 15471  			}
 15472  			return SQLITE_OK
 15473  		}
 15474  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15475  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15476  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 15477  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 15478  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 15479  	}
 15480  
 15481  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15482  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15483  	return SQLITE_OK
 15484  }
 15485  
 15486  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15487  	bp := tls.Alloc(64)
 15488  	defer tls.Free(64)
 15489  
 15490  	var pCur uintptr = cur
 15491  	switch i {
 15492  	case FSDIR_COLUMN_NAME:
 15493  		{
 15494  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 15495  			break
 15496  
 15497  		}
 15498  
 15499  	case FSDIR_COLUMN_MODE:
 15500  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 15501  		break
 15502  
 15503  	case FSDIR_COLUMN_MTIME:
 15504  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec)
 15505  		break
 15506  
 15507  	case FSDIR_COLUMN_DATA:
 15508  		{
 15509  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15510  			if int32(m)&0170000 == 0040000 {
 15511  				sqlite3.Xsqlite3_result_null(tls, ctx)
 15512  			} else if int32(m)&0170000 == 0120000 {
 15513  				var aBuf uintptr = bp
 15514  				var nBuf sqlite3_int64 = int64(64)
 15515  				var n int32
 15516  
 15517  				for 1 != 0 {
 15518  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 15519  					if sqlite3_int64(n) < nBuf {
 15520  						break
 15521  					}
 15522  					if aBuf != bp {
 15523  						sqlite3.Xsqlite3_free(tls, aBuf)
 15524  					}
 15525  					nBuf = nBuf * int64(2)
 15526  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 15527  					if aBuf == uintptr(0) {
 15528  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15529  						return SQLITE_NOMEM
 15530  					}
 15531  				}
 15532  
 15533  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 15534  				if aBuf != bp {
 15535  					sqlite3.Xsqlite3_free(tls, aBuf)
 15536  				}
 15537  			} else {
 15538  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15539  			}
 15540  
 15541  		}
 15542  		fallthrough
 15543  	case FSDIR_COLUMN_PATH:
 15544  		fallthrough
 15545  	default:
 15546  		{
 15547  			break
 15548  
 15549  		}
 15550  	}
 15551  	return SQLITE_OK
 15552  }
 15553  
 15554  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15555  	var pCur uintptr = cur
 15556  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 15557  	return SQLITE_OK
 15558  }
 15559  
 15560  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 15561  	var pCur uintptr = cur
 15562  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 15563  }
 15564  
 15565  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15566  	bp := tls.Alloc(32)
 15567  	defer tls.Free(32)
 15568  
 15569  	var zDir uintptr = uintptr(0)
 15570  	var pCur uintptr = cur
 15571  	_ = idxStr
 15572  	fsdirResetCursor(tls, pCur)
 15573  
 15574  	if idxNum == 0 {
 15575  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 15576  		return SQLITE_ERROR
 15577  	}
 15578  
 15579  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15580  	if zDir == uintptr(0) {
 15581  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 15582  		return SQLITE_ERROR
 15583  	}
 15584  	if argc == 2 {
 15585  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 15586  	}
 15587  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 15588  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 15589  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 15590  	} else {
 15591  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 15592  	}
 15593  
 15594  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15595  		return SQLITE_NOMEM
 15596  	}
 15597  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15598  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15599  		return SQLITE_ERROR
 15600  	}
 15601  
 15602  	return SQLITE_OK
 15603  }
 15604  
 15605  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15606  	var i int32
 15607  	var idxPath int32 = -1
 15608  	var idxDir int32 = -1
 15609  	var seenPath int32 = 0
 15610  	var seenDir int32 = 0
 15611  	var pConstraint uintptr
 15612  
 15613  	_ = tab
 15614  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15615  	i = 0
 15616  __1:
 15617  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15618  		goto __3
 15619  	}
 15620  	{
 15621  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 15622  			goto __2
 15623  		}
 15624  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 15625  		case FSDIR_COLUMN_PATH:
 15626  			{
 15627  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15628  					idxPath = i
 15629  					seenPath = 0
 15630  				} else if idxPath < 0 {
 15631  					seenPath = 1
 15632  				}
 15633  				break
 15634  
 15635  			}
 15636  		case FSDIR_COLUMN_DIR:
 15637  			{
 15638  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15639  					idxDir = i
 15640  					seenDir = 0
 15641  				} else if idxDir < 0 {
 15642  					seenDir = 1
 15643  				}
 15644  				break
 15645  
 15646  			}
 15647  		}
 15648  
 15649  	}
 15650  	goto __2
 15651  __2:
 15652  	i++
 15653  	pConstraint += 12
 15654  	goto __1
 15655  	goto __3
 15656  __3:
 15657  	;
 15658  	if seenPath != 0 || seenDir != 0 {
 15659  		return SQLITE_CONSTRAINT
 15660  	}
 15661  
 15662  	if idxPath < 0 {
 15663  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 15664  
 15665  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 15666  	} else {
 15667  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 15668  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 15669  		if idxDir >= 0 {
 15670  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 15671  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 15672  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 15673  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15674  		} else {
 15675  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15676  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 15677  		}
 15678  	}
 15679  
 15680  	return SQLITE_OK
 15681  }
 15682  
 15683  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 15684  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 15685  	return rc
 15686  }
 15687  
 15688  var fsdirModule1 = sqlite3_module{
 15689  	FxConnect:    0,
 15690  	FxBestIndex:  0,
 15691  	FxDisconnect: 0,
 15692  	FxOpen:       0,
 15693  	FxClose:      0,
 15694  	FxFilter:     0,
 15695  	FxNext:       0,
 15696  	FxEof:        0,
 15697  	FxColumn:     0,
 15698  	FxRowid:      0,
 15699  }
 15700  
 15701  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15702  	var rc int32 = SQLITE_OK
 15703  	_ = pApi
 15704  
 15705  	_ = pzErrMsg
 15706  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 15707  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15708  		*(*uintptr)(unsafe.Pointer(&struct {
 15709  			f func(*libc.TLS, uintptr, int32, uintptr)
 15710  		}{readfileFunc})), uintptr(0), uintptr(0))
 15711  	if rc == SQLITE_OK {
 15712  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 15713  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15714  			*(*uintptr)(unsafe.Pointer(&struct {
 15715  				f func(*libc.TLS, uintptr, int32, uintptr)
 15716  			}{writefileFunc})), uintptr(0), uintptr(0))
 15717  	}
 15718  	if rc == SQLITE_OK {
 15719  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 15720  			*(*uintptr)(unsafe.Pointer(&struct {
 15721  				f func(*libc.TLS, uintptr, int32, uintptr)
 15722  			}{lsModeFunc})), uintptr(0), uintptr(0))
 15723  	}
 15724  	if rc == SQLITE_OK {
 15725  		rc = fsdirRegister(tls, db)
 15726  	}
 15727  	return rc
 15728  }
 15729  
 15730  type fuzzer_vtab1 = struct {
 15731  	Fbase        sqlite3_vtab
 15732  	FzClassName  uintptr
 15733  	FpRule       uintptr
 15734  	FnCursor     int32
 15735  	F__ccgo_pad1 [4]byte
 15736  }
 15737  
 15738  type fuzzer_vtab = fuzzer_vtab1
 15739  type fuzzer_cursor1 = struct {
 15740  	Fbase        sqlite3_vtab_cursor
 15741  	FiRowid      sqlite3_int64
 15742  	FpVtab       uintptr
 15743  	FrLimit      fuzzer_cost
 15744  	F__ccgo_pad1 [4]byte
 15745  	FpStem       uintptr
 15746  	FpDone       uintptr
 15747  	FaQueue      [20]uintptr
 15748  	FmxQueue     int32
 15749  	F__ccgo_pad2 [4]byte
 15750  	FzBuf        uintptr
 15751  	FnBuf        int32
 15752  	FnStem       int32
 15753  	FiRuleset    int32
 15754  	F__ccgo_pad3 [4]byte
 15755  	FnullRule    fuzzer_rule
 15756  	FapHash      [4001]uintptr
 15757  }
 15758  
 15759  type fuzzer_cursor = fuzzer_cursor1
 15760  type fuzzer_rule1 = struct {
 15761  	FpNext       uintptr
 15762  	FzFrom       uintptr
 15763  	FrCost       fuzzer_cost
 15764  	FnFrom       fuzzer_len
 15765  	FnTo         fuzzer_len
 15766  	F__ccgo_pad1 [2]byte
 15767  	FiRuleset    fuzzer_ruleid
 15768  	FzTo         [4]int8
 15769  }
 15770  
 15771  type fuzzer_rule = fuzzer_rule1
 15772  type fuzzer_stem1 = struct {
 15773  	FzBasis      uintptr
 15774  	FpRule       uintptr
 15775  	FpNext       uintptr
 15776  	FpHash       uintptr
 15777  	FrBaseCost   fuzzer_cost
 15778  	FrCostX      fuzzer_cost
 15779  	FnBasis      fuzzer_len
 15780  	Fn           fuzzer_len
 15781  	F__ccgo_pad1 [6]byte
 15782  }
 15783  
 15784  type fuzzer_stem = fuzzer_stem1
 15785  
 15786  type fuzzer_cost = int32
 15787  type fuzzer_len = int8
 15788  type fuzzer_ruleid = int32
 15789  
 15790  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15791  	bp := tls.Alloc(32)
 15792  	defer tls.Free(32)
 15793  
 15794  	var pTail uintptr
 15795  
 15796  	pTail = bp
 15797  	for pA != 0 && pB != 0 {
 15798  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 15799  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15800  			pTail = pA
 15801  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 15802  		} else {
 15803  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15804  			pTail = pB
 15805  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 15806  		}
 15807  	}
 15808  	if pA == uintptr(0) {
 15809  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15810  	} else {
 15811  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15812  	}
 15813  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 15814  }
 15815  
 15816  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 15817  	bp := tls.Alloc(48)
 15818  	defer tls.Free(48)
 15819  
 15820  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 15821  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 15822  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 15823  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 15824  
 15825  	var rc int32 = SQLITE_OK
 15826  	var nFrom int32
 15827  	var nTo int32
 15828  	var pRule uintptr = uintptr(0)
 15829  
 15830  	if zFrom == uintptr(0) {
 15831  		zFrom = ts + 584
 15832  	}
 15833  	if zTo == uintptr(0) {
 15834  		zTo = ts + 584
 15835  	}
 15836  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 15837  	nTo = int32(libc.Xstrlen(tls, zTo))
 15838  
 15839  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 15840  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 15841  		return SQLITE_OK
 15842  	}
 15843  
 15844  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 15845  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 15846  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 15847  		rc = SQLITE_ERROR
 15848  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 15849  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 15850  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 15851  		rc = SQLITE_ERROR
 15852  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 15853  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 15854  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 15855  		rc = SQLITE_ERROR
 15856  	} else {
 15857  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 15858  		if pRule == uintptr(0) {
 15859  			rc = SQLITE_NOMEM
 15860  		} else {
 15861  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})))
 15862  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 15863  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 15864  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 15865  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 15866  			libc.Xmemcpy(tls, pRule+28, zTo, uint64(nTo+1))
 15867  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 15868  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 15869  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 15870  		}
 15871  	}
 15872  
 15873  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 15874  	return rc
 15875  }
 15876  
 15877  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 15878  	bp := tls.Alloc(192)
 15879  	defer tls.Free(192)
 15880  
 15881  	var rc int32 = SQLITE_OK
 15882  	var zSql uintptr
 15883  	var pHead uintptr = uintptr(0)
 15884  
 15885  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 15886  	if zSql == uintptr(0) {
 15887  		rc = SQLITE_NOMEM
 15888  	} else {
 15889  		var rc2 int32
 15890  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 15891  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 15892  		if rc != SQLITE_OK {
 15893  			*(*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)))
 15894  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 15895  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 15896  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 15897  			rc = SQLITE_ERROR
 15898  		} else {
 15899  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 15900  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 15901  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 15902  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 15903  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 15904  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 15905  				}
 15906  			}
 15907  		}
 15908  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 15909  		if rc == SQLITE_OK {
 15910  			rc = rc2
 15911  		}
 15912  	}
 15913  	sqlite3.Xsqlite3_free(tls, zSql)
 15914  
 15915  	if rc == SQLITE_OK {
 15916  		var i uint32
 15917  		var pX uintptr
 15918  
 15919  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15920  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15921  		}
 15922  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 15923  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 15924  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 15925  			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++ {
 15926  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15927  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15928  			}
 15929  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15930  		}
 15931  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 15932  		i = uint32(1)
 15933  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15934  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15935  		}
 15936  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 15937  	} else {
 15938  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 15939  	}
 15940  
 15941  	return rc
 15942  }
 15943  
 15944  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 15945  	var nIn sqlite3_int64
 15946  	var zOut uintptr
 15947  
 15948  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 15949  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 15950  	if zOut != 0 {
 15951  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 15952  
 15953  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 15954  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 15955  		} else {
 15956  			var iOut int32 = 0
 15957  			var iIn int32
 15958  
 15959  			if int32(q) == '[' {
 15960  				q = int8(']')
 15961  			}
 15962  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 15963  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 15964  					iIn++
 15965  				}
 15966  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 15967  			}
 15968  		}
 15969  
 15970  	}
 15971  	return zOut
 15972  }
 15973  
 15974  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15975  	var p uintptr = pVtab
 15976  
 15977  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 15978  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 15979  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15980  		sqlite3.Xsqlite3_free(tls, pRule)
 15981  	}
 15982  	sqlite3.Xsqlite3_free(tls, p)
 15983  	return SQLITE_OK
 15984  }
 15985  
 15986  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15987  	bp := tls.Alloc(8)
 15988  	defer tls.Free(8)
 15989  
 15990  	var rc int32 = SQLITE_OK
 15991  	var pNew uintptr = uintptr(0)
 15992  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 15993  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 15994  
 15995  	if argc != 4 {
 15996  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 15997  			ts+5394, libc.VaList(bp, zModule))
 15998  		rc = SQLITE_ERROR
 15999  	} else {
 16000  		var nModule sqlite3_int64
 16001  
 16002  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 16003  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 16004  		if pNew == uintptr(0) {
 16005  			rc = SQLITE_NOMEM
 16006  		} else {
 16007  			var zTab uintptr
 16008  
 16009  			libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})))
 16010  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 16011  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 16012  
 16013  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 16014  			if zTab == uintptr(0) {
 16015  				rc = SQLITE_NOMEM
 16016  			} else {
 16017  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 16018  				sqlite3.Xsqlite3_free(tls, zTab)
 16019  			}
 16020  
 16021  			if rc == SQLITE_OK {
 16022  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 16023  			}
 16024  			if rc != SQLITE_OK {
 16025  				fuzzerDisconnect(tls, pNew)
 16026  				pNew = uintptr(0)
 16027  			} else {
 16028  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 16029  			}
 16030  		}
 16031  	}
 16032  
 16033  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 16034  	return rc
 16035  }
 16036  
 16037  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 16038  	var p uintptr = pVTab
 16039  	var pCur uintptr
 16040  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 16041  	if pCur == uintptr(0) {
 16042  		return SQLITE_NOMEM
 16043  	}
 16044  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})))
 16045  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 16046  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 16047  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 16048  	return SQLITE_OK
 16049  }
 16050  
 16051  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 16052  	for pStem != 0 {
 16053  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 16054  		sqlite3.Xsqlite3_free(tls, pStem)
 16055  		pStem = pNext
 16056  	}
 16057  }
 16058  
 16059  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 16060  	var i int32
 16061  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16062  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 16063  	for i = 0; i < FUZZER_NQUEUE; i++ {
 16064  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16065  	}
 16066  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16067  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 16068  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 16069  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16070  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 16071  		libc.Xmemset(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})))
 16072  		libc.Xmemset(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})))
 16073  	}
 16074  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 16075  }
 16076  
 16077  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 16078  	var pCur uintptr = cur
 16079  	fuzzerClearCursor(tls, pCur, 0)
 16080  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16081  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 16082  	sqlite3.Xsqlite3_free(tls, pCur)
 16083  	return SQLITE_OK
 16084  }
 16085  
 16086  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 16087  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 16088  	var n int32
 16089  	var z uintptr
 16090  
 16091  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 16092  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 16093  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 16094  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 16095  			return SQLITE_NOMEM
 16096  		}
 16097  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 16098  	}
 16099  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 16100  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 16101  	if n < 0 {
 16102  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 16103  	} else {
 16104  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n))
 16105  		libc.Xmemcpy(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 16106  		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)),
 16107  			uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 16108  	}
 16109  
 16110  	return SQLITE_OK
 16111  }
 16112  
 16113  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 16114  	var h uint32 = uint32(0)
 16115  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 16116  		h = h<<3 ^ h>>29 ^ uint32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 16117  	}
 16118  	return h % uint32(FUZZER_HASH)
 16119  }
 16120  
 16121  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 16122  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 16123  }
 16124  
 16125  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16126  	var h uint32
 16127  	var pLookup uintptr
 16128  
 16129  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16130  		return -1
 16131  	}
 16132  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16133  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16134  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 16135  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 16136  	}
 16137  	return libc.Bool32(pLookup != uintptr(0))
 16138  }
 16139  
 16140  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 16141  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 16142  		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))
 16143  }
 16144  
 16145  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16146  	var pRule uintptr
 16147  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 16148  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 16149  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 16150  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 16151  				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 {
 16152  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 16153  				if rc < 0 {
 16154  					return -1
 16155  				}
 16156  				if rc == 0 {
 16157  					fuzzerCost(tls, pStem)
 16158  					return 1
 16159  				}
 16160  			}
 16161  		}
 16162  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 16163  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16164  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16165  		}
 16166  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 16167  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 16168  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 16169  		}
 16170  	}
 16171  	return 0
 16172  }
 16173  
 16174  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 16175  	bp := tls.Alloc(48)
 16176  	defer tls.Free(48)
 16177  
 16178  	var pTail uintptr
 16179  
 16180  	pTail = bp
 16181  	for pA != 0 && pB != 0 {
 16182  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 16183  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16184  			pTail = pA
 16185  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 16186  		} else {
 16187  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16188  			pTail = pB
 16189  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 16190  		}
 16191  	}
 16192  	if pA == uintptr(0) {
 16193  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16194  	} else {
 16195  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16196  	}
 16197  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 16198  }
 16199  
 16200  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 16201  	var pBest uintptr
 16202  	var pX uintptr
 16203  	var iBest int32
 16204  	var i int32
 16205  
 16206  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 16207  		iBest = -1
 16208  		pBest = uintptr(0)
 16209  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16210  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 16211  			if pX == uintptr(0) {
 16212  				continue
 16213  			}
 16214  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 16215  				pBest = pX
 16216  				iBest = i
 16217  			}
 16218  		}
 16219  		if pBest != 0 {
 16220  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 16221  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 16222  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 16223  		}
 16224  	}
 16225  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16226  }
 16227  
 16228  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 16229  	var pX uintptr
 16230  	var i int32
 16231  
 16232  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 16233  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16234  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 16235  		pNew = pX
 16236  	}
 16237  
 16238  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16239  	pX = pNew
 16240  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16241  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 16242  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 16243  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 16244  		} else {
 16245  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16246  			break
 16247  		}
 16248  	}
 16249  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 16250  		if i < FUZZER_NQUEUE {
 16251  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 16252  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 16253  		} else {
 16254  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 16255  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 16256  		}
 16257  	}
 16258  
 16259  	return fuzzerLowestCostStem(tls, pCur)
 16260  }
 16261  
 16262  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 16263  	var pNew uintptr
 16264  	var pRule uintptr
 16265  	var h uint32
 16266  
 16267  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 16268  	if pNew == uintptr(0) {
 16269  		return uintptr(0)
 16270  	}
 16271  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})))
 16272  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 16273  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 16274  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 16275  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16276  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16277  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16278  	}
 16279  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 16280  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 16281  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 16282  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 16283  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 16284  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 16285  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 16286  	return pNew
 16287  }
 16288  
 16289  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 16290  	var pCur uintptr = cur
 16291  	var rc int32
 16292  	var pStem uintptr
 16293  	var pNew uintptr
 16294  
 16295  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 16296  
 16297  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16298  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 16299  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 16300  		if rc == SQLITE_NOMEM {
 16301  			return SQLITE_NOMEM
 16302  		}
 16303  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 16304  		if pNew != 0 {
 16305  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 16306  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16307  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 16308  			} else {
 16309  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 16310  					return SQLITE_OK
 16311  				}
 16312  			}
 16313  		} else {
 16314  			return SQLITE_NOMEM
 16315  		}
 16316  	}
 16317  
 16318  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 16319  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 16320  		if res < 0 {
 16321  			return SQLITE_NOMEM
 16322  		} else if res > 0 {
 16323  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16324  			pStem = fuzzerInsert(tls, pCur, pStem)
 16325  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 16326  				if rc < 0 {
 16327  					return SQLITE_NOMEM
 16328  				}
 16329  				continue
 16330  			}
 16331  			return SQLITE_OK
 16332  		}
 16333  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16334  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16335  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 16336  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 16337  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16338  			if rc < 0 {
 16339  				return SQLITE_NOMEM
 16340  			}
 16341  			if rc == 0 {
 16342  				return SQLITE_OK
 16343  			}
 16344  		}
 16345  	}
 16346  
 16347  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16348  	return SQLITE_OK
 16349  }
 16350  
 16351  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16352  	var pCur uintptr = pVtabCursor
 16353  	var zWord uintptr = ts + 584
 16354  	var pStem uintptr
 16355  	var idx int32
 16356  
 16357  	fuzzerClearCursor(tls, pCur, 1)
 16358  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 16359  	idx = 0
 16360  	if idxNum&1 != 0 {
 16361  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16362  		idx++
 16363  	}
 16364  	if idxNum&2 != 0 {
 16365  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16366  		idx++
 16367  	}
 16368  	if idxNum&4 != 0 {
 16369  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 16370  		idx++
 16371  	}
 16372  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16373  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 16374  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 16375  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 16376  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 16377  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 16378  
 16379  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 16380  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 16381  		if pStem == uintptr(0) {
 16382  			return SQLITE_NOMEM
 16383  		}
 16384  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 16385  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 16386  	} else {
 16387  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16388  	}
 16389  
 16390  	return SQLITE_OK
 16391  }
 16392  
 16393  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16394  	var pCur uintptr = cur
 16395  	if i == 0 {
 16396  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 16397  			return SQLITE_NOMEM
 16398  		}
 16399  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 16400  	} else if i == 1 {
 16401  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 16402  	} else {
 16403  		sqlite3.Xsqlite3_result_null(tls, ctx)
 16404  	}
 16405  	return SQLITE_OK
 16406  }
 16407  
 16408  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16409  	var pCur uintptr = cur
 16410  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 16411  	return SQLITE_OK
 16412  }
 16413  
 16414  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 16415  	var pCur uintptr = cur
 16416  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 16417  }
 16418  
 16419  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16420  	var iPlan int32 = 0
 16421  	var iDistTerm int32 = -1
 16422  	var iRulesetTerm int32 = -1
 16423  	var i int32
 16424  	var seenMatch int32 = 0
 16425  	var pConstraint uintptr
 16426  	var rCost float64 = 1e12
 16427  
 16428  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 16429  	i = 0
 16430  __1:
 16431  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 16432  		goto __3
 16433  	}
 16434  	{
 16435  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16436  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16437  			seenMatch = 1
 16438  		}
 16439  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16440  			goto __2
 16441  		}
 16442  		if iPlan&1 == 0 &&
 16443  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16444  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16445  			iPlan = iPlan | 1
 16446  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16447  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16448  			rCost = rCost / 1e6
 16449  		}
 16450  		if iPlan&2 == 0 &&
 16451  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16452  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16453  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16454  			iPlan = iPlan | 2
 16455  			iDistTerm = i
 16456  			rCost = rCost / 10.0
 16457  		}
 16458  		if iPlan&4 == 0 &&
 16459  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 16460  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 16461  			iPlan = iPlan | 4
 16462  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16463  			iRulesetTerm = i
 16464  			rCost = rCost / 10.0
 16465  		}
 16466  
 16467  	}
 16468  	goto __2
 16469  __2:
 16470  	i++
 16471  	pConstraint += 12
 16472  	goto __1
 16473  	goto __3
 16474  __3:
 16475  	;
 16476  	if iPlan&2 != 0 {
 16477  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 16478  	}
 16479  	if iPlan&4 != 0 {
 16480  		var idx int32 = 1
 16481  		if iPlan&1 != 0 {
 16482  			idx++
 16483  		}
 16484  		if iPlan&2 != 0 {
 16485  			idx++
 16486  		}
 16487  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 16488  	}
 16489  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 16490  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 16491  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 16492  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 16493  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 16494  	}
 16495  	if seenMatch != 0 && iPlan&1 == 0 {
 16496  		rCost = 1e99
 16497  	}
 16498  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 16499  
 16500  	return SQLITE_OK
 16501  }
 16502  
 16503  var fuzzerModule = sqlite3_module{
 16504  	FxCreate:     0,
 16505  	FxConnect:    0,
 16506  	FxBestIndex:  0,
 16507  	FxDisconnect: 0,
 16508  	FxDestroy:    0,
 16509  	FxOpen:       0,
 16510  	FxClose:      0,
 16511  	FxFilter:     0,
 16512  	FxNext:       0,
 16513  	FxEof:        0,
 16514  	FxColumn:     0,
 16515  	FxRowid:      0,
 16516  }
 16517  
 16518  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16519  	var rc int32 = SQLITE_OK
 16520  	_ = pApi
 16521  
 16522  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 16523  	return rc
 16524  }
 16525  
 16526  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16527  	bp := tls.Alloc(160)
 16528  	defer tls.Free(160)
 16529  
 16530  	if argc == 1 {
 16531  		var m sqlite3_int64
 16532  
 16533  		var e int32
 16534  		var isNeg int32
 16535  
 16536  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16537  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16538  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16539  			var i uint32
 16540  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 16541  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16542  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16543  			}
 16544  			libc.Xmemcpy(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))))
 16545  		} else {
 16546  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16547  		}
 16548  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 16549  			isNeg = 1
 16550  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 16551  		} else {
 16552  			isNeg = 0
 16553  		}
 16554  		libc.Xmemcpy(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 16555  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 16556  			e = 0
 16557  			m = int64(0)
 16558  		} else {
 16559  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 16560  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 16561  			if e == 0 {
 16562  				m <<= 1
 16563  			} else {
 16564  				m = m | int64(1)<<52
 16565  			}
 16566  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 16567  				m >>= 1
 16568  				e++
 16569  			}
 16570  			if isNeg != 0 {
 16571  				m = -m
 16572  			}
 16573  		}
 16574  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 16575  		case 0:
 16576  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+5490,
 16577  				libc.VaList(bp, m, e-1075))
 16578  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 16579  			break
 16580  			fallthrough
 16581  		case 1:
 16582  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 16583  			break
 16584  			fallthrough
 16585  		case 2:
 16586  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 16587  			break
 16588  		}
 16589  	} else {
 16590  		var m sqlite3_int64
 16591  		var e sqlite3_int64
 16592  
 16593  		var isNeg int32 = 0
 16594  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16595  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16596  
 16597  		if e > int64(10000) {
 16598  			e = int64(10000)
 16599  		} else if e < int64(-10000) {
 16600  			e = int64(-10000)
 16601  		}
 16602  
 16603  		if m < int64(0) {
 16604  			isNeg = 1
 16605  			m = -m
 16606  			if m < int64(0) {
 16607  				return
 16608  			}
 16609  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 16610  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 16611  			return
 16612  		}
 16613  		for m>>32&int64(0xffe00000) != 0 {
 16614  			m >>= 1
 16615  			e++
 16616  		}
 16617  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 16618  			m <<= 1
 16619  			e--
 16620  		}
 16621  		e = e + int64(1075)
 16622  		if e <= int64(0) {
 16623  			if int64(1)-e >= int64(64) {
 16624  				m = int64(0)
 16625  			} else {
 16626  				m >>= int64(1) - e
 16627  			}
 16628  			e = int64(0)
 16629  		} else if e > int64(0x7ff) {
 16630  			e = int64(0x7ff)
 16631  		}
 16632  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 16633  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 16634  		if isNeg != 0 {
 16635  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 16636  		}
 16637  		libc.Xmemcpy(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))))
 16638  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 16639  	}
 16640  }
 16641  
 16642  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16643  	bp := tls.Alloc(16)
 16644  	defer tls.Free(16)
 16645  
 16646  	_ = argc
 16647  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16648  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16649  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16650  		var i uint32
 16651  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 16652  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16653  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16654  		}
 16655  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16656  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 16657  	}
 16658  }
 16659  
 16660  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16661  	bp := tls.Alloc(24)
 16662  	defer tls.Free(24)
 16663  
 16664  	_ = argc
 16665  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 16666  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 16667  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16668  
 16669  		var i uint32
 16670  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16671  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 16672  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 16673  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 16674  		}
 16675  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 16676  	}
 16677  }
 16678  
 16679  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16680  	var i uint32
 16681  	var rc int32 = SQLITE_OK
 16682  	_ = pApi
 16683  
 16684  	_ = pzErrMsg
 16685  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 16686  		FzFName uintptr
 16687  		FnArg   int32
 16688  		FiAux   int32
 16689  		FxFunc  uintptr
 16690  	}{})) && rc == SQLITE_OK; i++ {
 16691  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 16692  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 16693  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 16694  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 16695  	}
 16696  	return rc
 16697  }
 16698  
 16699  var aFunc1 = [6]struct {
 16700  	FzFName uintptr
 16701  	FnArg   int32
 16702  	FiAux   int32
 16703  	FxFunc  uintptr
 16704  }{
 16705  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 16706  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 16707  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 16708  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 16709  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 16710  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 16711  }
 16712  
 16713  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 16714  	bp := tls.Alloc(88)
 16715  	defer tls.Free(88)
 16716  
 16717  	var rc int32 = SQLITE_OK
 16718  	var zSql uintptr = uintptr(0)
 16719  	var pgsz int32 = 0
 16720  	var nTotal int32 = 0
 16721  
 16722  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 16723  		return SQLITE_MISUSE
 16724  	}
 16725  
 16726  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 16727  		libc.VaList(bp, func() uintptr {
 16728  			if zDb != 0 {
 16729  				return ts + 5624
 16730  			}
 16731  			return ts + 584
 16732  		}(), func() uintptr {
 16733  			if zDb != 0 {
 16734  				return zDb
 16735  			}
 16736  			return ts + 584
 16737  		}(), func() uintptr {
 16738  			if zDb != 0 {
 16739  				return ts + 5626
 16740  			}
 16741  			return ts + 584
 16742  		}()))
 16743  	if zSql == uintptr(0) {
 16744  		return SQLITE_NOMEM
 16745  	}
 16746  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 16747  	sqlite3.Xsqlite3_free(tls, zSql)
 16748  
 16749  	if rc == SQLITE_OK {
 16750  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 16751  			libc.VaList(bp+24, func() uintptr {
 16752  				if zDb != 0 {
 16753  					return ts + 5624
 16754  				}
 16755  				return ts + 584
 16756  			}(), func() uintptr {
 16757  				if zDb != 0 {
 16758  					return zDb
 16759  				}
 16760  				return ts + 584
 16761  			}(), func() uintptr {
 16762  				if zDb != 0 {
 16763  					return ts + 5626
 16764  				}
 16765  				return ts + 584
 16766  			}()))
 16767  		if zSql == uintptr(0) {
 16768  			rc = SQLITE_NOMEM
 16769  		} else {
 16770  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16771  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 16772  			sqlite3.Xsqlite3_free(tls, zSql)
 16773  			if rc == SQLITE_OK {
 16774  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 16775  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 16776  				}
 16777  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 16778  			}
 16779  			if rc == SQLITE_OK && pgsz == 0 {
 16780  				rc = SQLITE_ERROR
 16781  			}
 16782  		}
 16783  	}
 16784  
 16785  	if rc == SQLITE_OK {
 16786  		var rc2 int32
 16787  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 16788  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 16789  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 16790  			var iPg sqlite3_int64 = int64(1)
 16791  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 16792  			for 1 != 0 {
 16793  				rc = (*struct {
 16794  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 16795  				})(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)
 16796  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 16797  					break
 16798  				}
 16799  
 16800  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 16801  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 16802  
 16803  				rc = (*struct {
 16804  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 16805  				})(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)))
 16806  				if rc != SQLITE_OK {
 16807  					break
 16808  				}
 16809  				iPg++
 16810  			}
 16811  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 16812  				ts+5652, libc.VaList(bp+48, func() int64 {
 16813  					if iPg == int64(1) {
 16814  						return int64(0)
 16815  					}
 16816  					return iPg
 16817  				}(),
 16818  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 16819  		}
 16820  
 16821  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 16822  		if rc == SQLITE_OK {
 16823  			rc = rc2
 16824  		}
 16825  	}
 16826  
 16827  	return rc
 16828  }
 16829  
 16830  type nextCharContext1 = struct {
 16831  	Fdb           uintptr
 16832  	FpStmt        uintptr
 16833  	FzPrefix      uintptr
 16834  	FnPrefix      int32
 16835  	FnAlloc       int32
 16836  	FnUsed        int32
 16837  	F__ccgo_pad1  [4]byte
 16838  	FaResult      uintptr
 16839  	FmallocFailed int32
 16840  	FotherError   int32
 16841  }
 16842  
 16843  type nextCharContext = nextCharContext1
 16844  
 16845  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 16846  	var i int32
 16847  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 16848  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 16849  			return
 16850  		}
 16851  	}
 16852  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 16853  		var aNew uintptr
 16854  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 16855  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 16856  		if aNew == uintptr(0) {
 16857  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 16858  			return
 16859  		} else {
 16860  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 16861  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 16862  		}
 16863  	}
 16864  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 16865  }
 16866  
 16867  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 16868  	if c < uint32(0x00080) {
 16869  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 16870  		return 1
 16871  	}
 16872  	if c < uint32(0x00800) {
 16873  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 16874  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16875  		return 2
 16876  	}
 16877  	if c < uint32(0x10000) {
 16878  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 16879  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16880  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16881  		return 3
 16882  	}
 16883  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 16884  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 16885  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16886  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16887  	return 4
 16888  }
 16889  
 16890  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 16891  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 16892  	if c < uint32(0xc0) {
 16893  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16894  		return 1
 16895  	} else {
 16896  		var n int32 = 1
 16897  		c = uint32(validBits[c-uint32(0xc0)])
 16898  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 16899  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 16900  		}
 16901  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 16902  			c = uint32(0xFFFD)
 16903  		}
 16904  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16905  		return n
 16906  	}
 16907  	return int32(0)
 16908  }
 16909  
 16910  var validBits = [64]uint8{
 16911  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16912  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16913  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 16914  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 16915  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16916  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16917  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16918  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 16919  }
 16920  
 16921  func findNextChars(tls *libc.TLS, p uintptr) {
 16922  	bp := tls.Alloc(12)
 16923  	defer tls.Free(12)
 16924  
 16925  	var cPrev uint32 = uint32(0)
 16926  
 16927  	var n int32
 16928  	var rc int32
 16929  
 16930  	for {
 16931  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 16932  			uintptr(0))
 16933  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 16934  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 16935  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16936  		if rc == SQLITE_DONE {
 16937  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16938  			return
 16939  		} else if rc != SQLITE_ROW {
 16940  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 16941  			return
 16942  		} else {
 16943  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 16944  
 16945  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 16946  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16947  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 16948  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 16949  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 16950  				return
 16951  			}
 16952  		}
 16953  	}
 16954  }
 16955  
 16956  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16957  	bp := tls.Alloc(136)
 16958  	defer tls.Free(136)
 16959  
 16960  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16961  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 16962  	var zWhere uintptr
 16963  	var zCollName uintptr
 16964  	var zWhereClause uintptr = uintptr(0)
 16965  	var zColl uintptr = uintptr(0)
 16966  	var zSql uintptr
 16967  	var rc int32
 16968  
 16969  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})))
 16970  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 16971  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16972  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16973  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 16974  		return
 16975  	}
 16976  	if argc >= 4 &&
 16977  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 16978  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 16979  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 16980  		if zWhereClause == uintptr(0) {
 16981  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16982  			return
 16983  		}
 16984  	} else {
 16985  		zWhereClause = ts + 584
 16986  	}
 16987  	if argc >= 5 &&
 16988  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 16989  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 16990  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 16991  		if zColl == uintptr(0) {
 16992  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16993  			if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 16994  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 16995  			}
 16996  			return
 16997  		}
 16998  	} else {
 16999  		zColl = ts + 584
 17000  	}
 17001  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 17002  		ts+5728,
 17003  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 17004  	if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 17005  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 17006  	}
 17007  	if *(*int8)(unsafe.Pointer(zColl)) != 0 {
 17008  		sqlite3.Xsqlite3_free(tls, zColl)
 17009  	}
 17010  	if zSql == uintptr(0) {
 17011  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17012  		return
 17013  	}
 17014  
 17015  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 17016  	sqlite3.Xsqlite3_free(tls, zSql)
 17017  	if rc != 0 {
 17018  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 17019  		return
 17020  	}
 17021  	findNextChars(tls, bp+80)
 17022  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 17023  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17024  	} else {
 17025  		var pRes uintptr
 17026  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 17027  		if pRes == uintptr(0) {
 17028  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17029  		} else {
 17030  			var i int32
 17031  			var n int32 = 0
 17032  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 17033  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 17034  			}
 17035  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 17036  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 17037  		}
 17038  	}
 17039  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 17040  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 17041  }
 17042  
 17043  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17044  	var rc int32 = SQLITE_OK
 17045  	_ = pApi
 17046  
 17047  	_ = pzErrMsg
 17048  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 17049  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17050  		*(*uintptr)(unsafe.Pointer(&struct {
 17051  			f func(*libc.TLS, uintptr, int32, uintptr)
 17052  		}{nextCharFunc})), uintptr(0), uintptr(0))
 17053  	if rc == SQLITE_OK {
 17054  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 17055  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17056  			*(*uintptr)(unsafe.Pointer(&struct {
 17057  				f func(*libc.TLS, uintptr, int32, uintptr)
 17058  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17059  	}
 17060  	if rc == SQLITE_OK {
 17061  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 17062  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17063  			*(*uintptr)(unsafe.Pointer(&struct {
 17064  				f func(*libc.TLS, uintptr, int32, uintptr)
 17065  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17066  	}
 17067  	return rc
 17068  }
 17069  
 17070  var aiClass = [256]uint8{
 17071  	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),
 17072  	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),
 17073  	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),
 17074  	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),
 17075  	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),
 17076  	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),
 17077  	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),
 17078  	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),
 17079  	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),
 17080  	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),
 17081  	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),
 17082  	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),
 17083  	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),
 17084  	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),
 17085  	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),
 17086  	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),
 17087  }
 17088  
 17089  var sqlite3UpperToLower = [256]uint8{
 17090  	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),
 17091  	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),
 17092  	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),
 17093  	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),
 17094  	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),
 17095  	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),
 17096  	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),
 17097  	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),
 17098  	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),
 17099  	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),
 17100  	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),
 17101  	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),
 17102  	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),
 17103  	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),
 17104  	uint8(252), uint8(253), uint8(254), uint8(255),
 17105  }
 17106  
 17107  var sqlite3CtypeMap = [256]uint8{
 17108  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17109  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 17110  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17111  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17112  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 17113  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17114  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 17115  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17116  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 17117  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17118  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17119  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 17120  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 17121  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17122  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17123  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17124  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17125  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17126  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17127  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17128  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17129  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17130  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17131  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17132  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17133  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17134  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17135  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17136  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17137  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17138  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17139  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17140  }
 17141  
 17142  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 17143  	var i int32
 17144  	var c int32
 17145  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 17146  	case CC_SPACE:
 17147  		{
 17148  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 17149  			}
 17150  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17151  			return i
 17152  
 17153  		}
 17154  	case CC_MINUS:
 17155  		{
 17156  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 17157  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 17158  				}
 17159  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17160  				return i
 17161  			}
 17162  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17163  			return 1
 17164  
 17165  		}
 17166  	case CC_LP:
 17167  		{
 17168  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17169  			return 1
 17170  
 17171  		}
 17172  	case CC_RP:
 17173  		{
 17174  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17175  			return 1
 17176  
 17177  		}
 17178  	case CC_SEMI:
 17179  		{
 17180  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17181  			return 1
 17182  
 17183  		}
 17184  	case CC_PLUS:
 17185  		{
 17186  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17187  			return 1
 17188  
 17189  		}
 17190  	case CC_STAR:
 17191  		{
 17192  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17193  			return 1
 17194  
 17195  		}
 17196  	case CC_SLASH:
 17197  		{
 17198  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 17199  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17200  				return 1
 17201  			}
 17202  			i = 3
 17203  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 17204  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17205  			}
 17206  			if c != 0 {
 17207  				i++
 17208  			}
 17209  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17210  			return i
 17211  
 17212  		}
 17213  	case CC_PERCENT:
 17214  		{
 17215  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17216  			return 1
 17217  
 17218  		}
 17219  	case CC_EQ:
 17220  		{
 17221  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17222  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 17223  
 17224  		}
 17225  	case CC_LT:
 17226  		{
 17227  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17228  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17229  				return 2
 17230  			} else if c == '>' {
 17231  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17232  				return 2
 17233  			} else if c == '<' {
 17234  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17235  				return 2
 17236  			} else {
 17237  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17238  				return 1
 17239  			}
 17240  
 17241  		}
 17242  		fallthrough
 17243  	case CC_GT:
 17244  		{
 17245  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17246  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17247  				return 2
 17248  			} else if c == '>' {
 17249  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17250  				return 2
 17251  			} else {
 17252  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17253  				return 1
 17254  			}
 17255  
 17256  		}
 17257  		fallthrough
 17258  	case CC_BANG:
 17259  		{
 17260  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 17261  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17262  				return 1
 17263  			} else {
 17264  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17265  				return 2
 17266  			}
 17267  
 17268  		}
 17269  		fallthrough
 17270  	case CC_PIPE:
 17271  		{
 17272  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 17273  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17274  				return 1
 17275  			} else {
 17276  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17277  				return 2
 17278  			}
 17279  
 17280  		}
 17281  		fallthrough
 17282  	case CC_COMMA:
 17283  		{
 17284  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17285  			return 1
 17286  
 17287  		}
 17288  	case CC_AND:
 17289  		{
 17290  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17291  			return 1
 17292  
 17293  		}
 17294  	case CC_TILDA:
 17295  		{
 17296  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17297  			return 1
 17298  
 17299  		}
 17300  	case CC_QUOTE:
 17301  		{
 17302  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 17303  
 17304  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17305  				if c == delim {
 17306  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 17307  						i++
 17308  					} else {
 17309  						break
 17310  					}
 17311  				}
 17312  			}
 17313  			if c == '\'' {
 17314  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17315  				return i + 1
 17316  			} else if c != 0 {
 17317  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17318  				return i + 1
 17319  			} else {
 17320  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17321  				return i
 17322  			}
 17323  
 17324  		}
 17325  		fallthrough
 17326  	case CC_DOT:
 17327  		{
 17328  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 17329  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17330  				return 1
 17331  			}
 17332  
 17333  		}
 17334  		fallthrough
 17335  	case CC_DIGIT:
 17336  		{
 17337  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17338  			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 {
 17339  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17340  				}
 17341  				return i
 17342  			}
 17343  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17344  			}
 17345  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 17346  				i++
 17347  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17348  					i++
 17349  				}
 17350  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17351  			}
 17352  			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 ||
 17353  				(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) {
 17354  				i = i + 2
 17355  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17356  					i++
 17357  				}
 17358  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17359  			}
 17360  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17361  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17362  				i++
 17363  			}
 17364  			return i
 17365  
 17366  		}
 17367  	case CC_QUOTE2:
 17368  		{
 17369  			i = 1
 17370  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 17371  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17372  			}
 17373  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 17374  				if c == ']' {
 17375  					return TK_NAME
 17376  				}
 17377  				return TK_ERROR
 17378  			}()
 17379  			return i
 17380  
 17381  		}
 17382  	case CC_VARNUM:
 17383  		{
 17384  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17385  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17386  			}
 17387  			return i
 17388  
 17389  		}
 17390  	case CC_DOLLAR:
 17391  		fallthrough
 17392  	case CC_VARALPHA:
 17393  		{
 17394  			var n int32 = 0
 17395  
 17396  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17397  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17398  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 17399  					n++
 17400  				} else if c == '(' && n > 0 {
 17401  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 17402  						i++
 17403  					}
 17404  					if c == ')' {
 17405  						i++
 17406  					} else {
 17407  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17408  					}
 17409  					break
 17410  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 17411  					i++
 17412  				} else {
 17413  					break
 17414  				}
 17415  			}
 17416  			if n == 0 {
 17417  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17418  			}
 17419  			return i
 17420  
 17421  		}
 17422  	case CC_KYWD:
 17423  		{
 17424  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 17425  			}
 17426  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17427  				i++
 17428  				break
 17429  			}
 17430  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17431  			return i
 17432  
 17433  		}
 17434  	case CC_X:
 17435  		{
 17436  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 17437  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17438  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17439  				}
 17440  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17441  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17442  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17443  						i++
 17444  					}
 17445  				}
 17446  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17447  					i++
 17448  				}
 17449  				return i
 17450  			}
 17451  
 17452  		}
 17453  		fallthrough
 17454  	case CC_ID:
 17455  		{
 17456  			i = 1
 17457  			break
 17458  
 17459  		}
 17460  	default:
 17461  		{
 17462  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17463  			return 1
 17464  
 17465  		}
 17466  	}
 17467  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17468  		i++
 17469  	}
 17470  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17471  	return i
 17472  }
 17473  
 17474  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 17475  	bp := tls.Alloc(4)
 17476  	defer tls.Free(4)
 17477  
 17478  	var z uintptr
 17479  	var nZ sqlite3_int64
 17480  	var nSql sqlite3_int64
 17481  	var i int32
 17482  	var j int32
 17483  
 17484  	var n int32
 17485  	var k int32
 17486  
 17487  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 17488  	nZ = nSql
 17489  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 17490  	if z == uintptr(0) {
 17491  		return uintptr(0)
 17492  	}
 17493  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 17494  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 17495  		switch *(*int32)(unsafe.Pointer(bp)) {
 17496  		case TK_SPACE:
 17497  			{
 17498  				break
 17499  
 17500  			}
 17501  		case TK_ERROR:
 17502  			{
 17503  				sqlite3.Xsqlite3_free(tls, z)
 17504  				return uintptr(0)
 17505  
 17506  			}
 17507  		case TK_LITERAL:
 17508  			{
 17509  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17510  				break
 17511  
 17512  			}
 17513  		case TK_PUNCT:
 17514  			fallthrough
 17515  		case TK_NAME:
 17516  			{
 17517  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 17518  					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) ||
 17519  						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) {
 17520  					} else {
 17521  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17522  						break
 17523  					}
 17524  				}
 17525  				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 {
 17526  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(' ')
 17527  				}
 17528  				for k = 0; k < n; k++ {
 17529  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(sqlite3UpperToLower[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i+k))))])
 17530  				}
 17531  				break
 17532  
 17533  			}
 17534  		}
 17535  	}
 17536  	for j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 17537  		j--
 17538  	}
 17539  	if j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 17540  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(';')
 17541  	}
 17542  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17543  
 17544  	for i = 0; i < j; i = n {
 17545  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 17546  		var nParen int32
 17547  		if zIn == uintptr(0) {
 17548  			break
 17549  		}
 17550  		n = int32((int64(zIn)-int64(z))/1) + 3
 17551  		if n != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1))))])&0x46 != 0 {
 17552  			continue
 17553  		}
 17554  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 9)))])&0x46 != 0) {
 17555  			continue
 17556  		}
 17557  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 7)))])&0x46 != 0) {
 17558  			continue
 17559  		}
 17560  		nParen = 1
 17561  		k = 0
 17562  		for ; *(*int8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 17563  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 17564  				nParen++
 17565  			}
 17566  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 17567  				nParen--
 17568  				if nParen == 0 {
 17569  					break
 17570  				}
 17571  			}
 17572  		}
 17573  
 17574  		if k < 5 {
 17575  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 17576  			if z == uintptr(0) {
 17577  				return uintptr(0)
 17578  			}
 17579  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17580  		} else if k > 5 {
 17581  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17582  		}
 17583  		j = j - k + 5
 17584  		*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17585  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint64(5))
 17586  	}
 17587  	return z
 17588  }
 17589  
 17590  type Percentile1 = struct {
 17591  	FnAlloc uint32
 17592  	FnUsed  uint32
 17593  	FrPct   float64
 17594  	Fa      uintptr
 17595  }
 17596  
 17597  type Percentile = Percentile1
 17598  
 17599  func isInfinity(tls *libc.TLS, r float64) int32 {
 17600  	bp := tls.Alloc(16)
 17601  	defer tls.Free(16)
 17602  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 17603  
 17604  	libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 17605  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 17606  }
 17607  
 17608  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 17609  	a = a - b
 17610  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 17611  }
 17612  
 17613  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 17614  	var p uintptr
 17615  	var rPct float64
 17616  	var eType int32
 17617  	var y float64
 17618  
 17619  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17620  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17621  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 17622  		rPct < 0.0 || rPct > 100.0 {
 17623  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17624  			ts+5886, -1)
 17625  		return
 17626  	}
 17627  
 17628  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 17629  	if p == uintptr(0) {
 17630  		return
 17631  	}
 17632  
 17633  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 17634  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 17635  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 17636  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17637  			ts+5953, -1)
 17638  		return
 17639  	}
 17640  
 17641  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17642  	if eType == SQLITE_NULL {
 17643  		return
 17644  	}
 17645  
 17646  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 17647  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17648  			ts+6017, -1)
 17649  		return
 17650  	}
 17651  
 17652  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17653  	if isInfinity(tls, y) != 0 {
 17654  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 17655  		return
 17656  	}
 17657  
 17658  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 17659  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 17660  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 17661  		if a == uintptr(0) {
 17662  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17663  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17664  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 17665  			return
 17666  		}
 17667  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 17668  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 17669  	}
 17670  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 17671  }
 17672  
 17673  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 17674  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 17675  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 17676  	if a == b {
 17677  		return 0
 17678  	}
 17679  	if a < b {
 17680  		return -1
 17681  	}
 17682  	return +1
 17683  }
 17684  
 17685  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 17686  	var p uintptr
 17687  	var i1 uint32
 17688  	var i2 uint32
 17689  	var v1 float64
 17690  	var v2 float64
 17691  	var ix float64
 17692  	var vx float64
 17693  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 17694  	if p == uintptr(0) {
 17695  		return
 17696  	}
 17697  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 17698  		return
 17699  	}
 17700  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 17701  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 17702  			f func(*libc.TLS, uintptr, uintptr) int32
 17703  		}{doubleCmp})))
 17704  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 17705  		i1 = uint32(ix)
 17706  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 17707  			i2 = i1
 17708  		} else {
 17709  			i2 = i1 + uint32(1)
 17710  		}
 17711  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 17712  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 17713  		vx = v1 + (v2-v1)*(ix-float64(i1))
 17714  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 17715  	}
 17716  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17717  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17718  }
 17719  
 17720  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17721  	var rc int32 = SQLITE_OK
 17722  	_ = pApi
 17723  
 17724  	_ = pzErrMsg
 17725  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 17726  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17727  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17728  			f func(*libc.TLS, uintptr, int32, uintptr)
 17729  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 17730  	return rc
 17731  }
 17732  
 17733  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 17734  
 17735  type prefixes_vtab = prefixes_vtab1
 17736  
 17737  type prefixes_cursor1 = struct {
 17738  	Fbase        sqlite3_vtab_cursor
 17739  	FiRowid      sqlite3_int64
 17740  	FzStr        uintptr
 17741  	FnStr        int32
 17742  	F__ccgo_pad1 [4]byte
 17743  }
 17744  
 17745  type prefixes_cursor = prefixes_cursor1
 17746  
 17747  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17748  	var pNew uintptr
 17749  	var rc int32
 17750  
 17751  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17752  		ts+6098)
 17753  	if rc == SQLITE_OK {
 17754  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 17755  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17756  		if pNew == uintptr(0) {
 17757  			return SQLITE_NOMEM
 17758  		}
 17759  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})))
 17760  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 17761  	}
 17762  	return rc
 17763  }
 17764  
 17765  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17766  	var p uintptr = pVtab
 17767  	sqlite3.Xsqlite3_free(tls, p)
 17768  	return SQLITE_OK
 17769  }
 17770  
 17771  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17772  	var pCur uintptr
 17773  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 17774  	if pCur == uintptr(0) {
 17775  		return SQLITE_NOMEM
 17776  	}
 17777  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})))
 17778  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17779  	return SQLITE_OK
 17780  }
 17781  
 17782  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 17783  	var pCur uintptr = cur
 17784  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17785  	sqlite3.Xsqlite3_free(tls, pCur)
 17786  	return SQLITE_OK
 17787  }
 17788  
 17789  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 17790  	var pCur uintptr = cur
 17791  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 17792  	return SQLITE_OK
 17793  }
 17794  
 17795  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17796  	var pCur uintptr = cur
 17797  	switch i {
 17798  	case 0:
 17799  		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),
 17800  			uintptr(0))
 17801  		break
 17802  	default:
 17803  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 17804  		break
 17805  	}
 17806  	return SQLITE_OK
 17807  }
 17808  
 17809  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17810  	var pCur uintptr = cur
 17811  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 17812  	return SQLITE_OK
 17813  }
 17814  
 17815  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 17816  	var pCur uintptr = cur
 17817  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 17818  }
 17819  
 17820  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17821  	bp := tls.Alloc(8)
 17822  	defer tls.Free(8)
 17823  
 17824  	var pCur uintptr = pVtabCursor
 17825  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17826  	if argc > 0 {
 17827  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 17828  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 17829  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 17830  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 17831  			}
 17832  			return 0
 17833  		}()
 17834  	} else {
 17835  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 17836  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 17837  	}
 17838  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17839  	return SQLITE_OK
 17840  }
 17841  
 17842  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17843  	var i int32
 17844  	var p uintptr
 17845  
 17846  	i = 0
 17847  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 17848  __1:
 17849  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 17850  		goto __3
 17851  	}
 17852  	{
 17853  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 17854  			goto __2
 17855  		}
 17856  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 17857  			goto __2
 17858  		}
 17859  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 17860  			goto __2
 17861  		}
 17862  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 17863  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17864  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17865  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17866  		return SQLITE_OK
 17867  
 17868  	}
 17869  	goto __2
 17870  __2:
 17871  	i++
 17872  	p += 12
 17873  	goto __1
 17874  	goto __3
 17875  __3:
 17876  	;
 17877  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 17878  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 17879  	return SQLITE_OK
 17880  }
 17881  
 17882  var prefixesModule = sqlite3_module{
 17883  	FxConnect:    0,
 17884  	FxBestIndex:  0,
 17885  	FxDisconnect: 0,
 17886  	FxOpen:       0,
 17887  	FxClose:      0,
 17888  	FxFilter:     0,
 17889  	FxNext:       0,
 17890  	FxEof:        0,
 17891  	FxColumn:     0,
 17892  	FxRowid:      0,
 17893  }
 17894  
 17895  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 17896  	var nByte int32
 17897  	var nRet int32 = 0
 17898  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17899  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17900  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17901  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17902  	var i int32
 17903  
 17904  	nByte = func() int32 {
 17905  		if nL > nR {
 17906  			return nL
 17907  		}
 17908  		return nR
 17909  	}()
 17910  	for i = 0; i < nByte; i++ {
 17911  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 17912  			break
 17913  		}
 17914  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 17915  			nRet++
 17916  		}
 17917  	}
 17918  
 17919  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 17920  		nRet--
 17921  	}
 17922  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 17923  }
 17924  
 17925  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17926  	var rc int32 = SQLITE_OK
 17927  	_ = pApi
 17928  
 17929  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 17930  	if rc == SQLITE_OK {
 17931  		rc = sqlite3.Xsqlite3_create_function(tls,
 17932  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17933  				f func(*libc.TLS, uintptr, int32, uintptr)
 17934  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 17935  	}
 17936  	return rc
 17937  }
 17938  
 17939  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 17940  
 17941  type qpvtab_vtab = qpvtab_vtab1
 17942  
 17943  type qpvtab_cursor1 = struct {
 17944  	Fbase   sqlite3_vtab_cursor
 17945  	FiRowid sqlite3_int64
 17946  	FzData  uintptr
 17947  	FnData  int32
 17948  	Fflags  int32
 17949  }
 17950  
 17951  type qpvtab_cursor = qpvtab_cursor1
 17952  
 17953  var azColname = [13]uintptr{
 17954  	ts + 6185,
 17955  	ts + 6188,
 17956  	ts + 6191,
 17957  	ts + 6194,
 17958  	ts + 6197,
 17959  	ts + 6200,
 17960  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 17961  	ts + 6214,
 17962  	ts + 584,
 17963  }
 17964  
 17965  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17966  	var pNew uintptr
 17967  	var rc int32
 17968  
 17969  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17970  		ts+6220)
 17971  	if rc == SQLITE_OK {
 17972  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 17973  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17974  		if pNew == uintptr(0) {
 17975  			return SQLITE_NOMEM
 17976  		}
 17977  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})))
 17978  	}
 17979  	return rc
 17980  }
 17981  
 17982  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17983  	var p uintptr = pVtab
 17984  	sqlite3.Xsqlite3_free(tls, p)
 17985  	return SQLITE_OK
 17986  }
 17987  
 17988  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17989  	var pCur uintptr
 17990  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 17991  	if pCur == uintptr(0) {
 17992  		return SQLITE_NOMEM
 17993  	}
 17994  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})))
 17995  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17996  	return SQLITE_OK
 17997  }
 17998  
 17999  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 18000  	var pCur uintptr = cur
 18001  	sqlite3.Xsqlite3_free(tls, pCur)
 18002  	return SQLITE_OK
 18003  }
 18004  
 18005  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 18006  	var pCur uintptr = cur
 18007  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18008  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18009  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 18010  		if zEnd != 0 {
 18011  			zEnd++
 18012  		}
 18013  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 18014  	}
 18015  	return SQLITE_OK
 18016  }
 18017  
 18018  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18019  	bp := tls.Alloc(1)
 18020  	defer tls.Free(1)
 18021  
 18022  	var pCur uintptr = cur
 18023  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18024  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18025  		var zEnd uintptr
 18026  		var j int32
 18027  		j = QPVTAB_VN
 18028  		for 1 != 0 {
 18029  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 18030  				if j == QPVTAB_RHS {
 18031  					return '\n'
 18032  				}
 18033  				return ','
 18034  			}())
 18035  			if j == i || zEnd == uintptr(0) {
 18036  				break
 18037  			}
 18038  			z = zEnd + uintptr(1)
 18039  			j++
 18040  		}
 18041  		if zEnd == z {
 18042  			sqlite3.Xsqlite3_result_null(tls, ctx)
 18043  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 18044  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 18045  		} else {
 18046  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18047  		}
 18048  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 18049  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 18050  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 18051  		} else {
 18052  			*(*int8)(unsafe.Pointer(bp)) = int8('a' + i - QPVTAB_A)
 18053  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18054  		}
 18055  	} else if i == QPVTAB_FLAGS {
 18056  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 18057  	}
 18058  	return SQLITE_OK
 18059  }
 18060  
 18061  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18062  	var pCur uintptr = cur
 18063  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 18064  	return SQLITE_OK
 18065  }
 18066  
 18067  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 18068  	var pCur uintptr = cur
 18069  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 18070  }
 18071  
 18072  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18073  	var pCur uintptr = pVtabCursor
 18074  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18075  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 18076  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 18077  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 18078  	return SQLITE_OK
 18079  }
 18080  
 18081  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 18082  	bp := tls.Alloc(25)
 18083  	defer tls.Free(25)
 18084  
 18085  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 18086  	case SQLITE_NULL:
 18087  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 18088  		break
 18089  	case SQLITE_INTEGER:
 18090  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 18091  		break
 18092  	case SQLITE_FLOAT:
 18093  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 18094  		break
 18095  	case SQLITE_TEXT:
 18096  		{
 18097  			var i int32
 18098  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 18099  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18100  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18101  			for i = 0; i < n; i++ {
 18102  				*(*int8)(unsafe.Pointer(bp + 24)) = *(*int8)(unsafe.Pointer(a + uintptr(i)))
 18103  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\n' {
 18104  					*(*int8)(unsafe.Pointer(bp + 24)) = int8(' ')
 18105  				}
 18106  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18107  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\'' {
 18108  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18109  				}
 18110  			}
 18111  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18112  			break
 18113  
 18114  		}
 18115  	case SQLITE_BLOB:
 18116  		{
 18117  			var i int32
 18118  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 18119  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18120  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 18121  			for i = 0; i < n; i++ {
 18122  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 18123  			}
 18124  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18125  			break
 18126  
 18127  		}
 18128  	}
 18129  }
 18130  
 18131  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18132  	bp := tls.Alloc(120)
 18133  	defer tls.Free(120)
 18134  
 18135  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 18136  	var i int32
 18137  	var k int32 = 0
 18138  	var rc int32
 18139  	_ = rc
 18140  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 18141  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18142  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18143  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18144  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18145  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18146  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18147  
 18148  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18149  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18150  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 18151  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18152  				}
 18153  			}
 18154  		}
 18155  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18156  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18157  			iCol = QPVTAB_NONE
 18158  		}
 18159  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 18160  			libc.VaList(bp+8, i,
 18161  				azColname[iCol],
 18162  				op,
 18163  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 18164  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18165  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18166  
 18167  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18168  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18169  		}
 18170  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 18171  	}
 18172  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18173  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18174  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18175  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18176  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18177  			iCol = QPVTAB_NONE
 18178  		}
 18179  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18180  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 18181  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 18182  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18183  			}
 18184  		}
 18185  	}
 18186  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 18187  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 18188  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 18189  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 18190  			func() uintptr {
 18191  				if iCol >= 0 {
 18192  					return azColname[iCol]
 18193  				}
 18194  				return ts + 6427
 18195  			}(),
 18196  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 18197  	}
 18198  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 18199  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 18200  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 18201  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 18202  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18203  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18204  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 18205  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 18206  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 18207  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 18208  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 18209  	return SQLITE_OK
 18210  }
 18211  
 18212  var qpvtabModule = sqlite3_module{
 18213  	FxConnect:    0,
 18214  	FxBestIndex:  0,
 18215  	FxDisconnect: 0,
 18216  	FxOpen:       0,
 18217  	FxClose:      0,
 18218  	FxFilter:     0,
 18219  	FxNext:       0,
 18220  	FxEof:        0,
 18221  	FxColumn:     0,
 18222  	FxRowid:      0,
 18223  }
 18224  
 18225  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18226  	var rc int32 = SQLITE_OK
 18227  	_ = pApi
 18228  
 18229  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 18230  	return rc
 18231  }
 18232  
 18233  type ReStateNumber = uint16
 18234  
 18235  type ReStateSet1 = struct {
 18236  	FnState      uint32
 18237  	F__ccgo_pad1 [4]byte
 18238  	FaState      uintptr
 18239  }
 18240  
 18241  type ReStateSet = ReStateSet1
 18242  
 18243  type ReInput1 = struct {
 18244  	Fz  uintptr
 18245  	Fi  int32
 18246  	Fmx int32
 18247  }
 18248  
 18249  type ReInput = ReInput1
 18250  
 18251  type ReCompiled1 = struct {
 18252  	FsIn       ReInput
 18253  	FzErr      uintptr
 18254  	FaOp       uintptr
 18255  	FaArg      uintptr
 18256  	FxNextChar uintptr
 18257  	FzInit     [12]uint8
 18258  	FnInit     int32
 18259  	FnState    uint32
 18260  	FnAlloc    uint32
 18261  }
 18262  
 18263  type ReCompiled = ReCompiled1
 18264  
 18265  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 18266  	var i uint32
 18267  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 18268  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 18269  			return
 18270  		}
 18271  	}
 18272  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 18273  }
 18274  
 18275  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 18276  	var c uint32
 18277  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 18278  		return uint32(0)
 18279  	}
 18280  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 18281  	if c >= uint32(0x80) {
 18282  		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 {
 18283  			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)
 18284  			if c < uint32(0x80) {
 18285  				c = uint32(0xfffd)
 18286  			}
 18287  		} 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 &&
 18288  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 18289  			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)
 18290  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 18291  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 18292  				c = uint32(0xfffd)
 18293  			}
 18294  		} 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 &&
 18295  			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 {
 18296  			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) |
 18297  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 18298  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18299  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 18300  				c = uint32(0xfffd)
 18301  			}
 18302  		} else {
 18303  			c = uint32(0xfffd)
 18304  		}
 18305  	}
 18306  	return c
 18307  }
 18308  
 18309  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 18310  	var c uint32 = re_next_char(tls, p)
 18311  	if c >= uint32('A') && c <= uint32('Z') {
 18312  		c = c + uint32('a'-'A')
 18313  	}
 18314  	return c
 18315  }
 18316  
 18317  func re_word_char(tls *libc.TLS, c int32) int32 {
 18318  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 18319  		c >= 'A' && c <= 'Z' || c == '_')
 18320  }
 18321  
 18322  func re_digit_char(tls *libc.TLS, c int32) int32 {
 18323  	return libc.Bool32(c >= '0' && c <= '9')
 18324  }
 18325  
 18326  func re_space_char(tls *libc.TLS, c int32) int32 {
 18327  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 18328  }
 18329  
 18330  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 18331  	bp := tls.Alloc(248)
 18332  	defer tls.Free(248)
 18333  
 18334  	var pThis uintptr
 18335  	var pNext uintptr
 18336  
 18337  	var pToFree uintptr
 18338  	var i uint32
 18339  	var iSwap uint32
 18340  	var c int32
 18341  	var cPrev int32
 18342  	var rc int32
 18343  
 18344  	var x uint8
 18345  	var j int32
 18346  	var n int32
 18347  	var hit int32
 18348  	var x1 int32
 18349  	i = uint32(0)
 18350  	iSwap = uint32(0)
 18351  	c = RE_EOF + 1
 18352  	cPrev = 0
 18353  	rc = 0
 18354  
 18355  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 18356  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 18357  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 18358  		if nIn >= 0 {
 18359  			return nIn
 18360  		}
 18361  		return int32(libc.Xstrlen(tls, zIn))
 18362  	}()
 18363  
 18364  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 18365  		goto __1
 18366  	}
 18367  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 18368  __2:
 18369  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 18370  		(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)) {
 18371  		goto __3
 18372  	}
 18373  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 18374  	goto __2
 18375  __3:
 18376  	;
 18377  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 18378  		goto __4
 18379  	}
 18380  	return 0
 18381  __4:
 18382  	;
 18383  __1:
 18384  	;
 18385  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 18386  		goto __5
 18387  	}
 18388  	pToFree = uintptr(0)
 18389  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 18390  	goto __6
 18391  __5:
 18392  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 18393  	if !(pToFree == uintptr(0)) {
 18394  		goto __7
 18395  	}
 18396  	return -1
 18397  __7:
 18398  	;
 18399  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 18400  __6:
 18401  	;
 18402  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 18403  	pNext = bp + 1*16
 18404  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18405  	re_add_state(tls, pNext, 0)
 18406  __8:
 18407  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 18408  		goto __9
 18409  	}
 18410  	cPrev = c
 18411  	c = int32((*struct {
 18412  		f func(*libc.TLS, uintptr) uint32
 18413  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 18414  	pThis = pNext
 18415  	pNext = bp + uintptr(iSwap)*16
 18416  	iSwap = uint32(1) - iSwap
 18417  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18418  	i = uint32(0)
 18419  __10:
 18420  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 18421  		goto __12
 18422  	}
 18423  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 18424  	switch int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 18425  	case RE_OP_MATCH:
 18426  		goto __14
 18427  	case RE_OP_ANY:
 18428  		goto __15
 18429  	case RE_OP_WORD:
 18430  		goto __16
 18431  	case RE_OP_NOTWORD:
 18432  		goto __17
 18433  	case RE_OP_DIGIT:
 18434  		goto __18
 18435  	case RE_OP_NOTDIGIT:
 18436  		goto __19
 18437  	case RE_OP_SPACE:
 18438  		goto __20
 18439  	case RE_OP_NOTSPACE:
 18440  		goto __21
 18441  	case RE_OP_BOUNDARY:
 18442  		goto __22
 18443  	case RE_OP_ANYSTAR:
 18444  		goto __23
 18445  	case RE_OP_FORK:
 18446  		goto __24
 18447  	case RE_OP_GOTO:
 18448  		goto __25
 18449  	case RE_OP_ACCEPT:
 18450  		goto __26
 18451  	case RE_OP_CC_EXC:
 18452  		goto __27
 18453  	case RE_OP_CC_INC:
 18454  		goto __28
 18455  	}
 18456  	goto __13
 18457  __14:
 18458  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 18459  		goto __29
 18460  	}
 18461  	re_add_state(tls, pNext, x1+1)
 18462  __29:
 18463  	;
 18464  	goto __13
 18465  
 18466  __15:
 18467  	if !(c != 0) {
 18468  		goto __30
 18469  	}
 18470  	re_add_state(tls, pNext, x1+1)
 18471  __30:
 18472  	;
 18473  	goto __13
 18474  
 18475  __16:
 18476  	if !(re_word_char(tls, c) != 0) {
 18477  		goto __31
 18478  	}
 18479  	re_add_state(tls, pNext, x1+1)
 18480  __31:
 18481  	;
 18482  	goto __13
 18483  
 18484  __17:
 18485  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 18486  		goto __32
 18487  	}
 18488  	re_add_state(tls, pNext, x1+1)
 18489  __32:
 18490  	;
 18491  	goto __13
 18492  
 18493  __18:
 18494  	if !(re_digit_char(tls, c) != 0) {
 18495  		goto __33
 18496  	}
 18497  	re_add_state(tls, pNext, x1+1)
 18498  __33:
 18499  	;
 18500  	goto __13
 18501  
 18502  __19:
 18503  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 18504  		goto __34
 18505  	}
 18506  	re_add_state(tls, pNext, x1+1)
 18507  __34:
 18508  	;
 18509  	goto __13
 18510  
 18511  __20:
 18512  	if !(re_space_char(tls, c) != 0) {
 18513  		goto __35
 18514  	}
 18515  	re_add_state(tls, pNext, x1+1)
 18516  __35:
 18517  	;
 18518  	goto __13
 18519  
 18520  __21:
 18521  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 18522  		goto __36
 18523  	}
 18524  	re_add_state(tls, pNext, x1+1)
 18525  __36:
 18526  	;
 18527  	goto __13
 18528  
 18529  __22:
 18530  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 18531  		goto __37
 18532  	}
 18533  	re_add_state(tls, pThis, x1+1)
 18534  __37:
 18535  	;
 18536  	goto __13
 18537  
 18538  __23:
 18539  	re_add_state(tls, pNext, x1)
 18540  	re_add_state(tls, pThis, x1+1)
 18541  	goto __13
 18542  
 18543  __24:
 18544  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18545  	re_add_state(tls, pThis, x1+1)
 18546  	goto __13
 18547  
 18548  __25:
 18549  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18550  	goto __13
 18551  
 18552  __26:
 18553  	rc = 1
 18554  	goto re_match_end
 18555  
 18556  __27:
 18557  	if !(c == 0) {
 18558  		goto __38
 18559  	}
 18560  	goto __13
 18561  __38:
 18562  	;
 18563  	goto re_op_cc_inc
 18564  
 18565  __28:
 18566  re_op_cc_inc:
 18567  	j = 1
 18568  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 18569  	hit = 0
 18570  	j = 1
 18571  __39:
 18572  	if !(j > 0 && j < n) {
 18573  		goto __41
 18574  	}
 18575  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 18576  		goto __42
 18577  	}
 18578  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 18579  		goto __44
 18580  	}
 18581  	hit = 1
 18582  	j = -1
 18583  __44:
 18584  	;
 18585  	goto __43
 18586  __42:
 18587  	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) {
 18588  		goto __45
 18589  	}
 18590  	hit = 1
 18591  	j = -1
 18592  	goto __46
 18593  __45:
 18594  	j++
 18595  __46:
 18596  	;
 18597  __43:
 18598  	;
 18599  	goto __40
 18600  __40:
 18601  	j++
 18602  	goto __39
 18603  	goto __41
 18604  __41:
 18605  	;
 18606  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 18607  		goto __47
 18608  	}
 18609  	hit = libc.BoolInt32(!(hit != 0))
 18610  __47:
 18611  	;
 18612  	if !(hit != 0) {
 18613  		goto __48
 18614  	}
 18615  	re_add_state(tls, pNext, x1+n)
 18616  __48:
 18617  	;
 18618  	goto __13
 18619  
 18620  __13:
 18621  	;
 18622  	goto __11
 18623  __11:
 18624  	i++
 18625  	goto __10
 18626  	goto __12
 18627  __12:
 18628  	;
 18629  	goto __8
 18630  __9:
 18631  	;
 18632  	i = uint32(0)
 18633  __49:
 18634  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 18635  		goto __51
 18636  	}
 18637  	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) {
 18638  		goto __52
 18639  	}
 18640  	rc = 1
 18641  	goto __51
 18642  __52:
 18643  	;
 18644  	goto __50
 18645  __50:
 18646  	i++
 18647  	goto __49
 18648  	goto __51
 18649  __51:
 18650  	;
 18651  re_match_end:
 18652  	sqlite3.Xsqlite3_free(tls, pToFree)
 18653  	return rc
 18654  }
 18655  
 18656  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 18657  	var aOp uintptr
 18658  	var aArg uintptr
 18659  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(int8(0))))
 18660  	if aOp == uintptr(0) {
 18661  		return 1
 18662  	}
 18663  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 18664  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 18665  	if aArg == uintptr(0) {
 18666  		return 1
 18667  	}
 18668  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 18669  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 18670  	return 0
 18671  }
 18672  
 18673  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 18674  	var i int32
 18675  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 18676  		return 0
 18677  	}
 18678  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 18679  		*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 18680  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 18681  	}
 18682  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 18683  	*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = int8(op)
 18684  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 18685  	return iBefore
 18686  }
 18687  
 18688  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 18689  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 18690  }
 18691  
 18692  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 18693  	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 {
 18694  		return
 18695  	}
 18696  	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))))
 18697  	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))))
 18698  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 18699  }
 18700  
 18701  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 18702  	if c >= '0' && c <= '9' {
 18703  		c = c - '0'
 18704  	} else if c >= 'a' && c <= 'f' {
 18705  		c = c - ('a' - 10)
 18706  	} else if c >= 'A' && c <= 'F' {
 18707  		c = c - ('A' - 10)
 18708  	} else {
 18709  		return 0
 18710  	}
 18711  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 18712  	return 1
 18713  }
 18714  
 18715  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 18716  	bp := tls.Alloc(4)
 18717  	defer tls.Free(4)
 18718  
 18719  	var i int32
 18720  	*(*int32)(unsafe.Pointer(bp)) = 0
 18721  	var c int8
 18722  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18723  		return uint32(0)
 18724  	}
 18725  	c = int8(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi))))
 18726  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18727  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18728  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18729  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 18730  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 18731  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 18732  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 18733  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18734  		}
 18735  	}
 18736  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18737  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18738  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18739  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 18740  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18741  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18742  		}
 18743  	}
 18744  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 18745  	}
 18746  	if zEsc[i] != 0 {
 18747  		if i < 6 {
 18748  			c = zTrans[i]
 18749  		}
 18750  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18751  	} else {
 18752  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 18753  	}
 18754  	return uint32(c)
 18755  }
 18756  
 18757  var zEsc = *(*[21]int8)(unsafe.Pointer(ts + 6559))
 18758  var zTrans = *(*[7]int8)(unsafe.Pointer(ts + 6580))
 18759  
 18760  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 18761  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18762  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18763  	}
 18764  	return uint8(0)
 18765  }
 18766  
 18767  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 18768  	var zErr uintptr
 18769  	var iStart int32
 18770  	var iEnd int32
 18771  	var iGoto int32
 18772  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18773  	zErr = re_subcompile_string(tls, p)
 18774  	if zErr != 0 {
 18775  		return zErr
 18776  	}
 18777  	for int32(rePeek(tls, p)) == '|' {
 18778  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18779  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 18780  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 18781  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18782  		zErr = re_subcompile_string(tls, p)
 18783  		if zErr != 0 {
 18784  			return zErr
 18785  		}
 18786  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 18787  	}
 18788  	return uintptr(0)
 18789  }
 18790  
 18791  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 18792  	var iPrev int32 = -1
 18793  	var iStart int32
 18794  	var c uint32
 18795  	var zErr uintptr
 18796  	for libc.AssignUint32(&c, (*struct {
 18797  		f func(*libc.TLS, uintptr) uint32
 18798  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18799  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18800  		switch c {
 18801  		case uint32('|'):
 18802  			fallthrough
 18803  		case uint32('$'):
 18804  			fallthrough
 18805  		case uint32(')'):
 18806  			{
 18807  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 18808  				return uintptr(0)
 18809  
 18810  			}
 18811  		case uint32('('):
 18812  			{
 18813  				zErr = re_subcompile_re(tls, p)
 18814  				if zErr != 0 {
 18815  					return zErr
 18816  				}
 18817  				if int32(rePeek(tls, p)) != ')' {
 18818  					return ts + 6587
 18819  				}
 18820  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18821  				break
 18822  
 18823  			}
 18824  		case uint32('.'):
 18825  			{
 18826  				if int32(rePeek(tls, p)) == '*' {
 18827  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 18828  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18829  				} else {
 18830  					re_append(tls, p, RE_OP_ANY, 0)
 18831  				}
 18832  				break
 18833  
 18834  			}
 18835  		case uint32('*'):
 18836  			{
 18837  				if iPrev < 0 {
 18838  					return ts + 6601
 18839  				}
 18840  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18841  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 18842  				break
 18843  
 18844  			}
 18845  		case uint32('+'):
 18846  			{
 18847  				if iPrev < 0 {
 18848  					return ts + 6621
 18849  				}
 18850  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 18851  				break
 18852  
 18853  			}
 18854  		case uint32('?'):
 18855  			{
 18856  				if iPrev < 0 {
 18857  					return ts + 6641
 18858  				}
 18859  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18860  				break
 18861  
 18862  			}
 18863  		case uint32('{'):
 18864  			{
 18865  				var m int32 = 0
 18866  				var n int32 = 0
 18867  				var sz int32
 18868  				var j int32
 18869  				if iPrev < 0 {
 18870  					return ts + 6661
 18871  				}
 18872  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18873  					m = int32(uint32(m*10) + c - uint32('0'))
 18874  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18875  				}
 18876  				n = m
 18877  				if c == uint32(',') {
 18878  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18879  					n = 0
 18880  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18881  						n = int32(uint32(n*10) + c - uint32('0'))
 18882  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18883  					}
 18884  				}
 18885  				if c != uint32('}') {
 18886  					return ts + 6685
 18887  				}
 18888  				if n > 0 && n < m {
 18889  					return ts + 6699
 18890  				}
 18891  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18892  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 18893  				if m == 0 {
 18894  					if n == 0 {
 18895  						return ts + 6724
 18896  					}
 18897  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 18898  					n--
 18899  				} else {
 18900  					for j = 1; j < m; j++ {
 18901  						re_copy(tls, p, iPrev, sz)
 18902  					}
 18903  				}
 18904  				for j = m; j < n; j++ {
 18905  					re_append(tls, p, RE_OP_FORK, sz+1)
 18906  					re_copy(tls, p, iPrev, sz)
 18907  				}
 18908  				if n == 0 && m > 0 {
 18909  					re_append(tls, p, RE_OP_FORK, -sz)
 18910  				}
 18911  				break
 18912  
 18913  			}
 18914  		case uint32('['):
 18915  			{
 18916  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18917  				if int32(rePeek(tls, p)) == '^' {
 18918  					re_append(tls, p, RE_OP_CC_EXC, 0)
 18919  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18920  				} else {
 18921  					re_append(tls, p, RE_OP_CC_INC, 0)
 18922  				}
 18923  				for libc.AssignUint32(&c, (*struct {
 18924  					f func(*libc.TLS, uintptr) uint32
 18925  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18926  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 18927  						return ts + 6757
 18928  					}
 18929  					if c == uint32('\\') {
 18930  						c = re_esc_char(tls, p)
 18931  					}
 18932  					if int32(rePeek(tls, p)) == '-' {
 18933  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18934  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18935  						c = (*struct {
 18936  							f func(*libc.TLS, uintptr) uint32
 18937  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 18938  						if c == uint32('\\') {
 18939  							c = re_esc_char(tls, p)
 18940  						}
 18941  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18942  					} else {
 18943  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 18944  					}
 18945  					if int32(rePeek(tls, p)) == ']' {
 18946  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18947  						break
 18948  					}
 18949  				}
 18950  				if c == uint32(0) {
 18951  					return ts + 6795
 18952  				}
 18953  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 18954  				break
 18955  
 18956  			}
 18957  		case uint32('\\'):
 18958  			{
 18959  				var specialOp int32 = 0
 18960  				switch int32(rePeek(tls, p)) {
 18961  				case 'b':
 18962  					specialOp = RE_OP_BOUNDARY
 18963  					break
 18964  				case 'd':
 18965  					specialOp = RE_OP_DIGIT
 18966  					break
 18967  				case 'D':
 18968  					specialOp = RE_OP_NOTDIGIT
 18969  					break
 18970  				case 's':
 18971  					specialOp = RE_OP_SPACE
 18972  					break
 18973  				case 'S':
 18974  					specialOp = RE_OP_NOTSPACE
 18975  					break
 18976  				case 'w':
 18977  					specialOp = RE_OP_WORD
 18978  					break
 18979  				case 'W':
 18980  					specialOp = RE_OP_NOTWORD
 18981  					break
 18982  				}
 18983  				if specialOp != 0 {
 18984  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18985  					re_append(tls, p, specialOp, 0)
 18986  				} else {
 18987  					c = re_esc_char(tls, p)
 18988  					re_append(tls, p, RE_OP_MATCH, int32(c))
 18989  				}
 18990  				break
 18991  
 18992  			}
 18993  		default:
 18994  			{
 18995  				re_append(tls, p, RE_OP_MATCH, int32(c))
 18996  				break
 18997  
 18998  			}
 18999  		}
 19000  		iPrev = iStart
 19001  	}
 19002  	return uintptr(0)
 19003  }
 19004  
 19005  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 19006  	if pRe != 0 {
 19007  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 19008  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 19009  		sqlite3.Xsqlite3_free(tls, pRe)
 19010  	}
 19011  }
 19012  
 19013  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 19014  	var pRe uintptr
 19015  	var zErr uintptr
 19016  	var i int32
 19017  	var j int32
 19018  
 19019  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 19020  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 19021  	if pRe == uintptr(0) {
 19022  		return ts + 2069
 19023  	}
 19024  	libc.Xmemset(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})))
 19025  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 19026  		if noCase != 0 {
 19027  			return *(*uintptr)(unsafe.Pointer(&struct {
 19028  				f func(*libc.TLS, uintptr) uint32
 19029  			}{re_next_char_nocase}))
 19030  		}
 19031  		return *(*uintptr)(unsafe.Pointer(&struct {
 19032  			f func(*libc.TLS, uintptr) uint32
 19033  		}{re_next_char}))
 19034  	}()
 19035  	if re_resize(tls, pRe, 30) != 0 {
 19036  		sqlite3re_free(tls, pRe)
 19037  		return ts + 2069
 19038  	}
 19039  	if int32(*(*int8)(unsafe.Pointer(zIn))) == '^' {
 19040  		zIn++
 19041  	} else {
 19042  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 19043  	}
 19044  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 19045  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 19046  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 19047  	zErr = re_subcompile_re(tls, pRe)
 19048  	if zErr != 0 {
 19049  		sqlite3re_free(tls, pRe)
 19050  		return zErr
 19051  	}
 19052  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19053  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 19054  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19055  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19056  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19057  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19058  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19059  	} else {
 19060  		sqlite3re_free(tls, pRe)
 19061  		return ts + 6808
 19062  	}
 19063  
 19064  	if int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 19065  		j = 0
 19066  		i = 1
 19067  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 19068  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 19069  			if x <= uint32(127) {
 19070  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 19071  			} else if x <= uint32(0xfff) {
 19072  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 19073  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19074  			} else if x <= uint32(0xffff) {
 19075  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 19076  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 19077  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19078  			} else {
 19079  				break
 19080  			}
 19081  		}
 19082  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 19083  			j--
 19084  		}
 19085  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 19086  	}
 19087  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 19088  }
 19089  
 19090  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19091  	bp := tls.Alloc(8)
 19092  	defer tls.Free(8)
 19093  
 19094  	var zPattern uintptr
 19095  	var zStr uintptr
 19096  	var zErr uintptr
 19097  	var setAux int32 = 0
 19098  
 19099  	_ = argc
 19100  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 19101  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19102  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19103  		if zPattern == uintptr(0) {
 19104  			return
 19105  		}
 19106  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 19107  		if zErr != 0 {
 19108  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 19109  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 19110  			return
 19111  		}
 19112  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19113  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19114  			return
 19115  		}
 19116  		setAux = 1
 19117  	}
 19118  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 19119  	if zStr != uintptr(0) {
 19120  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 19121  	}
 19122  	if setAux != 0 {
 19123  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 19124  	}
 19125  }
 19126  
 19127  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19128  	var rc int32 = SQLITE_OK
 19129  	_ = pApi
 19130  
 19131  	_ = pzErrMsg
 19132  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 19133  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19134  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 19135  			f func(*libc.TLS, uintptr, int32, uintptr)
 19136  		}{re_sql_func})), uintptr(0), uintptr(0))
 19137  	if rc == SQLITE_OK {
 19138  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 19139  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19140  			db, *(*uintptr)(unsafe.Pointer(&struct {
 19141  				f func(*libc.TLS, uintptr, int32, uintptr)
 19142  			}{re_sql_func})), uintptr(0), uintptr(0))
 19143  	}
 19144  	return rc
 19145  }
 19146  
 19147  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 19148  	var v sqlite3_int64
 19149  	var ptr uintptr
 19150  
 19151  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19152  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 19153  	if ptr != 0 {
 19154  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 19155  	}
 19156  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 19157  }
 19158  
 19159  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19160  	var rc int32 = SQLITE_OK
 19161  	_ = pApi
 19162  
 19163  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 19164  		*(*uintptr)(unsafe.Pointer(&struct {
 19165  			f func(*libc.TLS, uintptr, int32, uintptr)
 19166  		}{rememberFunc})), uintptr(0), uintptr(0))
 19167  	return rc
 19168  }
 19169  
 19170  type series_cursor1 = struct {
 19171  	Fbase        sqlite3_vtab_cursor
 19172  	FisDesc      int32
 19173  	F__ccgo_pad1 [4]byte
 19174  	FiRowid      sqlite3_int64
 19175  	FiValue      sqlite3_int64
 19176  	FmnValue     sqlite3_int64
 19177  	FmxValue     sqlite3_int64
 19178  	FiStep       sqlite3_int64
 19179  }
 19180  
 19181  type series_cursor = series_cursor1
 19182  
 19183  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 19184  	var pNew uintptr
 19185  	var rc int32
 19186  
 19187  	_ = pUnused
 19188  	_ = argcUnused
 19189  	_ = argvUnused
 19190  	_ = pzErrUnused
 19191  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 19192  		ts+6855)
 19193  	if rc == SQLITE_OK {
 19194  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 19195  		if pNew == uintptr(0) {
 19196  			return SQLITE_NOMEM
 19197  		}
 19198  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 19199  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 19200  	}
 19201  	return rc
 19202  }
 19203  
 19204  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 19205  	sqlite3.Xsqlite3_free(tls, pVtab)
 19206  	return SQLITE_OK
 19207  }
 19208  
 19209  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 19210  	var pCur uintptr
 19211  	_ = pUnused
 19212  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 19213  	if pCur == uintptr(0) {
 19214  		return SQLITE_NOMEM
 19215  	}
 19216  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})))
 19217  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 19218  	return SQLITE_OK
 19219  }
 19220  
 19221  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 19222  	sqlite3.Xsqlite3_free(tls, cur)
 19223  	return SQLITE_OK
 19224  }
 19225  
 19226  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 19227  	var pCur uintptr = cur
 19228  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19229  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19230  	} else {
 19231  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19232  	}
 19233  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 19234  	return SQLITE_OK
 19235  }
 19236  
 19237  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 19238  	var pCur uintptr = cur
 19239  	var x sqlite3_int64 = int64(0)
 19240  	switch i {
 19241  	case SERIES_COLUMN_START:
 19242  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19243  		break
 19244  	case SERIES_COLUMN_STOP:
 19245  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19246  		break
 19247  	case SERIES_COLUMN_STEP:
 19248  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19249  		break
 19250  	default:
 19251  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 19252  		break
 19253  	}
 19254  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 19255  	return SQLITE_OK
 19256  }
 19257  
 19258  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 19259  	var pCur uintptr = cur
 19260  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 19261  	return SQLITE_OK
 19262  }
 19263  
 19264  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 19265  	var pCur uintptr = cur
 19266  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19267  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 19268  	} else {
 19269  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 19270  	}
 19271  	return int32(0)
 19272  }
 19273  
 19274  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 19275  	var pCur uintptr = pVtabCursor
 19276  	var i int32 = 0
 19277  	_ = idxStrUnused
 19278  	if idxNum&1 != 0 {
 19279  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19280  	} else {
 19281  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 19282  	}
 19283  	if idxNum&2 != 0 {
 19284  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19285  	} else {
 19286  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 19287  	}
 19288  	if idxNum&4 != 0 {
 19289  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 19290  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 19291  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19292  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 19293  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19294  			if idxNum&16 == 0 {
 19295  				idxNum = idxNum | 8
 19296  			}
 19297  		}
 19298  	} else {
 19299  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19300  	}
 19301  	for i = 0; i < argc; i++ {
 19302  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 19303  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 19304  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 19305  			break
 19306  		}
 19307  	}
 19308  	if idxNum&8 != 0 {
 19309  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 19310  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19311  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 19312  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19313  		}
 19314  	} else {
 19315  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 19316  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19317  	}
 19318  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 19319  	return SQLITE_OK
 19320  }
 19321  
 19322  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 19323  	bp := tls.Alloc(12)
 19324  	defer tls.Free(12)
 19325  
 19326  	var i int32
 19327  	var j int32
 19328  	var idxNum int32 = 0
 19329  	var bStartSeen int32 = 0
 19330  	var unusableMask int32 = 0
 19331  	var nArg int32 = 0
 19332  
 19333  	var pConstraint uintptr
 19334  
 19335  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 19336  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 19337  	i = 0
 19338  __1:
 19339  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 19340  		goto __3
 19341  	}
 19342  	{
 19343  		var iCol int32
 19344  		var iMask int32
 19345  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 19346  			goto __2
 19347  		}
 19348  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 19349  
 19350  		iMask = int32(1) << iCol
 19351  		if iCol == 0 {
 19352  			bStartSeen = 1
 19353  		}
 19354  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 19355  			unusableMask = unusableMask | iMask
 19356  			goto __2
 19357  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 19358  			idxNum = idxNum | iMask
 19359  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 19360  		}
 19361  
 19362  	}
 19363  	goto __2
 19364  __2:
 19365  	i++
 19366  	pConstraint += 12
 19367  	goto __1
 19368  	goto __3
 19369  __3:
 19370  	;
 19371  	for i = 0; i < 3; i++ {
 19372  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 19373  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 19374  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 19375  		}
 19376  	}
 19377  
 19378  	if !(bStartSeen != 0) {
 19379  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 19380  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 19381  			ts+6914, 0)
 19382  		return SQLITE_ERROR
 19383  	}
 19384  	if unusableMask & ^idxNum != 0 {
 19385  		return SQLITE_CONSTRAINT
 19386  	}
 19387  	if idxNum&3 == 3 {
 19388  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 19389  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 19390  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 19391  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 19392  				idxNum = idxNum | 8
 19393  			} else {
 19394  				idxNum = idxNum | 16
 19395  			}
 19396  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 19397  		}
 19398  	} else {
 19399  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 19400  	}
 19401  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 19402  	return SQLITE_OK
 19403  }
 19404  
 19405  var seriesModule = sqlite3_module{
 19406  	FxConnect:    0,
 19407  	FxBestIndex:  0,
 19408  	FxDisconnect: 0,
 19409  	FxOpen:       0,
 19410  	FxClose:      0,
 19411  	FxFilter:     0,
 19412  	FxNext:       0,
 19413  	FxEof:        0,
 19414  	FxColumn:     0,
 19415  	FxRowid:      0,
 19416  }
 19417  
 19418  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19419  	var rc int32 = SQLITE_OK
 19420  	_ = pApi
 19421  
 19422  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 19423  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 19424  			ts+6972, 0)
 19425  		return SQLITE_ERROR
 19426  	}
 19427  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 19428  	return rc
 19429  }
 19430  
 19431  type u16 = uint16
 19432  
 19433  var midClass = [128]uint8{
 19434  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19435  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19436  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19437  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19438  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19439  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19440  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19441  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19442  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19443  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19444  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19445  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19446  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19447  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19448  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19449  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19450  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19451  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19452  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19453  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19454  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19455  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19456  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19457  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19458  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19459  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19460  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19461  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19462  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19463  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 19464  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19465  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19466  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19467  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19468  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19469  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19470  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19471  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19472  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19473  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19474  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19475  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19476  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19477  }
 19478  
 19479  var initClass = [128]uint8{
 19480  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19481  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19482  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19483  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19484  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19485  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19486  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19487  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19488  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19489  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19490  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19491  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19492  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19493  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19494  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19495  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19496  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19497  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19498  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19499  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19500  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19501  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19502  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19503  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19504  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19505  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19506  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19507  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19508  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19509  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 19510  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19511  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19512  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19513  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19514  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19515  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19516  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19517  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19518  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19519  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19520  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 19521  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19522  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19523  }
 19524  
 19525  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 19526  
 19527  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 19528  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 19529  	var i int32
 19530  	var nOut int32 = 0
 19531  	var cPrev int8 = int8(0x77)
 19532  	var cPrevX int8 = int8(0x77)
 19533  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 19534  
 19535  	if zOut == uintptr(0) {
 19536  		return uintptr(0)
 19537  	}
 19538  	if nIn > 2 {
 19539  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 19540  		case 'g':
 19541  			fallthrough
 19542  		case 'k':
 19543  			{
 19544  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 19545  					zIn++
 19546  					nIn--
 19547  				}
 19548  				break
 19549  
 19550  			}
 19551  		}
 19552  	}
 19553  	for i = 0; i < nIn; i++ {
 19554  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 19555  		if i+1 < nIn {
 19556  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 19557  				continue
 19558  			}
 19559  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 19560  				continue
 19561  			}
 19562  			if i+2 < nIn {
 19563  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 19564  					continue
 19565  				}
 19566  			}
 19567  		}
 19568  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 19569  		if int32(c) == CCLASS_SPACE {
 19570  			continue
 19571  		}
 19572  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 19573  			continue
 19574  		}
 19575  		aClass = uintptr(unsafe.Pointer(&midClass))
 19576  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 19577  			continue
 19578  		}
 19579  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 19580  			nOut--
 19581  		}
 19582  		cPrev = int8(c)
 19583  		if int32(c) == CCLASS_SILENT {
 19584  			continue
 19585  		}
 19586  		cPrevX = int8(c)
 19587  		c = className[c]
 19588  
 19589  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 19590  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 19591  		}
 19592  	}
 19593  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 19594  	return zOut
 19595  }
 19596  
 19597  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19598  	var zIn uintptr
 19599  	var zOut uintptr
 19600  
 19601  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19602  	if zIn == uintptr(0) {
 19603  		return
 19604  	}
 19605  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 19606  	if zOut == uintptr(0) {
 19607  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19608  	} else {
 19609  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19610  	}
 19611  }
 19612  
 19613  func characterClass(tls *libc.TLS, cPrev int8, c int8) int8 {
 19614  	if int32(cPrev) == 0 {
 19615  		return int8(initClass[int32(c)&0x7f])
 19616  	}
 19617  	return int8(midClass[int32(c)&0x7f])
 19618  }
 19619  
 19620  func insertOrDeleteCost(tls *libc.TLS, cPrev int8, c int8, cNext int8) int32 {
 19621  	var classC int8 = characterClass(tls, cPrev, c)
 19622  	var classCprev int8
 19623  
 19624  	if int32(classC) == CCLASS_SILENT {
 19625  		return 1
 19626  	}
 19627  	if int32(cPrev) == int32(c) {
 19628  		return 10
 19629  	}
 19630  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 19631  		return 20
 19632  	}
 19633  	classCprev = characterClass(tls, cPrev, cPrev)
 19634  	if int32(classC) == int32(classCprev) {
 19635  		if int32(classC) == CCLASS_VOWEL {
 19636  			return 15
 19637  		} else {
 19638  			return 50
 19639  		}
 19640  	}
 19641  
 19642  	return 100
 19643  }
 19644  
 19645  func substituteCost(tls *libc.TLS, cPrev int8, cFrom int8, cTo int8) int32 {
 19646  	var classFrom int8
 19647  	var classTo int8
 19648  	if int32(cFrom) == int32(cTo) {
 19649  		return 0
 19650  	}
 19651  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 19652  		return 0
 19653  	}
 19654  	classFrom = characterClass(tls, cPrev, cFrom)
 19655  	classTo = characterClass(tls, cPrev, cTo)
 19656  	if int32(classFrom) == int32(classTo) {
 19657  		return 40
 19658  	}
 19659  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 19660  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 19661  		return 75
 19662  	}
 19663  
 19664  	return 100
 19665  }
 19666  
 19667  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 19668  	bp := tls.Alloc(300)
 19669  	defer tls.Free(300)
 19670  
 19671  	var nA int32
 19672  	var nB int32
 19673  	var xA int32
 19674  	var xB int32
 19675  	var cA int8 = int8(0)
 19676  	var cB int8
 19677  	var cAprev int8
 19678  	var cBprev int8
 19679  	var cAnext int8
 19680  	var cBnext int8
 19681  	var d int32
 19682  	var dc int32 = 0
 19683  	var res int32
 19684  	var m uintptr
 19685  	var cx uintptr
 19686  	var toFree uintptr = uintptr(0)
 19687  	var nMatch int32 = 0
 19688  
 19689  	if zA == uintptr(0) || zB == uintptr(0) {
 19690  		return -1
 19691  	}
 19692  
 19693  	for *(*int8)(unsafe.Pointer(zA)) != 0 && int32(*(*int8)(unsafe.Pointer(zA))) == int32(*(*int8)(unsafe.Pointer(zB))) {
 19694  		dc = int32(*(*int8)(unsafe.Pointer(zA)))
 19695  		zA++
 19696  		zB++
 19697  		nMatch++
 19698  	}
 19699  	if pnMatch != 0 {
 19700  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 19701  	}
 19702  	if int32(*(*int8)(unsafe.Pointer(zA))) == 0 && int32(*(*int8)(unsafe.Pointer(zB))) == 0 {
 19703  		return 0
 19704  	}
 19705  
 19706  	for nA = 0; *(*int8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 19707  		if int32(*(*int8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 19708  			return -2
 19709  		}
 19710  	}
 19711  	for nB = 0; *(*int8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 19712  		if int32(*(*int8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 19713  			return -2
 19714  		}
 19715  	}
 19716  
 19717  	if nA == 0 {
 19718  		cBprev = int8(dc)
 19719  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 19720  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 19721  			cBprev = cB
 19722  		}
 19723  		return res
 19724  	}
 19725  	if nB == 0 {
 19726  		cAprev = int8(dc)
 19727  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 19728  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA+1))))
 19729  			cAprev = cA
 19730  		}
 19731  		return res
 19732  	}
 19733  
 19734  	if int32(*(*int8)(unsafe.Pointer(zA))) == '*' && int32(*(*int8)(unsafe.Pointer(zA + 1))) == 0 {
 19735  		return 0
 19736  	}
 19737  
 19738  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 19739  		m = bp
 19740  	} else {
 19741  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 19742  		if m == uintptr(0) {
 19743  			return -3
 19744  		}
 19745  	}
 19746  	cx = m + uintptr(nB+1)*4
 19747  
 19748  	*(*int32)(unsafe.Pointer(m)) = 0
 19749  	*(*int8)(unsafe.Pointer(cx)) = int8(dc)
 19750  	cBprev = int8(dc)
 19751  	for xB = 1; xB <= nB; xB++ {
 19752  		cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19753  		cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19754  		*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 19755  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 19756  		cBprev = cB
 19757  	}
 19758  	cAprev = int8(dc)
 19759  	for xA = 1; xA <= nA; xA++ {
 19760  		var lastA int32 = libc.Bool32(xA == nA)
 19761  		cA = *(*int8)(unsafe.Pointer(zA + uintptr(xA-1)))
 19762  		cAnext = *(*int8)(unsafe.Pointer(zA + uintptr(xA)))
 19763  		if int32(cA) == '*' && lastA != 0 {
 19764  			break
 19765  		}
 19766  		d = *(*int32)(unsafe.Pointer(m))
 19767  		dc = int32(*(*int8)(unsafe.Pointer(cx)))
 19768  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 19769  		cBprev = int8(0)
 19770  		for xB = 1; xB <= nB; xB++ {
 19771  			var totalCost int32
 19772  			var insCost int32
 19773  			var delCost int32
 19774  			var subCost int32
 19775  			var ncx int32
 19776  			cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19777  			cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19778  
 19779  			insCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 19780  			if lastA != 0 {
 19781  				insCost = insCost / FINAL_INS_COST_DIV
 19782  			}
 19783  
 19784  			delCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 19785  
 19786  			subCost = substituteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 19787  
 19788  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 19789  			ncx = int32(cB)
 19790  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 19791  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19792  				ncx = int32(cA)
 19793  			}
 19794  			if subCost+d < totalCost {
 19795  				totalCost = subCost + d
 19796  			}
 19797  
 19798  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19799  			dc = int32(*(*int8)(unsafe.Pointer(cx + uintptr(xB))))
 19800  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 19801  			*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = int8(ncx)
 19802  			cBprev = cB
 19803  		}
 19804  		cAprev = cA
 19805  	}
 19806  
 19807  	if int32(cA) == '*' {
 19808  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 19809  		for xB = 1; xB <= nB; xB++ {
 19810  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 19811  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19812  				if pnMatch != 0 {
 19813  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 19814  				}
 19815  			}
 19816  		}
 19817  	} else {
 19818  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 19819  
 19820  	}
 19821  	sqlite3.Xsqlite3_free(tls, toFree)
 19822  	return res
 19823  }
 19824  
 19825  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19826  	var res int32 = editdist1(tls,
 19827  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 19828  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 19829  		uintptr(0))
 19830  	if res < 0 {
 19831  		if res == -3 {
 19832  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19833  		} else if res == -2 {
 19834  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 19835  		} else {
 19836  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 19837  		}
 19838  	} else {
 19839  		sqlite3.Xsqlite3_result_int(tls, context, res)
 19840  	}
 19841  }
 19842  
 19843  type EditDist3Cost1 = struct {
 19844  	FpNext uintptr
 19845  	FnFrom u8
 19846  	FnTo   u8
 19847  	FiCost u16
 19848  	Fa     [4]int8
 19849  }
 19850  
 19851  type EditDist3Cost = EditDist3Cost1
 19852  type EditDist3Config1 = struct {
 19853  	FnLang       int32
 19854  	F__ccgo_pad1 [4]byte
 19855  	Fa           uintptr
 19856  }
 19857  
 19858  type EditDist3Config = EditDist3Config1
 19859  type EditDist3From1 = struct {
 19860  	FnSubst      int32
 19861  	FnDel        int32
 19862  	FnByte       int32
 19863  	F__ccgo_pad1 [4]byte
 19864  	FapSubst     uintptr
 19865  	FapDel       uintptr
 19866  }
 19867  
 19868  type EditDist3From = EditDist3From1
 19869  type EditDist3FromString1 = struct {
 19870  	Fz        uintptr
 19871  	Fn        int32
 19872  	FisPrefix int32
 19873  	Fa        uintptr
 19874  }
 19875  
 19876  type EditDist3FromString = EditDist3FromString1
 19877  type EditDist3To1 = struct {
 19878  	FnIns  int32
 19879  	FnByte int32
 19880  	FapIns uintptr
 19881  }
 19882  
 19883  type EditDist3To = EditDist3To1
 19884  type EditDist3ToString1 = struct {
 19885  	Fz           uintptr
 19886  	Fn           int32
 19887  	F__ccgo_pad1 [4]byte
 19888  	Fa           uintptr
 19889  }
 19890  
 19891  type EditDist3ToString = EditDist3ToString1
 19892  type EditDist3Lang1 = struct {
 19893  	FiLang    int32
 19894  	FiInsCost int32
 19895  	FiDelCost int32
 19896  	FiSubCost int32
 19897  	FpCost    uintptr
 19898  }
 19899  
 19900  type EditDist3Lang = EditDist3Lang1
 19901  
 19902  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 19903  
 19904  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 19905  	var i int32
 19906  	if p == uintptr(0) {
 19907  		return
 19908  	}
 19909  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 19910  		var pCost uintptr
 19911  		var pNext uintptr
 19912  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 19913  		for pCost != 0 {
 19914  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 19915  			sqlite3.Xsqlite3_free(tls, pCost)
 19916  			pCost = pNext
 19917  		}
 19918  	}
 19919  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 19920  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 19921  }
 19922  
 19923  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 19924  	var p uintptr = pIn
 19925  	editDist3ConfigClear(tls, p)
 19926  	sqlite3.Xsqlite3_free(tls, p)
 19927  }
 19928  
 19929  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 19930  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 19931  	var rc int32
 19932  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 19933  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19934  	}
 19935  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 19936  	if rc == 0 {
 19937  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19938  	}
 19939  	return rc
 19940  }
 19941  
 19942  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 19943  	bp := tls.Alloc(8)
 19944  	defer tls.Free(8)
 19945  
 19946  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19947  	var ppTail uintptr = bp
 19948  	var p uintptr
 19949  	for pA != 0 && pB != 0 {
 19950  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 19951  			p = pA
 19952  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 19953  		} else {
 19954  			p = pB
 19955  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 19956  		}
 19957  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 19958  		ppTail = p
 19959  	}
 19960  	if pA != 0 {
 19961  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 19962  	} else {
 19963  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 19964  	}
 19965  	return *(*uintptr)(unsafe.Pointer(bp))
 19966  }
 19967  
 19968  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 19969  	bp := tls.Alloc(480)
 19970  	defer tls.Free(480)
 19971  
 19972  	var p uintptr
 19973  	var i int32
 19974  	var mx int32 = 0
 19975  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19976  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 19977  	for pList != 0 {
 19978  		p = pList
 19979  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 19980  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 19981  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 19982  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 19983  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 19984  		}
 19985  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 19986  		if i > mx {
 19987  			mx = i
 19988  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 19989  		}
 19990  	}
 19991  	p = uintptr(0)
 19992  	for i = 0; i <= mx; i++ {
 19993  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 19994  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 19995  		}
 19996  	}
 19997  	return p
 19998  }
 19999  
 20000  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 20001  	bp := tls.Alloc(16)
 20002  	defer tls.Free(16)
 20003  
 20004  	var rc int32
 20005  	var rc2 int32
 20006  	var zSql uintptr
 20007  	var iLangPrev int32 = -9999
 20008  	var pLang uintptr = uintptr(0)
 20009  
 20010  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 20011  		ts+7107, libc.VaList(bp, zTable))
 20012  	if zSql == uintptr(0) {
 20013  		return SQLITE_NOMEM
 20014  	}
 20015  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 20016  	sqlite3.Xsqlite3_free(tls, zSql)
 20017  	if rc != 0 {
 20018  		return rc
 20019  	}
 20020  	editDist3ConfigClear(tls, p)
 20021  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 20022  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 20023  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20024  		var nFrom int32
 20025  		if zFrom != 0 {
 20026  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20027  		} else {
 20028  			nFrom = 0
 20029  		}
 20030  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20031  		var nTo int32
 20032  		if zTo != 0 {
 20033  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20034  		} else {
 20035  			nTo = 0
 20036  		}
 20037  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 20038  
 20039  		if nFrom > 100 || nTo > 100 {
 20040  			continue
 20041  		}
 20042  		if iCost < 0 {
 20043  			continue
 20044  		}
 20045  		if iCost >= 10000 {
 20046  			continue
 20047  		}
 20048  		if pLang == uintptr(0) || iLang != iLangPrev {
 20049  			var pNew uintptr
 20050  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 20051  			if pNew == uintptr(0) {
 20052  				rc = SQLITE_NOMEM
 20053  				break
 20054  			}
 20055  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 20056  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 20057  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 20058  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 20059  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 20060  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 20061  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 20062  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 20063  			iLangPrev = iLang
 20064  		}
 20065  		if nFrom == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 20066  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 20067  		} else if nFrom == 0 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 20068  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 20069  		} else if nFrom == 1 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 20070  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 20071  		} else {
 20072  			var pCost uintptr
 20073  			var nExtra int32 = nFrom + nTo - 4
 20074  			if nExtra < 0 {
 20075  				nExtra = 0
 20076  			}
 20077  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 20078  			if pCost == uintptr(0) {
 20079  				rc = SQLITE_NOMEM
 20080  				break
 20081  			}
 20082  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 20083  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 20084  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 20085  			libc.Xmemcpy(tls, pCost+12, zFrom, uint64(nFrom))
 20086  			libc.Xmemcpy(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo))
 20087  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20088  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 20089  		}
 20090  	}
 20091  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 20092  	if rc == SQLITE_OK {
 20093  		rc = rc2
 20094  	}
 20095  	if rc == SQLITE_OK {
 20096  		var iLang int32
 20097  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 20098  			(*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)
 20099  		}
 20100  	}
 20101  	return rc
 20102  }
 20103  
 20104  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 20105  	var len int32 = 1
 20106  	if int32(c) > 0x7f {
 20107  		if int32(c)&0xe0 == 0xc0 {
 20108  			len = 2
 20109  		} else if int32(c)&0xf0 == 0xe0 {
 20110  			len = 3
 20111  		} else {
 20112  			len = 4
 20113  		}
 20114  	}
 20115  	if len > N {
 20116  		len = N
 20117  	}
 20118  	return len
 20119  }
 20120  
 20121  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20122  	if int32(*(*int8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*int8)(unsafe.Pointer(z))) {
 20123  		return 0
 20124  	}
 20125  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 20126  		return 0
 20127  	}
 20128  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 20129  		return 0
 20130  	}
 20131  	return 1
 20132  }
 20133  
 20134  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20135  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 20136  		if int32(*(*int8)(unsafe.Pointer(p + 12))) != int32(*(*int8)(unsafe.Pointer(z))) {
 20137  			return 0
 20138  		}
 20139  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 20140  			return 0
 20141  		}
 20142  	}
 20143  	return 1
 20144  }
 20145  
 20146  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 20147  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 20148  	if b1 > n2 {
 20149  		return 0
 20150  	}
 20151  
 20152  	if int32(*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*int8)(unsafe.Pointer(z2))) {
 20153  		return 0
 20154  	}
 20155  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 20156  		return 0
 20157  	}
 20158  	return 1
 20159  }
 20160  
 20161  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 20162  	var i int32
 20163  	if p != 0 {
 20164  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 20165  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 20166  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 20167  		}
 20168  		sqlite3.Xsqlite3_free(tls, p)
 20169  	}
 20170  }
 20171  
 20172  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 20173  	var pStr uintptr
 20174  	var p uintptr
 20175  	var i int32
 20176  
 20177  	if z == uintptr(0) {
 20178  		return uintptr(0)
 20179  	}
 20180  	if n < 0 {
 20181  		n = int32(libc.Xstrlen(tls, z))
 20182  	}
 20183  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 20184  	if pStr == uintptr(0) {
 20185  		return uintptr(0)
 20186  	}
 20187  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 20188  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n))
 20189  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 20190  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 20191  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1))
 20192  	if n != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 20193  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 20194  		n--
 20195  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 20196  		*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = int8(0)
 20197  	} else {
 20198  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 20199  	}
 20200  
 20201  	for i = 0; i < n; i++ {
 20202  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 20203  		libc.Xmemset(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})))
 20204  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))), n-i)
 20205  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 20206  			var apNew uintptr
 20207  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 20208  				continue
 20209  			}
 20210  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 20211  				continue
 20212  			}
 20213  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 20214  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 20215  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 20216  				if apNew == uintptr(0) {
 20217  					break
 20218  				}
 20219  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 20220  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 20221  			} else {
 20222  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 20223  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 20224  				if apNew == uintptr(0) {
 20225  					break
 20226  				}
 20227  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 20228  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 20229  			}
 20230  		}
 20231  		if p != 0 {
 20232  			editDist3FromStringDelete(tls, pStr)
 20233  			pStr = uintptr(0)
 20234  			break
 20235  		}
 20236  	}
 20237  	return pStr
 20238  }
 20239  
 20240  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 20241  	var b uint32
 20242  
 20243  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 20244  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 20245  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 20246  	}
 20247  }
 20248  
 20249  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 20250  	bp := tls.Alloc(1048)
 20251  	defer tls.Free(1048)
 20252  
 20253  	var k int32
 20254  	var n int32
 20255  	var i1 int32
 20256  	var b1 int32
 20257  	var i2 int32
 20258  	var b2 int32
 20259  
 20260  	var a2 uintptr
 20261  	var m uintptr
 20262  	var pToFree uintptr
 20263  	var szRow int32
 20264  	var p uintptr
 20265  	var res int32
 20266  	var nByte sqlite3_uint64
 20267  
 20268  	var apNew uintptr
 20269  	var cx int32
 20270  	var cxp int32
 20271  	var cxd int32
 20272  	var cxu int32
 20273  	var rx int32
 20274  	var rxp int32
 20275  	var b int32
 20276  	var nExtra int32
 20277  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 20278  
 20279  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 20280  	n = (n + 1) & libc.CplInt32(1)
 20281  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 20282  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 20283  		goto __1
 20284  	}
 20285  	m = bp
 20286  	pToFree = uintptr(0)
 20287  	goto __2
 20288  __1:
 20289  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 20290  	if !(m == uintptr(0)) {
 20291  		goto __3
 20292  	}
 20293  	return -1
 20294  __3:
 20295  	;
 20296  __2:
 20297  	;
 20298  	a2 = m + uintptr(n)*4
 20299  	libc.Xmemset(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2))
 20300  
 20301  	i2 = 0
 20302  __4:
 20303  	if !(i2 < n2) {
 20304  		goto __6
 20305  	}
 20306  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z2 + uintptr(i2)))), n2-i2)
 20307  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20308  __7:
 20309  	if !(p != 0) {
 20310  		goto __9
 20311  	}
 20312  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 20313  		goto __10
 20314  	}
 20315  	goto __9
 20316  __10:
 20317  	;
 20318  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 20319  		goto __11
 20320  	}
 20321  	goto __8
 20322  __11:
 20323  	;
 20324  	if !(int32(*(*int8)(unsafe.Pointer(p + 12))) > int32(*(*int8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 20325  		goto __12
 20326  	}
 20327  	goto __9
 20328  __12:
 20329  	;
 20330  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 20331  		goto __13
 20332  	}
 20333  	goto __8
 20334  __13:
 20335  	;
 20336  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 20337  	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))
 20338  	if !(apNew == uintptr(0)) {
 20339  		goto __14
 20340  	}
 20341  	res = -1
 20342  	goto editDist3Abort
 20343  __14:
 20344  	;
 20345  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 20346  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 20347  	goto __8
 20348  __8:
 20349  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20350  	goto __7
 20351  	goto __9
 20352  __9:
 20353  	;
 20354  	goto __5
 20355  __5:
 20356  	i2++
 20357  	goto __4
 20358  	goto __6
 20359  __6:
 20360  	;
 20361  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 20362  	libc.Xmemset(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))))
 20363  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 20364  
 20365  	i1 = 0
 20366  __15:
 20367  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20368  		goto __17
 20369  	}
 20370  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20371  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20372  	k = 0
 20373  __18:
 20374  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20375  		goto __20
 20376  	}
 20377  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20378  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20379  	goto __19
 20380  __19:
 20381  	k++
 20382  	goto __18
 20383  	goto __20
 20384  __20:
 20385  	;
 20386  	goto __16
 20387  __16:
 20388  	i1 = i1 + b1
 20389  	goto __15
 20390  	goto __17
 20391  __17:
 20392  	;
 20393  	i2 = 0
 20394  __21:
 20395  	if !(i2 < n2) {
 20396  		goto __23
 20397  	}
 20398  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 20399  	rx = szRow * (i2 + b2)
 20400  	rxp = szRow * i2
 20401  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20402  	k = 0
 20403  __24:
 20404  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 20405  		goto __26
 20406  	}
 20407  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 20408  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20409  	goto __25
 20410  __25:
 20411  	k++
 20412  	goto __24
 20413  	goto __26
 20414  __26:
 20415  	;
 20416  	i1 = 0
 20417  __27:
 20418  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20419  		goto __29
 20420  	}
 20421  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 20422  	cxp = rx + i1
 20423  	cx = cxp + b1
 20424  	cxd = rxp + i1
 20425  	cxu = cxd + b1
 20426  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20427  	k = 0
 20428  __30:
 20429  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 20430  		goto __32
 20431  	}
 20432  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 20433  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20434  	goto __31
 20435  __31:
 20436  	k++
 20437  	goto __30
 20438  	goto __32
 20439  __32:
 20440  	;
 20441  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20442  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20443  		goto __33
 20444  	}
 20445  	updateCost(tls, m, cx, cxd, 0)
 20446  __33:
 20447  	;
 20448  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20449  	k = 0
 20450  __34:
 20451  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 20452  		goto __36
 20453  	}
 20454  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 20455  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20456  		goto __37
 20457  	}
 20458  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20459  __37:
 20460  	;
 20461  	goto __35
 20462  __35:
 20463  	k++
 20464  	goto __34
 20465  	goto __36
 20466  __36:
 20467  	;
 20468  	goto __28
 20469  __28:
 20470  	i1 = i1 + b1
 20471  	goto __27
 20472  	goto __29
 20473  __29:
 20474  	;
 20475  	goto __22
 20476  __22:
 20477  	i2 = i2 + b2
 20478  	goto __21
 20479  	goto __23
 20480  __23:
 20481  	;
 20482  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 20483  	n = n2
 20484  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 20485  		goto __38
 20486  	}
 20487  	i2 = 1
 20488  __39:
 20489  	if !(i2 <= n2) {
 20490  		goto __41
 20491  	}
 20492  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 20493  	if !(b <= res) {
 20494  		goto __42
 20495  	}
 20496  	res = b
 20497  	n = i2 - 1
 20498  __42:
 20499  	;
 20500  	goto __40
 20501  __40:
 20502  	i2++
 20503  	goto __39
 20504  	goto __41
 20505  __41:
 20506  	;
 20507  __38:
 20508  	;
 20509  	if !(pnMatch != 0) {
 20510  		goto __43
 20511  	}
 20512  	nExtra = 0
 20513  	k = 0
 20514  __44:
 20515  	if !(k < n) {
 20516  		goto __46
 20517  	}
 20518  	if !(int32(*(*int8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 20519  		goto __47
 20520  	}
 20521  	nExtra++
 20522  __47:
 20523  	;
 20524  	goto __45
 20525  __45:
 20526  	k++
 20527  	goto __44
 20528  	goto __46
 20529  __46:
 20530  	;
 20531  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 20532  __43:
 20533  	;
 20534  editDist3Abort:
 20535  	i2 = 0
 20536  __48:
 20537  	if !(i2 < n2) {
 20538  		goto __50
 20539  	}
 20540  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 20541  	goto __49
 20542  __49:
 20543  	i2++
 20544  	goto __48
 20545  	goto __50
 20546  __50:
 20547  	;
 20548  	sqlite3.Xsqlite3_free(tls, pToFree)
 20549  	return res
 20550  }
 20551  
 20552  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 20553  	var i int32
 20554  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 20555  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 20556  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 20557  		}
 20558  	}
 20559  	return uintptr(unsafe.Pointer(&editDist3Lang))
 20560  }
 20561  
 20562  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20563  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 20564  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 20565  	var rc int32
 20566  	if argc == 1 {
 20567  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20568  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 20569  		if rc != 0 {
 20570  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 20571  		}
 20572  	} else {
 20573  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20574  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20575  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20576  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20577  		var iLang int32
 20578  		if argc == 3 {
 20579  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 20580  		} else {
 20581  			iLang = 0
 20582  		}
 20583  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 20584  		var pFrom uintptr
 20585  		var dist int32
 20586  
 20587  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 20588  		if pFrom == uintptr(0) {
 20589  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20590  			return
 20591  		}
 20592  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 20593  		editDist3FromStringDelete(tls, pFrom)
 20594  		if dist == -1 {
 20595  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20596  		} else {
 20597  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 20598  		}
 20599  	}
 20600  }
 20601  
 20602  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 20603  	var rc int32
 20604  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 20605  	if pConfig == uintptr(0) {
 20606  		return SQLITE_NOMEM
 20607  	}
 20608  	libc.Xmemset(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20609  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20610  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20611  		*(*uintptr)(unsafe.Pointer(&struct {
 20612  			f func(*libc.TLS, uintptr, int32, uintptr)
 20613  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20614  	if rc == SQLITE_OK {
 20615  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20616  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20617  			*(*uintptr)(unsafe.Pointer(&struct {
 20618  				f func(*libc.TLS, uintptr, int32, uintptr)
 20619  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20620  	}
 20621  	if rc == SQLITE_OK {
 20622  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20623  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20624  			*(*uintptr)(unsafe.Pointer(&struct {
 20625  				f func(*libc.TLS, uintptr, int32, uintptr)
 20626  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 20627  	} else {
 20628  		sqlite3.Xsqlite3_free(tls, pConfig)
 20629  	}
 20630  	return rc
 20631  }
 20632  
 20633  var sqlite3Utf8Trans1 = [64]uint8{
 20634  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20635  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20636  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 20637  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 20638  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20639  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20640  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20641  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 20642  }
 20643  
 20644  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 20645  	var c int32
 20646  	var i int32
 20647  
 20648  	if 0 != 0 {
 20649  		c = libc.AssignInt32(&i, 0)
 20650  	} else {
 20651  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 20652  		i = 1
 20653  		if c >= 0xc0 {
 20654  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 20655  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 20656  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 20657  			}
 20658  		}
 20659  	}
 20660  	*(*int32)(unsafe.Pointer(pSize)) = i
 20661  	return c
 20662  }
 20663  
 20664  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 20665  	bp := tls.Alloc(4)
 20666  	defer tls.Free(4)
 20667  
 20668  	var i int32
 20669  	var nChar int32 = 0
 20670  	for i = 0; i < nIn; nChar++ {
 20671  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20672  		i = i + *(*int32)(unsafe.Pointer(bp))
 20673  	}
 20674  	return nChar
 20675  }
 20676  
 20677  type Transliteration1 = struct {
 20678  	FcFrom uint16
 20679  	FcTo0  uint8
 20680  	FcTo1  uint8
 20681  	FcTo2  uint8
 20682  	FcTo3  uint8
 20683  }
 20684  
 20685  type Transliteration = Transliteration1
 20686  
 20687  var translit = [389]Transliteration{
 20688  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 20689  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 20690  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 20691  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 20692  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 20693  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 20694  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 20695  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 20696  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 20697  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 20698  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 20699  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 20700  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 20701  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 20702  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 20703  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 20704  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 20705  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 20706  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 20707  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 20708  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 20709  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 20710  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 20711  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 20712  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 20713  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 20714  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 20715  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 20716  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 20717  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 20718  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 20719  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 20720  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20721  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 20722  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 20723  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 20724  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 20725  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 20726  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20727  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 20728  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20729  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 20730  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 20731  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 20732  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 20733  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 20734  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 20735  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 20736  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 20737  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 20738  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 20739  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 20740  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 20741  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 20742  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 20743  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 20744  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20745  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 20746  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 20747  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 20748  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 20749  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 20750  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 20751  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 20752  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20753  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 20754  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 20755  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 20756  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 20757  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 20758  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 20759  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 20760  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 20761  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 20762  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20763  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20764  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 20765  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 20766  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 20767  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 20768  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 20769  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 20770  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 20771  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 20772  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 20773  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 20774  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 20775  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 20776  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 20777  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 20778  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 20779  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 20780  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 20781  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 20782  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 20783  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 20784  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 20785  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 20786  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 20787  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 20788  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 20789  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 20790  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 20791  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 20792  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 20793  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 20794  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 20795  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 20796  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 20797  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 20798  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 20799  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 20800  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 20801  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 20802  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 20803  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 20804  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 20805  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 20806  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 20807  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 20808  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 20809  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 20810  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 20811  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 20812  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 20813  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 20814  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 20815  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 20816  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 20817  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 20818  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 20819  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 20820  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 20821  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 20822  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 20823  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 20824  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 20825  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 20826  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 20827  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 20828  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 20829  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 20830  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 20831  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 20832  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 20833  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 20834  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 20835  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 20836  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 20837  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20838  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 20839  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 20840  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 20841  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 20842  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 20843  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 20844  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 20845  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 20846  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20847  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20848  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 20849  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 20850  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 20851  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 20852  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 20853  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 20854  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 20855  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 20856  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 20857  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 20858  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 20859  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 20860  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 20861  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 20862  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 20863  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 20864  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 20865  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 20866  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 20867  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 20868  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 20869  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 20870  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 20871  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 20872  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 20873  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 20874  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 20875  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 20876  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 20877  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 20878  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 20879  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 20880  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 20881  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 20882  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 20883  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 20884  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 20885  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 20886  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 20887  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 20888  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 20889  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 20890  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 20891  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 20892  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 20893  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 20894  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 20895  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 20896  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 20897  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 20898  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 20899  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 20900  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 20901  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 20902  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20903  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 20904  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 20905  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 20906  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 20907  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 20908  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 20909  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 20910  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 20911  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 20912  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 20913  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 20914  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 20915  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 20916  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20917  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 20918  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 20919  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 20920  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 20921  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 20922  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 20923  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 20924  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 20925  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 20926  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 20927  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 20928  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 20929  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 20930  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 20931  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 20932  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20933  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 20934  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 20935  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 20936  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 20937  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 20938  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 20939  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 20940  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 20941  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 20942  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 20943  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 20944  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 20945  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 20946  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20947  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 20948  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 20949  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 20950  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 20951  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 20952  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 20953  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 20954  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 20955  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 20956  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 20957  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 20958  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 20959  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 20960  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 20961  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 20962  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 20963  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 20964  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 20965  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 20966  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 20967  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 20968  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 20969  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 20970  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 20971  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 20972  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 20973  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 20974  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 20975  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 20976  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 20977  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 20978  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 20979  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 20980  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 20981  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 20982  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 20983  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 20984  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 20985  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 20986  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 20987  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 20988  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 20989  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 20990  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 20991  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 20992  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 20993  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20994  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20995  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 20996  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 20997  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 20998  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 20999  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 21000  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 21001  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 21002  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 21003  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 21004  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 21005  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 21006  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 21007  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 21008  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 21009  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 21010  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 21011  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 21012  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 21013  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 21014  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 21015  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 21016  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 21017  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 21018  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 21019  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 21020  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 21021  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 21022  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 21023  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 21024  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 21025  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21026  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21027  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21028  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 21029  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 21030  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 21031  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 21032  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 21033  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 21034  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 21035  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 21036  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 21037  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 21038  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 21039  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 21040  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 21041  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 21042  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 21043  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 21044  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 21045  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 21046  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 21047  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 21048  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 21049  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 21050  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 21051  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 21052  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 21053  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 21054  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 21055  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 21056  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 21057  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 21058  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 21059  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 21060  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 21061  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 21062  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 21063  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 21064  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 21065  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 21066  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 21067  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 21068  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 21069  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 21070  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 21071  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 21072  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 21073  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 21074  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 21075  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21076  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21077  }
 21078  
 21079  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 21080  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 21081  	return uintptr(unsafe.Pointer(&translit))
 21082  }
 21083  
 21084  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 21085  	bp := tls.Alloc(8)
 21086  	defer tls.Free(8)
 21087  
 21088  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 21089  	var c int32
 21090  
 21091  	var nOut int32
 21092  	if zOut == uintptr(0) {
 21093  		return uintptr(0)
 21094  	}
 21095  	nOut = 0
 21096  	for nIn > 0 {
 21097  		c = utf8Read(tls, zIn, nIn, bp)
 21098  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21099  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21100  		if c <= 127 {
 21101  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 21102  		} else {
 21103  			var xBtm int32
 21104  			var x int32
 21105  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21106  			xBtm = 0
 21107  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21108  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21109  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21110  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 21111  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21112  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 21113  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21114  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 21115  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21116  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 21117  							}
 21118  						}
 21119  					}
 21120  					c = 0
 21121  					break
 21122  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21123  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21124  				} else {
 21125  					xBtm = x + 1
 21126  				}
 21127  			}
 21128  			if c != 0 {
 21129  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 21130  			}
 21131  		}
 21132  	}
 21133  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 21134  	return zOut
 21135  }
 21136  
 21137  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 21138  	bp := tls.Alloc(8)
 21139  	defer tls.Free(8)
 21140  
 21141  	var i int32
 21142  	var c int32
 21143  
 21144  	var nOut int32
 21145  	var nChar int32
 21146  
 21147  	i = libc.AssignInt32(&nOut, 0)
 21148  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 21149  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 21150  		i = i + *(*int32)(unsafe.Pointer(bp))
 21151  
 21152  		nOut++
 21153  		if c >= 128 {
 21154  			var xBtm int32
 21155  			var x int32
 21156  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21157  			xBtm = 0
 21158  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21159  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21160  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21161  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21162  						nOut++
 21163  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21164  							nOut++
 21165  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21166  								nOut++
 21167  							}
 21168  						}
 21169  					}
 21170  					break
 21171  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21172  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21173  				} else {
 21174  					xBtm = x + 1
 21175  				}
 21176  			}
 21177  		}
 21178  	}
 21179  
 21180  	return nChar
 21181  }
 21182  
 21183  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21184  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21185  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21186  	var zOut uintptr = transliterate(tls, zIn, nIn)
 21187  	if zOut == uintptr(0) {
 21188  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21189  	} else {
 21190  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 21191  	}
 21192  }
 21193  
 21194  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21195  	bp := tls.Alloc(4)
 21196  	defer tls.Free(4)
 21197  
 21198  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21199  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21200  	var c int32
 21201  
 21202  	var scriptMask int32 = 0
 21203  	var res int32
 21204  	var seenDigit int32 = 0
 21205  
 21206  	for nIn > 0 {
 21207  		c = utf8Read(tls, zIn, nIn, bp)
 21208  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21209  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21210  		if c < 0x02af {
 21211  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 21212  				scriptMask = scriptMask | SCRIPT_LATIN
 21213  			} else if c >= '0' && c <= '9' {
 21214  				seenDigit = 1
 21215  			}
 21216  		} else if c >= 0x0400 && c <= 0x04ff {
 21217  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 21218  		} else if c >= 0x0386 && c <= 0x03ce {
 21219  			scriptMask = scriptMask | SCRIPT_GREEK
 21220  		} else if c >= 0x0590 && c <= 0x05ff {
 21221  			scriptMask = scriptMask | SCRIPT_HEBREW
 21222  		} else if c >= 0x0600 && c <= 0x06ff {
 21223  			scriptMask = scriptMask | SCRIPT_ARABIC
 21224  		}
 21225  	}
 21226  	if scriptMask == 0 && seenDigit != 0 {
 21227  		scriptMask = SCRIPT_LATIN
 21228  	}
 21229  	switch scriptMask {
 21230  	case 0:
 21231  		res = 999
 21232  		break
 21233  	case SCRIPT_LATIN:
 21234  		res = 215
 21235  		break
 21236  	case SCRIPT_CYRILLIC:
 21237  		res = 220
 21238  		break
 21239  	case SCRIPT_GREEK:
 21240  		res = 200
 21241  		break
 21242  	case SCRIPT_HEBREW:
 21243  		res = 125
 21244  		break
 21245  	case SCRIPT_ARABIC:
 21246  		res = 160
 21247  		break
 21248  	default:
 21249  		res = 998
 21250  		break
 21251  	}
 21252  	sqlite3.Xsqlite3_result_int(tls, context, res)
 21253  }
 21254  
 21255  type spellfix1_vtab1 = struct {
 21256  	Fbase       sqlite3_vtab
 21257  	Fdb         uintptr
 21258  	FzDbName    uintptr
 21259  	FzTableName uintptr
 21260  	FzCostTable uintptr
 21261  	FpConfig3   uintptr
 21262  }
 21263  
 21264  type spellfix1_vtab = spellfix1_vtab1
 21265  type spellfix1_cursor1 = struct {
 21266  	Fbase      sqlite3_vtab_cursor
 21267  	FpVTab     uintptr
 21268  	FzPattern  uintptr
 21269  	FidxNum    int32
 21270  	FnRow      int32
 21271  	FnAlloc    int32
 21272  	FiRow      int32
 21273  	FiLang     int32
 21274  	FiTop      int32
 21275  	FiScope    int32
 21276  	FnSearch   int32
 21277  	FpFullScan uintptr
 21278  	Fa         uintptr
 21279  }
 21280  
 21281  type spellfix1_cursor = spellfix1_cursor1
 21282  
 21283  type spellfix1_row = struct {
 21284  	FiRowid    sqlite3_int64
 21285  	FzWord     uintptr
 21286  	FiRank     int32
 21287  	FiDistance int32
 21288  	FiScore    int32
 21289  	FiMatchlen int32
 21290  	FzHash     [32]int8
 21291  }
 21292  
 21293  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 21294  	var ap va_list
 21295  	_ = ap
 21296  	var zSql uintptr
 21297  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 21298  		return
 21299  	}
 21300  	ap = va
 21301  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 21302  	_ = ap
 21303  	if zSql == uintptr(0) {
 21304  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 21305  	} else {
 21306  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 21307  		sqlite3.Xsqlite3_free(tls, zSql)
 21308  	}
 21309  }
 21310  
 21311  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 21312  	bp := tls.Alloc(20)
 21313  	defer tls.Free(20)
 21314  
 21315  	var p uintptr = pVTab
 21316  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 21317  	if isDestroy != 0 {
 21318  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21319  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 21320  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21321  	}
 21322  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 21323  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21324  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21325  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21326  		sqlite3.Xsqlite3_free(tls, p)
 21327  	}
 21328  	return *(*int32)(unsafe.Pointer(bp + 16))
 21329  }
 21330  
 21331  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 21332  	return spellfix1Uninit(tls, 0, pVTab)
 21333  }
 21334  
 21335  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 21336  	return spellfix1Uninit(tls, 1, pVTab)
 21337  }
 21338  
 21339  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 21340  	bp := tls.Alloc(8)
 21341  	defer tls.Free(8)
 21342  
 21343  	var zOut uintptr
 21344  	var i int32
 21345  	var j int32
 21346  	var c int8
 21347  	for __sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zIn)))), uint64(X_CTYPE_S)) != 0 {
 21348  		zIn++
 21349  	}
 21350  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 21351  	if zOut == uintptr(0) {
 21352  		return uintptr(0)
 21353  	}
 21354  	i = int32(libc.Xstrlen(tls, zOut))
 21355  	*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
 21356  	c = *(*int8)(unsafe.Pointer(zOut))
 21357  	if int32(c) == '\'' || int32(c) == '"' {
 21358  		i = 1
 21359  		j = 0
 21360  		for ; 1 != 0; i++ {
 21361  			*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zOut + uintptr(i)))
 21362  			if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 21363  				if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 21364  					i++
 21365  				} else {
 21366  					*(*int8)(unsafe.Pointer(zOut + uintptr(j-1))) = int8(0)
 21367  					break
 21368  				}
 21369  			}
 21370  		}
 21371  	}
 21372  	return zOut
 21373  }
 21374  
 21375  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21376  	bp := tls.Alloc(60)
 21377  	defer tls.Free(60)
 21378  
 21379  	var pNew uintptr = uintptr(0)
 21380  
 21381  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 21382  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 21383  	var nDbName int32
 21384  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 21385  	var i int32
 21386  
 21387  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 21388  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 21389  	if pNew == uintptr(0) {
 21390  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21391  	} else {
 21392  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})))
 21393  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 21394  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1))
 21395  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 21396  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 21397  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 21398  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21399  		} else {
 21400  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 21401  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 21402  				ts+7226)
 21403  		}
 21404  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 21405  			spellfix1DbExec(tls, bp+56, db,
 21406  				ts+7380,
 21407  				libc.VaList(bp+8, zDbName, zTableName))
 21408  			spellfix1DbExec(tls, bp+56, db,
 21409  				ts+7514,
 21410  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 21411  		}
 21412  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 21413  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21414  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 21415  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21416  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21417  				}
 21418  				continue
 21419  			}
 21420  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 21421  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 21422  		}
 21423  	}
 21424  
 21425  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 21426  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 21427  		spellfix1Uninit(tls, 0, pNew)
 21428  	} else {
 21429  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 21430  	}
 21431  	return *(*int32)(unsafe.Pointer(bp + 56))
 21432  }
 21433  
 21434  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21435  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 21436  }
 21437  
 21438  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21439  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21440  }
 21441  
 21442  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21443  	var i int32
 21444  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21445  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 21446  	}
 21447  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21448  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21449  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21450  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21451  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21452  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21453  	}
 21454  }
 21455  
 21456  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21457  	var aNew uintptr
 21458  
 21459  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 21460  	if aNew == uintptr(0) && N > 0 {
 21461  		spellfix1ResetCursor(tls, pCur)
 21462  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 21463  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 21464  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 21465  	} else {
 21466  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 21467  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 21468  	}
 21469  }
 21470  
 21471  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 21472  	var pCur uintptr = cur
 21473  	spellfix1ResetCursor(tls, pCur)
 21474  	spellfix1ResizeCursor(tls, pCur, 0)
 21475  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21476  	sqlite3.Xsqlite3_free(tls, pCur)
 21477  	return SQLITE_OK
 21478  }
 21479  
 21480  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 21481  	var iPlan int32 = 0
 21482  	var iLangTerm int32 = -1
 21483  	var iTopTerm int32 = -1
 21484  	var iScopeTerm int32 = -1
 21485  	var iDistTerm int32 = -1
 21486  	var iRowidTerm int32 = -1
 21487  	var i int32
 21488  	var pConstraint uintptr
 21489  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 21490  	i = 0
 21491  __1:
 21492  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 21493  		goto __3
 21494  	}
 21495  	{
 21496  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 21497  			goto __2
 21498  		}
 21499  
 21500  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 21501  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 21502  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 21503  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 21504  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 21505  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 21506  		}
 21507  
 21508  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 21509  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 21510  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21511  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 21512  			iLangTerm = i
 21513  		}
 21514  
 21515  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 21516  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 21517  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21518  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 21519  			iTopTerm = i
 21520  		}
 21521  
 21522  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 21523  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 21524  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21525  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 21526  			iScopeTerm = i
 21527  		}
 21528  
 21529  		if iPlan&(0x10|0x20) == 0 &&
 21530  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 21531  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 21532  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 21533  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 21534  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 21535  			} else {
 21536  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 21537  			}
 21538  			iDistTerm = i
 21539  		}
 21540  
 21541  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 21542  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 21543  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21544  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 21545  			iRowidTerm = i
 21546  		}
 21547  
 21548  	}
 21549  	goto __2
 21550  __2:
 21551  	i++
 21552  	pConstraint += 12
 21553  	goto __1
 21554  	goto __3
 21555  __3:
 21556  	;
 21557  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 21558  		var idx int32 = 2
 21559  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 21560  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 21561  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 21562  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 21563  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 21564  		}
 21565  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 21566  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21567  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 21568  		}
 21569  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 21570  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21571  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 21572  		}
 21573  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 21574  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21575  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 21576  		}
 21577  		if iPlan&(0x10|0x20) != 0 {
 21578  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21579  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 21580  		}
 21581  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 21582  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 21583  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 21584  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 21585  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 21586  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 21587  	} else {
 21588  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 21589  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 21590  	}
 21591  	return SQLITE_OK
 21592  }
 21593  
 21594  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 21595  	var p uintptr = pVTab
 21596  	var pCur uintptr
 21597  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21598  	if pCur == uintptr(0) {
 21599  		return SQLITE_NOMEM
 21600  	}
 21601  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21602  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 21603  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 21604  	return SQLITE_OK
 21605  }
 21606  
 21607  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 21608  	var iLog2 int32
 21609  	iLog2 = 0
 21610  __1:
 21611  	if !(iRank > 0) {
 21612  		goto __3
 21613  	}
 21614  	{
 21615  	}
 21616  	goto __2
 21617  __2:
 21618  	iLog2++
 21619  	iRank >>= 1
 21620  	goto __1
 21621  	goto __3
 21622  __3:
 21623  	;
 21624  	return iDistance + 32 - iLog2
 21625  }
 21626  
 21627  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 21628  	var a uintptr = A
 21629  	var b uintptr = B
 21630  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 21631  }
 21632  
 21633  type MatchQuery1 = struct {
 21634  	FpCur        uintptr
 21635  	FpStmt       uintptr
 21636  	FzHash       [32]int8
 21637  	FzPattern    uintptr
 21638  	FnPattern    int32
 21639  	F__ccgo_pad1 [4]byte
 21640  	FpMatchStr3  uintptr
 21641  	FpConfig3    uintptr
 21642  	FpLang       uintptr
 21643  	FiLang       int32
 21644  	FiScope      int32
 21645  	FiMaxDist    int32
 21646  	Frc          int32
 21647  	FnRun        int32
 21648  	FazPrior     [1][32]int8
 21649  	F__ccgo_pad2 [4]byte
 21650  }
 21651  
 21652  type MatchQuery = MatchQuery1
 21653  
 21654  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 21655  	bp := tls.Alloc(76)
 21656  	defer tls.Free(76)
 21657  
 21658  	var zK1 uintptr
 21659  	var zWord uintptr
 21660  	var iDist int32
 21661  	var iRank int32
 21662  	var iScore int32
 21663  	var iWorst int32 = 0
 21664  	var idx int32
 21665  	var idxWorst int32 = -1
 21666  	var i int32
 21667  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 21668  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 21669  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 21670  
 21671  	var zClass uintptr
 21672  	var nClass int32
 21673  	var rc int32
 21674  
 21675  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 21676  		return
 21677  	}
 21678  	zClass = phoneticHash(tls, zQuery, nQuery)
 21679  	if zClass == uintptr(0) {
 21680  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21681  		return
 21682  	}
 21683  	nClass = int32(libc.Xstrlen(tls, zClass))
 21684  	if nClass > SPELLFIX_MX_HASH-2 {
 21685  		nClass = SPELLFIX_MX_HASH - 2
 21686  		*(*int8)(unsafe.Pointer(zClass + uintptr(nClass))) = int8(0)
 21687  	}
 21688  	if nClass <= iScope {
 21689  		if nClass > 2 {
 21690  			iScope = nClass - 1
 21691  		} else {
 21692  			iScope = nClass
 21693  		}
 21694  	}
 21695  	libc.Xmemcpy(tls, bp+8, zClass, uint64(iScope))
 21696  	sqlite3.Xsqlite3_free(tls, zClass)
 21697  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = int8(0)
 21698  	libc.Xmemcpy(tls, bp+40, bp+8, uint64(iScope))
 21699  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = int8('Z')
 21700  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = int8(0)
 21701  
 21702  	libc.Xmemcpy(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1))
 21703  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 21704  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 21705  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21706  		return
 21707  	}
 21708  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 21709  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 21710  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 21711  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 21712  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 21713  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 21714  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 21715  		} else {
 21716  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 21717  			if zK1 == uintptr(0) {
 21718  				continue
 21719  			}
 21720  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 21721  		}
 21722  		if iDist < 0 {
 21723  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21724  			break
 21725  		}
 21726  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 21727  
 21728  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 21729  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 21730  				continue
 21731  			}
 21732  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 21733  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 21734  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 21735  					break
 21736  				}
 21737  			}
 21738  		}
 21739  
 21740  		iScore = spellfix1Score(tls, iDist, iRank)
 21741  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21742  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21743  		} else if iScore < iWorst {
 21744  			idx = idxWorst
 21745  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 21746  		} else {
 21747  			continue
 21748  		}
 21749  
 21750  		(*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)))
 21751  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 21752  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21753  			break
 21754  		}
 21755  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 21756  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 21757  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 21758  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 21759  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 21760  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1))
 21761  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21762  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 21763  		}
 21764  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21765  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 21766  			idxWorst = 0
 21767  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21768  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 21769  				if iWorst < iScore {
 21770  					iWorst = iScore
 21771  					idxWorst = i
 21772  				}
 21773  			}
 21774  		}
 21775  	}
 21776  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 21777  	if rc != 0 {
 21778  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 21779  	}
 21780  }
 21781  
 21782  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21783  	bp := tls.Alloc(176)
 21784  	defer tls.Free(176)
 21785  
 21786  	var idxNum int32
 21787  	var zMatchThis uintptr
 21788  	var pMatchStr3 uintptr
 21789  	var zPattern uintptr
 21790  	var nPattern int32
 21791  	var iLimit int32
 21792  	var iScope int32
 21793  	var iLang int32
 21794  	var zSql uintptr
 21795  
 21796  	var rc int32
 21797  	var idx int32
 21798  	var p uintptr
 21799  
 21800  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21801  	pMatchStr3 = uintptr(0)
 21802  	iLimit = 20
 21803  	iScope = 3
 21804  	iLang = 0
 21805  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21806  	idx = 1
 21807  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21808  
 21809  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21810  		goto __1
 21811  	}
 21812  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 21813  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21814  		goto __2
 21815  	}
 21816  	return SQLITE_NOMEM
 21817  __2:
 21818  	;
 21819  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 21820  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21821  	if !(rc != 0) {
 21822  		goto __3
 21823  	}
 21824  	return rc
 21825  __3:
 21826  	;
 21827  __1:
 21828  	;
 21829  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})))
 21830  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 21831  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 21832  
 21833  	if !(idxNum&2 != 0) {
 21834  		goto __4
 21835  	}
 21836  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21837  __4:
 21838  	;
 21839  	if !(idxNum&4 != 0) {
 21840  		goto __5
 21841  	}
 21842  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21843  	if !(iLimit < 1) {
 21844  		goto __6
 21845  	}
 21846  	iLimit = 1
 21847  __6:
 21848  	;
 21849  __5:
 21850  	;
 21851  	if !(idxNum&8 != 0) {
 21852  		goto __7
 21853  	}
 21854  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21855  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 21856  		goto __8
 21857  	}
 21858  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 21859  __8:
 21860  	;
 21861  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 21862  		goto __9
 21863  	}
 21864  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 21865  __9:
 21866  	;
 21867  __7:
 21868  	;
 21869  	if !(idxNum&(16|32) != 0) {
 21870  		goto __10
 21871  	}
 21872  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21873  	if !(idxNum&16 != 0) {
 21874  		goto __11
 21875  	}
 21876  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 21877  __11:
 21878  	;
 21879  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 21880  		goto __12
 21881  	}
 21882  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 21883  __12:
 21884  	;
 21885  __10:
 21886  	;
 21887  	spellfix1ResetCursor(tls, pCur)
 21888  	spellfix1ResizeCursor(tls, pCur, iLimit)
 21889  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21890  	if !(zMatchThis == uintptr(0)) {
 21891  		goto __13
 21892  	}
 21893  	return SQLITE_OK
 21894  __13:
 21895  	;
 21896  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 21897  		goto __14
 21898  	}
 21899  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 21900  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 21901  	if !(pMatchStr3 == uintptr(0)) {
 21902  		goto __16
 21903  	}
 21904  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21905  	goto filter_exit
 21906  __16:
 21907  	;
 21908  	goto __15
 21909  __14:
 21910  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 21911  __15:
 21912  	;
 21913  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21914  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21915  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 21916  	if !(zPattern == uintptr(0)) {
 21917  		goto __17
 21918  	}
 21919  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21920  	goto filter_exit
 21921  __17:
 21922  	;
 21923  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 21924  	if !(int32(*(*int8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 21925  		goto __18
 21926  	}
 21927  	nPattern--
 21928  __18:
 21929  	;
 21930  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21931  		ts+7650,
 21932  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 21933  	if !(zSql == uintptr(0)) {
 21934  		goto __19
 21935  	}
 21936  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21937  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21938  	goto filter_exit
 21939  __19:
 21940  	;
 21941  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 21942  	sqlite3.Xsqlite3_free(tls, zSql)
 21943  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 21944  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 21945  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 21946  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 21947  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 21948  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 21949  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 21950  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 21951  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 21952  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 21953  		goto __20
 21954  	}
 21955  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 21956  __20:
 21957  	;
 21958  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 21959  		goto __21
 21960  	}
 21961  	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 {
 21962  		f func(*libc.TLS, uintptr, uintptr) int32
 21963  	}{spellfix1RowCompare})))
 21964  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 21965  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 21966  	goto __22
 21967  __21:
 21968  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21969  __22:
 21970  	;
 21971  filter_exit:
 21972  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 21973  	editDist3FromStringDelete(tls, pMatchStr3)
 21974  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 21975  }
 21976  
 21977  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21978  	bp := tls.Alloc(24)
 21979  	defer tls.Free(24)
 21980  
 21981  	var rc int32 = SQLITE_OK
 21982  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21983  	var zSql uintptr
 21984  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21985  	spellfix1ResetCursor(tls, pCur)
 21986  
 21987  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21988  		ts+7750,
 21989  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 21990  			func() uintptr {
 21991  				if idxNum&64 != 0 {
 21992  					return ts + 7809
 21993  				}
 21994  				return ts + 584
 21995  			}()))
 21996  	if zSql == uintptr(0) {
 21997  		return SQLITE_NOMEM
 21998  	}
 21999  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 22000  	sqlite3.Xsqlite3_free(tls, zSql)
 22001  	if rc == SQLITE_OK && idxNum&64 != 0 {
 22002  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 22003  	}
 22004  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 22005  	if rc == SQLITE_OK {
 22006  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22007  		if rc == SQLITE_ROW {
 22008  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 22009  			rc = SQLITE_OK
 22010  		}
 22011  		if rc == SQLITE_DONE {
 22012  			rc = SQLITE_OK
 22013  		}
 22014  	} else {
 22015  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 22016  	}
 22017  	return rc
 22018  }
 22019  
 22020  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 22021  	var pCur uintptr = cur
 22022  	var rc int32
 22023  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 22024  	if idxNum&1 != 0 {
 22025  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 22026  	} else {
 22027  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 22028  	}
 22029  	return rc
 22030  }
 22031  
 22032  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 22033  	var pCur uintptr = cur
 22034  	var rc int32 = SQLITE_OK
 22035  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 22036  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22037  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22038  			if rc != SQLITE_ROW {
 22039  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 22040  			}
 22041  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 22042  				rc = SQLITE_OK
 22043  			}
 22044  		} else {
 22045  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 22046  		}
 22047  	}
 22048  	return rc
 22049  }
 22050  
 22051  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 22052  	var pCur uintptr = cur
 22053  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 22054  }
 22055  
 22056  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 22057  	bp := tls.Alloc(4)
 22058  	defer tls.Free(4)
 22059  
 22060  	var pCur uintptr = cur
 22061  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22062  		if i <= SPELLFIX_COL_LANGID {
 22063  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 22064  		} else {
 22065  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22066  		}
 22067  		return SQLITE_OK
 22068  	}
 22069  	switch i {
 22070  	case SPELLFIX_COL_WORD:
 22071  		{
 22072  			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))
 22073  			break
 22074  
 22075  		}
 22076  	case SPELLFIX_COL_RANK:
 22077  		{
 22078  			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)
 22079  			break
 22080  
 22081  		}
 22082  	case SPELLFIX_COL_DISTANCE:
 22083  		{
 22084  			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)
 22085  			break
 22086  
 22087  		}
 22088  	case SPELLFIX_COL_LANGID:
 22089  		{
 22090  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 22091  			break
 22092  
 22093  		}
 22094  	case SPELLFIX_COL_SCORE:
 22095  		{
 22096  			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)
 22097  			break
 22098  
 22099  		}
 22100  	case SPELLFIX_COL_MATCHLEN:
 22101  		{
 22102  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 22103  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 22104  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 22105  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 22106  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 22107  
 22108  				if nPattern > 0 && int32(*(*int8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 22109  					var zTranslit uintptr
 22110  					var res int32
 22111  					zTranslit = transliterate(tls, zWord, nWord)
 22112  					if !(zTranslit != 0) {
 22113  						return SQLITE_NOMEM
 22114  					}
 22115  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 22116  					sqlite3.Xsqlite3_free(tls, zTranslit)
 22117  					if res < 0 {
 22118  						return SQLITE_NOMEM
 22119  					}
 22120  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 22121  				} else {
 22122  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 22123  				}
 22124  			}
 22125  
 22126  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 22127  			break
 22128  
 22129  		}
 22130  	case SPELLFIX_COL_PHONEHASH:
 22131  		{
 22132  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 22133  			break
 22134  
 22135  		}
 22136  	case SPELLFIX_COL_TOP:
 22137  		{
 22138  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 22139  			break
 22140  
 22141  		}
 22142  	case SPELLFIX_COL_SCOPE:
 22143  		{
 22144  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 22145  			break
 22146  
 22147  		}
 22148  	case SPELLFIX_COL_SRCHCNT:
 22149  		{
 22150  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 22151  			break
 22152  
 22153  		}
 22154  	default:
 22155  		{
 22156  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22157  			break
 22158  
 22159  		}
 22160  	}
 22161  	return SQLITE_OK
 22162  }
 22163  
 22164  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 22165  	var pCur uintptr = cur
 22166  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22167  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 22168  	} else {
 22169  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 22170  	}
 22171  	return SQLITE_OK
 22172  }
 22173  
 22174  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 22175  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 22176  
 22177  	return azConflict[eConflict-1]
 22178  }
 22179  
 22180  var azConflict = [5]uintptr{
 22181  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 22182  }
 22183  
 22184  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 22185  	bp := tls.Alloc(284)
 22186  	defer tls.Free(284)
 22187  
 22188  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 22189  	var rowid sqlite3_int64
 22190  	var newRowid sqlite3_int64
 22191  	var p uintptr = pVTab
 22192  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22193  
 22194  	if argc == 1 {
 22195  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22196  		spellfix1DbExec(tls, bp+280, db,
 22197  			ts+7854,
 22198  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 22199  	} else {
 22200  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22201  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 22202  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 22203  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 22204  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22205  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 22206  		var zK1 uintptr
 22207  		var zK2 uintptr
 22208  		var i int32
 22209  		var c int8
 22210  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 22211  
 22212  		if zWord == uintptr(0) {
 22213  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 22214  			if zCmd == uintptr(0) {
 22215  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 22216  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 22217  				return SQLITE_CONSTRAINT | int32(5)<<8
 22218  			}
 22219  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 22220  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22221  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22222  				return SQLITE_OK
 22223  			}
 22224  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 22225  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22226  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22227  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22228  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 22229  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 22230  					return SQLITE_NOMEM
 22231  				}
 22232  				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 {
 22233  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22234  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 22235  				}
 22236  				return SQLITE_OK
 22237  			}
 22238  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 22239  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 22240  			return SQLITE_ERROR
 22241  		}
 22242  		if iRank < 1 {
 22243  			iRank = 1
 22244  		}
 22245  		if zSoundslike != 0 {
 22246  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 22247  		} else {
 22248  			zK1 = transliterate(tls, zWord, nWord)
 22249  		}
 22250  		if zK1 == uintptr(0) {
 22251  			return SQLITE_NOMEM
 22252  		}
 22253  		for i = 0; int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 22254  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 22255  				*(*int8)(unsafe.Pointer(zK1 + uintptr(i))) += int8('a' - 'A')
 22256  			}
 22257  		}
 22258  		zK2 = phoneticHash(tls, zK1, i)
 22259  		if zK2 == uintptr(0) {
 22260  			sqlite3.Xsqlite3_free(tls, zK1)
 22261  			return SQLITE_NOMEM
 22262  		}
 22263  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 22264  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 22265  				spellfix1DbExec(tls, bp+280, db,
 22266  					ts+7979,
 22267  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22268  						iRank, iLang, zWord, zK1, zWord, zK2))
 22269  			} else {
 22270  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 22271  				spellfix1DbExec(tls, bp+280, db,
 22272  					ts+8065,
 22273  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22274  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 22275  			}
 22276  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 22277  		} else {
 22278  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22279  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 22280  			spellfix1DbExec(tls, bp+280, db,
 22281  				ts+8165,
 22282  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 22283  					zWord, zK1, zWord, zK2, rowid))
 22284  		}
 22285  		sqlite3.Xsqlite3_free(tls, zK1)
 22286  		sqlite3.Xsqlite3_free(tls, zK2)
 22287  	}
 22288  	return *(*int32)(unsafe.Pointer(bp + 280))
 22289  }
 22290  
 22291  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 22292  	bp := tls.Alloc(36)
 22293  	defer tls.Free(36)
 22294  
 22295  	var p uintptr = pVTab
 22296  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22297  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 22298  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 22299  	if zNewName == uintptr(0) {
 22300  		return SQLITE_NOMEM
 22301  	}
 22302  	spellfix1DbExec(tls, bp+32, db,
 22303  		ts+8274,
 22304  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 22305  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 22306  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 22307  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 22308  	} else {
 22309  		sqlite3.Xsqlite3_free(tls, zNewName)
 22310  	}
 22311  	return *(*int32)(unsafe.Pointer(bp + 32))
 22312  }
 22313  
 22314  var spellfix1Module = sqlite3_module{
 22315  	FxCreate:     0,
 22316  	FxConnect:    0,
 22317  	FxBestIndex:  0,
 22318  	FxDisconnect: 0,
 22319  	FxDestroy:    0,
 22320  	FxOpen:       0,
 22321  	FxClose:      0,
 22322  	FxFilter:     0,
 22323  	FxNext:       0,
 22324  	FxEof:        0,
 22325  	FxColumn:     0,
 22326  	FxRowid:      0,
 22327  	FxUpdate:     0,
 22328  	FxRename:     0,
 22329  }
 22330  
 22331  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 22332  	var rc int32 = SQLITE_OK
 22333  	var i int32
 22334  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 22335  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22336  		*(*uintptr)(unsafe.Pointer(&struct {
 22337  			f func(*libc.TLS, uintptr, int32, uintptr)
 22338  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 22339  	if rc == SQLITE_OK {
 22340  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 22341  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22342  			*(*uintptr)(unsafe.Pointer(&struct {
 22343  				f func(*libc.TLS, uintptr, int32, uintptr)
 22344  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 22345  	}
 22346  	if rc == SQLITE_OK {
 22347  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 22348  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22349  			*(*uintptr)(unsafe.Pointer(&struct {
 22350  				f func(*libc.TLS, uintptr, int32, uintptr)
 22351  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 22352  	}
 22353  	if rc == SQLITE_OK {
 22354  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 22355  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22356  			*(*uintptr)(unsafe.Pointer(&struct {
 22357  				f func(*libc.TLS, uintptr, int32, uintptr)
 22358  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 22359  	}
 22360  	if rc == SQLITE_OK {
 22361  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 22362  	}
 22363  	if rc == SQLITE_OK {
 22364  		rc = editDist3Install(tls, db)
 22365  	}
 22366  
 22367  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 22368  	}
 22369  
 22370  	return rc
 22371  }
 22372  
 22373  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22374  	_ = pApi
 22375  
 22376  	return spellfix1Register(tls, db)
 22377  	return SQLITE_OK
 22378  }
 22379  
 22380  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 22381  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 22382  }
 22383  
 22384  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 22385  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 22386  }
 22387  
 22388  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 22389  	var c int32 = 0
 22390  	var i int32
 22391  
 22392  	var pow63 uintptr = ts + 8412
 22393  	for i = 0; c == 0 && i < 18; i++ {
 22394  		c = (int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 22395  	}
 22396  	if c == 0 {
 22397  		c = int32(*(*int8)(unsafe.Pointer(zNum + 18))) - '8'
 22398  	}
 22399  	return c
 22400  }
 22401  
 22402  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 22403  	var u sqlite3_uint64 = uint64(0)
 22404  	var neg int32 = 0
 22405  	var i int32
 22406  	var c int32 = 0
 22407  	var nonNum int32 = 0
 22408  	var zStart uintptr
 22409  	var zEnd uintptr = zNum + uintptr(length)
 22410  
 22411  	for zNum < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(zNum)))) != 0 {
 22412  		zNum++
 22413  	}
 22414  	if zNum < zEnd {
 22415  		if int32(*(*int8)(unsafe.Pointer(zNum))) == '-' {
 22416  			neg = 1
 22417  			zNum++
 22418  		} else if int32(*(*int8)(unsafe.Pointer(zNum))) == '+' {
 22419  			zNum++
 22420  		}
 22421  	}
 22422  	zStart = zNum
 22423  	for zNum < zEnd && int32(*(*int8)(unsafe.Pointer(zNum))) == '0' {
 22424  		zNum++
 22425  	}
 22426  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 22427  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 22428  	}
 22429  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 22430  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 22431  	} else if neg != 0 {
 22432  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 22433  	} else {
 22434  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 22435  	}
 22436  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 22437  		return 1
 22438  	} else if i < 19 {
 22439  		return 0
 22440  	} else {
 22441  		c = totypeCompare2pow63(tls, zNum)
 22442  		if c < 0 {
 22443  			return 0
 22444  		} else if c > 0 {
 22445  			return 1
 22446  		} else {
 22447  			if neg != 0 {
 22448  				return 0
 22449  			}
 22450  			return 2
 22451  		}
 22452  	}
 22453  	return int32(0)
 22454  }
 22455  
 22456  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 22457  	var zEnd uintptr
 22458  
 22459  	var sign int32
 22460  	var s sqlite3_int64
 22461  	var d int32
 22462  	var esign int32
 22463  	var e int32
 22464  	var eValid int32
 22465  	var result float64
 22466  	var nDigits int32
 22467  	var nonNum int32
 22468  	var scale float64
 22469  	zEnd = z + uintptr(length)
 22470  	sign = 1
 22471  	s = int64(0)
 22472  	d = 0
 22473  	esign = 1
 22474  	e = 0
 22475  	eValid = 1
 22476  	nDigits = 0
 22477  	nonNum = 0
 22478  
 22479  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 22480  
 22481  __1:
 22482  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22483  		goto __2
 22484  	}
 22485  	z++
 22486  	goto __1
 22487  __2:
 22488  	;
 22489  	if !(z >= zEnd) {
 22490  		goto __3
 22491  	}
 22492  	return 0
 22493  __3:
 22494  	;
 22495  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22496  		goto __4
 22497  	}
 22498  	sign = -1
 22499  	z++
 22500  	goto __5
 22501  __4:
 22502  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22503  		goto __6
 22504  	}
 22505  	z++
 22506  __6:
 22507  	;
 22508  __5:
 22509  	;
 22510  __7:
 22511  	if !(z < zEnd && int32(*(*int8)(unsafe.Pointer(z))) == '0') {
 22512  		goto __8
 22513  	}
 22514  	z++
 22515  	nDigits++
 22516  	goto __7
 22517  __8:
 22518  	;
 22519  __9:
 22520  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22521  		goto __10
 22522  	}
 22523  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22524  	z++
 22525  	nDigits++
 22526  	goto __9
 22527  __10:
 22528  	;
 22529  __11:
 22530  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22531  		goto __12
 22532  	}
 22533  	z++
 22534  	nDigits++
 22535  	d++
 22536  	goto __11
 22537  __12:
 22538  	;
 22539  	if !(z >= zEnd) {
 22540  		goto __13
 22541  	}
 22542  	goto totype_atof_calc
 22543  __13:
 22544  	;
 22545  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '.') {
 22546  		goto __14
 22547  	}
 22548  	z++
 22549  
 22550  __15:
 22551  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22552  		goto __16
 22553  	}
 22554  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22555  	z++
 22556  	nDigits++
 22557  	d--
 22558  	goto __15
 22559  __16:
 22560  	;
 22561  __17:
 22562  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22563  		goto __18
 22564  	}
 22565  	z++
 22566  	nDigits++
 22567  	goto __17
 22568  __18:
 22569  	;
 22570  __14:
 22571  	;
 22572  	if !(z >= zEnd) {
 22573  		goto __19
 22574  	}
 22575  	goto totype_atof_calc
 22576  __19:
 22577  	;
 22578  	if !(int32(*(*int8)(unsafe.Pointer(z))) == 'e' || int32(*(*int8)(unsafe.Pointer(z))) == 'E') {
 22579  		goto __20
 22580  	}
 22581  	z++
 22582  	eValid = 0
 22583  	if !(z >= zEnd) {
 22584  		goto __21
 22585  	}
 22586  	goto totype_atof_calc
 22587  __21:
 22588  	;
 22589  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22590  		goto __22
 22591  	}
 22592  	esign = -1
 22593  	z++
 22594  	goto __23
 22595  __22:
 22596  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22597  		goto __24
 22598  	}
 22599  	z++
 22600  __24:
 22601  	;
 22602  __23:
 22603  	;
 22604  __25:
 22605  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22606  		goto __26
 22607  	}
 22608  	if e < 10000 {
 22609  		e = e*10 + (int32(*(*int8)(unsafe.Pointer(z))) - '0')
 22610  	} else {
 22611  		e = 10000
 22612  	}
 22613  	z++
 22614  	eValid = 1
 22615  	goto __25
 22616  __26:
 22617  	;
 22618  __20:
 22619  	;
 22620  	if !(nDigits != 0 && eValid != 0) {
 22621  		goto __27
 22622  	}
 22623  __28:
 22624  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22625  		goto __29
 22626  	}
 22627  	z++
 22628  	goto __28
 22629  __29:
 22630  	;
 22631  __27:
 22632  	;
 22633  totype_atof_calc:
 22634  	e = e*esign + d
 22635  	if !(e < 0) {
 22636  		goto __30
 22637  	}
 22638  	esign = -1
 22639  	e = e * -1
 22640  	goto __31
 22641  __30:
 22642  	esign = 1
 22643  __31:
 22644  	;
 22645  	if !!(s != 0) {
 22646  		goto __32
 22647  	}
 22648  
 22649  	if sign < 0 && nDigits != 0 {
 22650  		result = -libc.Float64FromFloat64(float64(0))
 22651  	} else {
 22652  		result = float64(0)
 22653  	}
 22654  	goto __33
 22655  __32:
 22656  	if !(esign > 0) {
 22657  		goto __34
 22658  	}
 22659  __36:
 22660  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 22661  		goto __37
 22662  	}
 22663  	e--
 22664  	s = s * int64(10)
 22665  	goto __36
 22666  __37:
 22667  	;
 22668  	goto __35
 22669  __34:
 22670  __38:
 22671  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 22672  		goto __39
 22673  	}
 22674  	e--
 22675  	s = s / int64(10)
 22676  	goto __38
 22677  __39:
 22678  	;
 22679  __35:
 22680  	;
 22681  	if sign < 0 {
 22682  		s = -s
 22683  	} else {
 22684  		s = s
 22685  	}
 22686  
 22687  	if !(e != 0) {
 22688  		goto __40
 22689  	}
 22690  	scale = 1.0
 22691  
 22692  	if !(e > 307 && e < 342) {
 22693  		goto __42
 22694  	}
 22695  __44:
 22696  	if !(e%308 != 0) {
 22697  		goto __45
 22698  	}
 22699  	scale = scale * 1.0e+1
 22700  	e = e - 1
 22701  	goto __44
 22702  __45:
 22703  	;
 22704  	if !(esign < 0) {
 22705  		goto __46
 22706  	}
 22707  	result = float64(s) / scale
 22708  	result = result / 1.0e+308
 22709  	goto __47
 22710  __46:
 22711  	result = float64(s) * scale
 22712  	result = result * 1.0e+308
 22713  __47:
 22714  	;
 22715  	goto __43
 22716  __42:
 22717  	if !(e >= 342) {
 22718  		goto __48
 22719  	}
 22720  	if !(esign < 0) {
 22721  		goto __50
 22722  	}
 22723  	result = 0.0 * float64(s)
 22724  	goto __51
 22725  __50:
 22726  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 22727  __51:
 22728  	;
 22729  	goto __49
 22730  __48:
 22731  __52:
 22732  	if !(e%22 != 0) {
 22733  		goto __53
 22734  	}
 22735  	scale = scale * 1.0e+1
 22736  	e = e - 1
 22737  	goto __52
 22738  __53:
 22739  	;
 22740  __54:
 22741  	if !(e > 0) {
 22742  		goto __55
 22743  	}
 22744  	scale = scale * 1.0e+22
 22745  	e = e - 22
 22746  	goto __54
 22747  __55:
 22748  	;
 22749  	if !(esign < 0) {
 22750  		goto __56
 22751  	}
 22752  	result = float64(s) / scale
 22753  	goto __57
 22754  __56:
 22755  	result = float64(s) * scale
 22756  __57:
 22757  	;
 22758  __49:
 22759  	;
 22760  __43:
 22761  	;
 22762  	goto __41
 22763  __40:
 22764  	result = float64(s)
 22765  __41:
 22766  	;
 22767  __33:
 22768  	;
 22769  	*(*float64)(unsafe.Pointer(pResult)) = result
 22770  
 22771  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 22772  }
 22773  
 22774  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22775  	bp := tls.Alloc(24)
 22776  	defer tls.Free(24)
 22777  
 22778  	_ = argc
 22779  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22780  	case SQLITE_FLOAT:
 22781  		{
 22782  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22783  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 22784  			if rVal == float64(iVal) {
 22785  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 22786  			}
 22787  			break
 22788  
 22789  		}
 22790  	case SQLITE_INTEGER:
 22791  		{
 22792  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22793  			break
 22794  
 22795  		}
 22796  	case SQLITE_BLOB:
 22797  		{
 22798  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22799  			if zBlob != 0 {
 22800  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22801  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 22802  					if 0 != 0 {
 22803  						var i int32
 22804  
 22805  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 22806  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 22807  						}
 22808  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22809  					} else {
 22810  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22811  					}
 22812  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 22813  				}
 22814  			}
 22815  			break
 22816  
 22817  		}
 22818  	case SQLITE_TEXT:
 22819  		{
 22820  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22821  			if zStr != 0 {
 22822  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22823  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 22824  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 22825  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 22826  					}
 22827  				}
 22828  			}
 22829  			break
 22830  
 22831  		}
 22832  	default:
 22833  		{
 22834  			break
 22835  
 22836  		}
 22837  	}
 22838  }
 22839  
 22840  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22841  	bp := tls.Alloc(24)
 22842  	defer tls.Free(24)
 22843  
 22844  	_ = argc
 22845  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22846  	case SQLITE_FLOAT:
 22847  		{
 22848  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22849  			break
 22850  
 22851  		}
 22852  	case SQLITE_INTEGER:
 22853  		{
 22854  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22855  			var rVal float64 = float64(iVal)
 22856  			if iVal == sqlite3_int64(rVal) {
 22857  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 22858  			}
 22859  			break
 22860  
 22861  		}
 22862  	case SQLITE_BLOB:
 22863  		{
 22864  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22865  			if zBlob != 0 {
 22866  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22867  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 22868  					if 1 != 0 {
 22869  						var i int32
 22870  
 22871  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 22872  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 22873  						}
 22874  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))))
 22875  					} else {
 22876  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))))
 22877  					}
 22878  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 22879  				}
 22880  			}
 22881  			break
 22882  
 22883  		}
 22884  	case SQLITE_TEXT:
 22885  		{
 22886  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22887  			if zStr != 0 {
 22888  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22889  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 22890  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 22891  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 22892  						return
 22893  					}
 22894  				}
 22895  			}
 22896  			break
 22897  
 22898  		}
 22899  	default:
 22900  		{
 22901  			break
 22902  
 22903  		}
 22904  	}
 22905  }
 22906  
 22907  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22908  	var rc int32 = SQLITE_OK
 22909  	_ = pApi
 22910  
 22911  	_ = pzErrMsg
 22912  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 22913  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22914  		*(*uintptr)(unsafe.Pointer(&struct {
 22915  			f func(*libc.TLS, uintptr, int32, uintptr)
 22916  		}{tointegerFunc})), uintptr(0), uintptr(0))
 22917  	if rc == SQLITE_OK {
 22918  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 22919  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22920  			*(*uintptr)(unsafe.Pointer(&struct {
 22921  				f func(*libc.TLS, uintptr, int32, uintptr)
 22922  			}{torealFunc})), uintptr(0), uintptr(0))
 22923  	}
 22924  	return rc
 22925  }
 22926  
 22927  type UnionCsr1 = struct {
 22928  	Fbase        sqlite3_vtab_cursor
 22929  	FpStmt       uintptr
 22930  	FiMaxRowid   sqlite3_int64
 22931  	FiTab        int32
 22932  	F__ccgo_pad1 [4]byte
 22933  }
 22934  
 22935  type UnionCsr = UnionCsr1
 22936  type UnionTab1 = struct {
 22937  	Fbase        sqlite3_vtab
 22938  	Fdb          uintptr
 22939  	FbSwarm      int32
 22940  	FiPK         int32
 22941  	FnSrc        int32
 22942  	F__ccgo_pad1 [4]byte
 22943  	FaSrc        uintptr
 22944  	FbHasContext int32
 22945  	F__ccgo_pad2 [4]byte
 22946  	FzSourceStr  uintptr
 22947  	FpNotFound   uintptr
 22948  	FpOpenClose  uintptr
 22949  	FpClosable   uintptr
 22950  	FnOpen       int32
 22951  	FnMaxOpen    int32
 22952  }
 22953  
 22954  type UnionTab = UnionTab1
 22955  type UnionSrc1 = struct {
 22956  	FzDb           uintptr
 22957  	FzTab          uintptr
 22958  	FiMin          sqlite3_int64
 22959  	FiMax          sqlite3_int64
 22960  	FzFile         uintptr
 22961  	FzContext      uintptr
 22962  	FnUser         int32
 22963  	F__ccgo_pad1   [4]byte
 22964  	Fdb            uintptr
 22965  	FpNextClosable uintptr
 22966  }
 22967  
 22968  type UnionSrc = UnionSrc1
 22969  
 22970  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 22971  	var pRet uintptr
 22972  
 22973  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22974  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 22975  		if pRet != 0 {
 22976  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 22977  		} else {
 22978  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 22979  		}
 22980  	} else {
 22981  		pRet = uintptr(0)
 22982  	}
 22983  	return pRet
 22984  }
 22985  
 22986  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 22987  	var zRet uintptr = uintptr(0)
 22988  	if zIn != 0 {
 22989  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 22990  		zRet = unionMalloc(tls, pRc, nByte)
 22991  		if zRet != 0 {
 22992  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 22993  		}
 22994  	}
 22995  	return zRet
 22996  }
 22997  
 22998  func unionDequote(tls *libc.TLS, z uintptr) {
 22999  	if z != 0 {
 23000  		var q int8 = *(*int8)(unsafe.Pointer(z))
 23001  
 23002  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 23003  			var iIn int32 = 1
 23004  			var iOut int32 = 0
 23005  			if int32(q) == '[' {
 23006  				q = int8(']')
 23007  			}
 23008  			for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 23009  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 23010  					if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 23011  						iIn++
 23012  						break
 23013  					} else {
 23014  						iIn = iIn + 2
 23015  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 23016  					}
 23017  				} else {
 23018  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 23019  				}
 23020  			}
 23021  			*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 23022  		}
 23023  	}
 23024  }
 23025  
 23026  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 23027  	bp := tls.Alloc(16)
 23028  	defer tls.Free(16)
 23029  
 23030  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 23031  
 23032  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23033  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 23034  		if rc != SQLITE_OK {
 23035  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23036  			*(*int32)(unsafe.Pointer(pRc)) = rc
 23037  		}
 23038  	}
 23039  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 23040  }
 23041  
 23042  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 23043  	var pRet uintptr = uintptr(0)
 23044  	var zSql uintptr
 23045  	var ap va_list
 23046  	_ = ap
 23047  	ap = va
 23048  
 23049  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 23050  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23051  		if zSql == uintptr(0) {
 23052  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23053  		} else {
 23054  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 23055  		}
 23056  	}
 23057  	sqlite3.Xsqlite3_free(tls, zSql)
 23058  
 23059  	_ = ap
 23060  	return pRet
 23061  }
 23062  
 23063  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 23064  	bp := tls.Alloc(8)
 23065  	defer tls.Free(8)
 23066  
 23067  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 23068  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 23069  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23070  		*(*int32)(unsafe.Pointer(pRc)) = rc
 23071  		if rc != 0 {
 23072  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23073  		}
 23074  	}
 23075  }
 23076  
 23077  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 23078  	bp := tls.Alloc(8)
 23079  	defer tls.Free(8)
 23080  
 23081  	var rc int32 = SQLITE_OK
 23082  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23083  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23084  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23085  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23086  		}
 23087  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 23088  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23089  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 23090  			if pzErr != 0 {
 23091  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23092  			}
 23093  		}
 23094  	}
 23095  	return rc
 23096  }
 23097  
 23098  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 23099  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 23100  		var p uintptr
 23101  		var pp uintptr
 23102  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23103  		}
 23104  		p = *(*uintptr)(unsafe.Pointer(pp))
 23105  
 23106  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 23107  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 23108  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 23109  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 23110  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 23111  	}
 23112  }
 23113  
 23114  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23115  	if pVtab != 0 {
 23116  		var pTab uintptr = pVtab
 23117  		var i int32
 23118  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23119  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23120  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 23121  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23122  			if bHaveSrcDb != 0 {
 23123  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23124  			}
 23125  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 23126  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 23127  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 23128  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 23129  		}
 23130  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23131  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23132  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 23133  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 23134  		sqlite3.Xsqlite3_free(tls, pTab)
 23135  	}
 23136  	return SQLITE_OK
 23137  }
 23138  
 23139  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23140  	bp := tls.Alloc(36)
 23141  	defer tls.Free(36)
 23142  
 23143  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 23144  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 23145  	var rc int32
 23146  
 23147  	sqlite3.Xsqlite3_table_column_metadata(tls,
 23148  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 23149  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 23150  	if rc == SQLITE_ERROR ||
 23151  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 23152  		rc = SQLITE_ERROR
 23153  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 23154  			libc.VaList(bp, func() uintptr {
 23155  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23156  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23157  				}
 23158  				return ts + 584
 23159  			}(),
 23160  				func() uintptr {
 23161  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23162  						return ts + 8506
 23163  					}
 23164  					return ts + 584
 23165  				}(),
 23166  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23167  	}
 23168  	return rc
 23169  }
 23170  
 23171  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 23172  	bp := tls.Alloc(4)
 23173  	defer tls.Free(4)
 23174  
 23175  	var zRet uintptr = uintptr(0)
 23176  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23177  		var db uintptr = func() uintptr {
 23178  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23179  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23180  			}
 23181  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23182  		}()
 23183  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 23184  		var pStmt uintptr = unionPrepare(tls, bp, db,
 23185  			ts+8508, pzErr)
 23186  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23187  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 23188  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 23189  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23190  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23191  				zRet = unionStrdup(tls, bp, z)
 23192  			}
 23193  			unionFinalize(tls, bp, pStmt, pzErr)
 23194  		}
 23195  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 23196  	}
 23197  
 23198  	return zRet
 23199  }
 23200  
 23201  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 23202  	bp := tls.Alloc(4)
 23203  	defer tls.Free(4)
 23204  
 23205  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23206  	var z0 uintptr = uintptr(0)
 23207  	var i int32
 23208  
 23209  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 23210  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23211  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 23212  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 23213  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23214  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23215  		}
 23216  		sqlite3.Xsqlite3_free(tls, z)
 23217  	}
 23218  	sqlite3.Xsqlite3_free(tls, z0)
 23219  
 23220  	return *(*int32)(unsafe.Pointer(bp))
 23221  }
 23222  
 23223  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23224  	bp := tls.Alloc(16)
 23225  	defer tls.Free(16)
 23226  
 23227  	var rc int32
 23228  
 23229  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 23230  	if rc != SQLITE_OK {
 23231  		return rc
 23232  	}
 23233  
 23234  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23235  	if rc == SQLITE_OK {
 23236  		return rc
 23237  	}
 23238  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23239  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23240  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23241  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23242  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23243  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23244  		}
 23245  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23246  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 23247  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23248  			return rc
 23249  		}
 23250  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 23251  	}
 23252  	if rc != SQLITE_OK {
 23253  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 23254  	}
 23255  	return rc
 23256  }
 23257  
 23258  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 23259  
 23260  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 23261  	bp := tls.Alloc(4)
 23262  	defer tls.Free(4)
 23263  
 23264  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23265  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 23266  
 23267  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 23268  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 23269  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 23270  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23271  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 23272  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23273  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 23274  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 23275  				} else {
 23276  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 23277  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23278  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23279  					}
 23280  					sqlite3.Xsqlite3_free(tls, z)
 23281  				}
 23282  			}
 23283  		}
 23284  
 23285  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23286  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23287  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23288  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 23289  		} else {
 23290  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23291  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23292  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23293  		}
 23294  	}
 23295  
 23296  	return *(*int32)(unsafe.Pointer(bp))
 23297  }
 23298  
 23299  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 23300  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23301  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 23302  
 23303  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23304  			var pp uintptr
 23305  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 23306  			}
 23307  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 23308  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 23309  		}
 23310  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 23311  	}
 23312  }
 23313  
 23314  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 23315  	var rc int32 = SQLITE_OK
 23316  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23317  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23318  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23319  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 23320  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 23321  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23322  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 23323  
 23324  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23325  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23326  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23327  			}
 23328  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 23329  		}
 23330  	}
 23331  	return rc
 23332  }
 23333  
 23334  func union_isspace(tls *libc.TLS, c int8) int32 {
 23335  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 23336  }
 23337  
 23338  func union_isidchar(tls *libc.TLS, c int8) int32 {
 23339  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 23340  }
 23341  
 23342  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 23343  	bp := tls.Alloc(68)
 23344  	defer tls.Free(68)
 23345  
 23346  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 23347  	var i int32
 23348  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 23349  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 23350  	}
 23351  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 23352  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 23353  		if zArg != 0 {
 23354  			var nOpt int32 = 0
 23355  			var zOpt uintptr
 23356  			var zVal uintptr
 23357  
 23358  			unionDequote(tls, zArg)
 23359  			zOpt = zArg
 23360  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zOpt))) != 0 {
 23361  				zOpt++
 23362  			}
 23363  			zVal = zOpt
 23364  			if int32(*(*int8)(unsafe.Pointer(zVal))) == ':' {
 23365  				zVal++
 23366  			}
 23367  			for union_isidchar(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23368  				zVal++
 23369  			}
 23370  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 23371  
 23372  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23373  				zVal++
 23374  			}
 23375  			if int32(*(*int8)(unsafe.Pointer(zVal))) == '=' {
 23376  				*(*int8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = int8(0)
 23377  				zVal++
 23378  				for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23379  					zVal++
 23380  				}
 23381  				zVal = unionStrdup(tls, bp+64, zVal)
 23382  				if zVal != 0 {
 23383  					unionDequote(tls, zVal)
 23384  					if int32(*(*int8)(unsafe.Pointer(zOpt))) == ':' {
 23385  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 23386  						if iParam == 0 {
 23387  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23388  								ts+8621, libc.VaList(bp, zOpt))
 23389  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23390  						} else {
 23391  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 23392  						}
 23393  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 23394  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 23395  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 23396  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 23397  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23398  						}
 23399  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 23400  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23401  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23402  								ts+8707, 0)
 23403  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23404  						} else {
 23405  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23406  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 23407  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23408  										return ts + 8762
 23409  									}
 23410  									return ts + 584
 23411  								}()))
 23412  						}
 23413  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 23414  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23415  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23416  								ts+8775, 0)
 23417  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23418  						} else {
 23419  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23420  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 23421  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23422  										return ts + 8762
 23423  									}
 23424  									return ts + 584
 23425  								}()))
 23426  						}
 23427  					} else {
 23428  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 23429  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23430  					}
 23431  					sqlite3.Xsqlite3_free(tls, zVal)
 23432  				}
 23433  			} else {
 23434  				if i == 0 && nArg == 1 {
 23435  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23436  						ts+8869, libc.VaList(bp+48, zArg))
 23437  				} else {
 23438  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 23439  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23440  				}
 23441  			}
 23442  			sqlite3.Xsqlite3_free(tls, zArg)
 23443  		}
 23444  	}
 23445  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23446  }
 23447  
 23448  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23449  	bp := tls.Alloc(44)
 23450  	defer tls.Free(44)
 23451  
 23452  	var pTab uintptr = uintptr(0)
 23453  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23454  	var bSwarm int32 = func() int32 {
 23455  		if pAux == uintptr(0) {
 23456  			return 0
 23457  		}
 23458  		return 1
 23459  	}()
 23460  	var zVtab uintptr = func() uintptr {
 23461  		if bSwarm != 0 {
 23462  			return ts + 8911
 23463  		}
 23464  		return ts + 8921
 23465  	}()
 23466  
 23467  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 23468  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 23469  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23470  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 23471  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 23472  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23473  	} else {
 23474  		var nAlloc int32 = 0
 23475  		var pStmt uintptr = uintptr(0)
 23476  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 23477  
 23478  		unionDequote(tls, zArg)
 23479  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 23480  			ts+9010, libc.VaList(bp+16, zArg))
 23481  
 23482  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 23483  		if pTab != 0 {
 23484  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 23485  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 23486  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 23487  		}
 23488  
 23489  		if bSwarm != 0 {
 23490  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 23491  		}
 23492  
 23493  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23494  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23495  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 23496  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 23497  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 23498  			var pSrc uintptr
 23499  
 23500  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23501  				var nNew int32
 23502  				if nAlloc != 0 {
 23503  					nNew = nAlloc * 2
 23504  				} else {
 23505  					nNew = 8
 23506  				}
 23507  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 23508  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 23509  				if aNew == uintptr(0) {
 23510  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 23511  					break
 23512  				} else {
 23513  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})))
 23514  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 23515  					nAlloc = nNew
 23516  				}
 23517  			}
 23518  
 23519  			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 {
 23520  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 23521  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23522  			}
 23523  
 23524  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23525  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 23526  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 23527  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 23528  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 23529  				if bSwarm != 0 {
 23530  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 23531  				} else {
 23532  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 23533  				}
 23534  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23535  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 23536  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 23537  				}
 23538  			}
 23539  		}
 23540  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23541  		pStmt = uintptr(0)
 23542  
 23543  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 23544  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 23545  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23546  		}
 23547  
 23548  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23549  			if bSwarm != 0 {
 23550  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 23551  			} else {
 23552  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 23553  			}
 23554  		}
 23555  
 23556  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23557  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 23558  			var tdb uintptr = func() uintptr {
 23559  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23560  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23561  				}
 23562  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23563  			}()
 23564  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 23565  				ts+9095,
 23566  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 23567  		}
 23568  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23569  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23570  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 23571  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 23572  		}
 23573  
 23574  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23575  	}
 23576  
 23577  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 23578  		unionDisconnect(tls, pTab)
 23579  		pTab = uintptr(0)
 23580  	}
 23581  
 23582  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 23583  	return *(*int32)(unsafe.Pointer(bp + 40))
 23584  }
 23585  
 23586  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23587  	bp := tls.Alloc(4)
 23588  	defer tls.Free(4)
 23589  
 23590  	var pCsr uintptr
 23591  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23592  	_ = p
 23593  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 23594  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 23595  	return *(*int32)(unsafe.Pointer(bp))
 23596  }
 23597  
 23598  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 23599  	var pCsr uintptr = cur
 23600  	unionFinalizeCsrStmt(tls, pCsr)
 23601  	sqlite3.Xsqlite3_free(tls, pCsr)
 23602  	return SQLITE_OK
 23603  }
 23604  
 23605  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 23606  	bp := tls.Alloc(28)
 23607  	defer tls.Free(28)
 23608  
 23609  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 23610  
 23611  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 23612  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23613  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 23614  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23615  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 23616  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23617  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23618  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23619  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 23620  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 23621  						ts+9273,
 23622  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 23623  							func() uintptr {
 23624  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 23625  									return ts + 9305
 23626  								}
 23627  								return ts + 9322
 23628  							}(),
 23629  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 23630  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 23631  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23632  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 23633  					}
 23634  				}
 23635  			}
 23636  		}
 23637  	}
 23638  
 23639  	return *(*int32)(unsafe.Pointer(bp + 24))
 23640  }
 23641  
 23642  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 23643  	var rc int32
 23644  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 23645  		rc = doUnionNext(tls, cur)
 23646  	}
 23647  	return rc
 23648  }
 23649  
 23650  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23651  	var pCsr uintptr = cur
 23652  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 23653  	return SQLITE_OK
 23654  }
 23655  
 23656  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23657  	var pCsr uintptr = cur
 23658  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 23659  	return SQLITE_OK
 23660  }
 23661  
 23662  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 23663  	var pCsr uintptr = cur
 23664  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 23665  }
 23666  
 23667  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23668  	bp := tls.Alloc(108)
 23669  	defer tls.Free(108)
 23670  
 23671  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 23672  	var pCsr uintptr = pVtabCursor
 23673  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 23674  	var i int32
 23675  	var zSql uintptr = uintptr(0)
 23676  	var bZero int32 = 0
 23677  
 23678  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 23679  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 23680  
 23681  	_ = idxStr
 23682  
 23683  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 23684  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23685  	} else {
 23686  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 23687  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23688  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 23689  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 23690  					bZero = 1
 23691  				} else {
 23692  					iMax--
 23693  				}
 23694  			}
 23695  		}
 23696  
 23697  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 23698  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 23699  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 23700  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 23701  					bZero = 1
 23702  				} else {
 23703  					iMin++
 23704  				}
 23705  			}
 23706  		}
 23707  	}
 23708  
 23709  	unionFinalizeCsrStmt(tls, pCsr)
 23710  	if bZero != 0 {
 23711  		return SQLITE_OK
 23712  	}
 23713  
 23714  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23715  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23716  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23717  			continue
 23718  		}
 23719  
 23720  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 23721  			if zSql != 0 {
 23722  				return ts + 9360
 23723  			}
 23724  			return ts + 584
 23725  		}(), func() uintptr {
 23726  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23727  				return ts + 5624
 23728  			}
 23729  			return ts + 584
 23730  		}(), func() uintptr {
 23731  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23732  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23733  			}
 23734  			return ts + 584
 23735  		}(), func() uintptr {
 23736  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23737  				return ts + 5626
 23738  			}
 23739  			return ts + 584
 23740  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23741  		if zSql == uintptr(0) {
 23742  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 23743  			break
 23744  		}
 23745  
 23746  		if iMin == iMax {
 23747  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 23748  		} else {
 23749  			var zWhere uintptr = ts + 9392
 23750  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23751  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 23752  				zWhere = ts + 9419
 23753  			}
 23754  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 23755  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 23756  			}
 23757  		}
 23758  
 23759  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23760  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 23761  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 23762  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 23763  			break
 23764  		}
 23765  	}
 23766  
 23767  	if zSql == uintptr(0) {
 23768  		return *(*int32)(unsafe.Pointer(bp + 104))
 23769  	} else {
 23770  		var db uintptr = func() uintptr {
 23771  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23772  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 23773  			}
 23774  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23775  		}()
 23776  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 23777  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23778  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23779  		}
 23780  		sqlite3.Xsqlite3_free(tls, zSql)
 23781  	}
 23782  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 23783  		return *(*int32)(unsafe.Pointer(bp + 104))
 23784  	}
 23785  	return unionNext(tls, pVtabCursor)
 23786  }
 23787  
 23788  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23789  	var pTab uintptr = tab
 23790  	var iEq int32 = -1
 23791  	var iLt int32 = -1
 23792  	var iGt int32 = -1
 23793  	var i int32
 23794  
 23795  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 23796  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 23797  		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) {
 23798  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 23799  			case SQLITE_INDEX_CONSTRAINT_EQ:
 23800  				iEq = i
 23801  				break
 23802  				fallthrough
 23803  			case SQLITE_INDEX_CONSTRAINT_LE:
 23804  				fallthrough
 23805  			case SQLITE_INDEX_CONSTRAINT_LT:
 23806  				iLt = i
 23807  				break
 23808  				fallthrough
 23809  			case SQLITE_INDEX_CONSTRAINT_GE:
 23810  				fallthrough
 23811  			case SQLITE_INDEX_CONSTRAINT_GT:
 23812  				iGt = i
 23813  				break
 23814  			}
 23815  		}
 23816  	}
 23817  
 23818  	if iEq >= 0 {
 23819  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 23820  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 23821  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 23822  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 23823  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 23824  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 23825  	} else {
 23826  		var iCons int32 = 1
 23827  		var idxNum int32 = 0
 23828  		var nRow sqlite3_int64 = int64(1000000)
 23829  		if iLt >= 0 {
 23830  			nRow = nRow / int64(2)
 23831  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23832  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 23833  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 23834  		}
 23835  		if iGt >= 0 {
 23836  			nRow = nRow / int64(2)
 23837  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23838  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 23839  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 23840  		}
 23841  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 23842  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 23843  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23844  	}
 23845  
 23846  	return SQLITE_OK
 23847  }
 23848  
 23849  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 23850  	var rc int32
 23851  
 23852  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 23853  	if rc == SQLITE_OK {
 23854  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 23855  	}
 23856  	return rc
 23857  }
 23858  
 23859  var unionModule = sqlite3_module{
 23860  	FxCreate:     0,
 23861  	FxConnect:    0,
 23862  	FxBestIndex:  0,
 23863  	FxDisconnect: 0,
 23864  	FxDestroy:    0,
 23865  	FxOpen:       0,
 23866  	FxClose:      0,
 23867  	FxFilter:     0,
 23868  	FxNext:       0,
 23869  	FxEof:        0,
 23870  	FxColumn:     0,
 23871  	FxRowid:      0,
 23872  }
 23873  
 23874  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23875  	var rc int32 = SQLITE_OK
 23876  	_ = pApi
 23877  
 23878  	_ = pzErrMsg
 23879  	rc = createUnionVtab(tls, db)
 23880  	return rc
 23881  }
 23882  
 23883  type wholenumber_cursor1 = struct {
 23884  	Fbase    sqlite3_vtab_cursor
 23885  	FiValue  sqlite3_int64
 23886  	FmxValue sqlite3_int64
 23887  }
 23888  
 23889  type wholenumber_cursor = wholenumber_cursor1
 23890  
 23891  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23892  	var pNew uintptr
 23893  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 23894  	if pNew == uintptr(0) {
 23895  		return SQLITE_NOMEM
 23896  	}
 23897  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 23898  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 23899  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 23900  	return SQLITE_OK
 23901  }
 23902  
 23903  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23904  	sqlite3.Xsqlite3_free(tls, pVtab)
 23905  	return SQLITE_OK
 23906  }
 23907  
 23908  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23909  	var pCur uintptr
 23910  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 23911  	if pCur == uintptr(0) {
 23912  		return SQLITE_NOMEM
 23913  	}
 23914  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})))
 23915  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 23916  	return SQLITE_OK
 23917  }
 23918  
 23919  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 23920  	sqlite3.Xsqlite3_free(tls, cur)
 23921  	return SQLITE_OK
 23922  }
 23923  
 23924  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 23925  	var pCur uintptr = cur
 23926  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 23927  	return SQLITE_OK
 23928  }
 23929  
 23930  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23931  	var pCur uintptr = cur
 23932  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 23933  	return SQLITE_OK
 23934  }
 23935  
 23936  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23937  	var pCur uintptr = cur
 23938  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 23939  	return SQLITE_OK
 23940  }
 23941  
 23942  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 23943  	var pCur uintptr = cur
 23944  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 23945  }
 23946  
 23947  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23948  	var pCur uintptr = pVtabCursor
 23949  	var v sqlite3_int64
 23950  	var i int32 = 0
 23951  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 23952  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 23953  	if idxNum&3 != 0 {
 23954  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 23955  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23956  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 23957  		}
 23958  		i++
 23959  	}
 23960  	if idxNum&12 != 0 {
 23961  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 23962  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23963  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 23964  		}
 23965  	}
 23966  	return SQLITE_OK
 23967  }
 23968  
 23969  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23970  	var i int32
 23971  	var idxNum int32 = 0
 23972  	var argvIdx int32 = 1
 23973  	var ltIdx int32 = -1
 23974  	var gtIdx int32 = -1
 23975  	var pConstraint uintptr
 23976  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 23977  	i = 0
 23978  __1:
 23979  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 23980  		goto __3
 23981  	}
 23982  	{
 23983  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 23984  			goto __2
 23985  		}
 23986  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 23987  			idxNum = idxNum | 1
 23988  			ltIdx = i
 23989  		}
 23990  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 23991  			idxNum = idxNum | 2
 23992  			ltIdx = i
 23993  		}
 23994  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 23995  			idxNum = idxNum | 4
 23996  			gtIdx = i
 23997  		}
 23998  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 23999  			idxNum = idxNum | 8
 24000  			gtIdx = i
 24001  		}
 24002  
 24003  	}
 24004  	goto __2
 24005  __2:
 24006  	i++
 24007  	pConstraint += 12
 24008  	goto __1
 24009  	goto __3
 24010  __3:
 24011  	;
 24012  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24013  	if ltIdx >= 0 {
 24014  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 24015  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 24016  	}
 24017  	if gtIdx >= 0 {
 24018  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 24019  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 24020  	}
 24021  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 24022  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 24023  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 24024  	}
 24025  	if idxNum&12 == 0 {
 24026  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 24027  	} else if idxNum&3 == 0 {
 24028  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 24029  	} else {
 24030  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 24031  	}
 24032  	return SQLITE_OK
 24033  }
 24034  
 24035  var wholenumberModule = sqlite3_module{
 24036  	FxCreate:     0,
 24037  	FxConnect:    0,
 24038  	FxBestIndex:  0,
 24039  	FxDisconnect: 0,
 24040  	FxDestroy:    0,
 24041  	FxOpen:       0,
 24042  	FxClose:      0,
 24043  	FxFilter:     0,
 24044  	FxNext:       0,
 24045  	FxEof:        0,
 24046  	FxColumn:     0,
 24047  	FxRowid:      0,
 24048  }
 24049  
 24050  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24051  	var rc int32 = SQLITE_OK
 24052  	_ = pApi
 24053  
 24054  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 24055  	return rc
 24056  }
 24057  
 24058  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 24059  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 24060  	var pScript uintptr
 24061  	var i int32
 24062  
 24063  	pScript = tcl.XTcl_NewObj(tls)
 24064  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 24065  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 24066  	for i = 0; i < nArg; i++ {
 24067  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 24068  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 24069  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 24070  	}
 24071  
 24072  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 24073  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 24074  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 24075  	} else {
 24076  		tcl.XTcl_BackgroundError(tls, interp)
 24077  	}
 24078  
 24079  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 24080  		var _objPtr uintptr = pScript
 24081  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 24082  			tcl.XTclFreeObj(tls, _objPtr)
 24083  		}
 24084  	}
 24085  }
 24086  
 24087  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24088  	bp := tls.Alloc(496)
 24089  	defer tls.Free(496)
 24090  
 24091  	var ret int32 = TCL_OK
 24092  	var pRbu uintptr = clientData
 24093  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 24094  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 24095  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 24096  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 24097  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 24098  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 24099  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 24100  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 24101  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 24102  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 24103  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 24104  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 24105  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 24106  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 24107  		{},
 24108  	}
 24109  
 24110  	if objc < 2 {
 24111  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 24112  		return TCL_ERROR
 24113  	}
 24114  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 24115  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 24116  	if ret != 0 {
 24117  		return TCL_ERROR
 24118  	}
 24119  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 24120  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 24121  		return TCL_ERROR
 24122  	}
 24123  
 24124  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 24125  	case 0:
 24126  		{
 24127  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 24128  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24129  			break
 24130  
 24131  		}
 24132  
 24133  	case 9:
 24134  		fallthrough
 24135  	case 1:
 24136  		{
 24137  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 24138  			var rc int32
 24139  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 24140  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 24141  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 24142  			} else {
 24143  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 24144  			}
 24145  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 24146  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24147  
 24148  			} else {
 24149  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24150  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 24151  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 24152  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 24153  				}
 24154  				ret = TCL_ERROR
 24155  			}
 24156  			break
 24157  
 24158  		}
 24159  
 24160  	case 2:
 24161  		{
 24162  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 24163  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 24164  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 24165  					f func(*libc.TLS, uintptr, int32, uintptr)
 24166  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 24167  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24168  			ret = func() int32 {
 24169  				if rc == SQLITE_OK {
 24170  					return TCL_OK
 24171  				}
 24172  				return TCL_ERROR
 24173  			}()
 24174  			break
 24175  
 24176  		}
 24177  
 24178  	case 3:
 24179  		{
 24180  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 24181  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24182  			ret = func() int32 {
 24183  				if rc == SQLITE_OK {
 24184  					return TCL_OK
 24185  				}
 24186  				return TCL_ERROR
 24187  			}()
 24188  			break
 24189  
 24190  		}
 24191  
 24192  	case 12:
 24193  		fallthrough
 24194  	case 4:
 24195  		{
 24196  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 24197  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 24198  			if rc != SQLITE_OK {
 24199  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 24200  				ret = TCL_ERROR
 24201  			}
 24202  			break
 24203  
 24204  		}
 24205  
 24206  	case 5:
 24207  		{
 24208  			var pObj uintptr
 24209  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 24210  
 24211  			pObj = tcl.XTcl_NewObj(tls)
 24212  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 24213  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 24214  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 24215  			break
 24216  
 24217  		}
 24218  
 24219  	case 6:
 24220  		{
 24221  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 24222  				ret = TCL_ERROR
 24223  			} else {
 24224  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 24225  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 24226  					ret = TCL_ERROR
 24227  				} else {
 24228  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 24229  				}
 24230  			}
 24231  			break
 24232  
 24233  		}
 24234  	case 7:
 24235  		{
 24236  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 24237  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 24238  
 24239  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 24240  			break
 24241  
 24242  		}
 24243  	case 8:
 24244  		{
 24245  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 24246  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 24247  			break
 24248  
 24249  		}
 24250  
 24251  	case 10:
 24252  		{
 24253  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 24254  				ret = TCL_ERROR
 24255  			} else {
 24256  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 24257  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 24258  			}
 24259  			break
 24260  
 24261  		}
 24262  	case 11:
 24263  		{
 24264  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 24265  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 24266  			break
 24267  
 24268  		}
 24269  
 24270  	default:
 24271  		break
 24272  	}
 24273  
 24274  	return ret
 24275  }
 24276  
 24277  type RbuCmd = struct {
 24278  	FzName       uintptr
 24279  	FnArg        int32
 24280  	F__ccgo_pad1 [4]byte
 24281  	FzUsage      uintptr
 24282  }
 24283  
 24284  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24285  	var pRbu uintptr = uintptr(0)
 24286  	var zCmd uintptr
 24287  	var zTarget uintptr
 24288  	var zRbu uintptr
 24289  	var zStateDb uintptr = uintptr(0)
 24290  
 24291  	if objc != 4 && objc != 5 {
 24292  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 24293  		return TCL_ERROR
 24294  	}
 24295  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24296  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24297  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24298  	if objc == 5 {
 24299  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 24300  	}
 24301  
 24302  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 24303  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24304  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24305  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24306  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24307  	return TCL_OK
 24308  }
 24309  
 24310  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24311  	var pRbu uintptr = uintptr(0)
 24312  	var zCmd uintptr
 24313  	var zTarget uintptr
 24314  	var zStateDb uintptr = uintptr(0)
 24315  
 24316  	if objc != 3 && objc != 4 {
 24317  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 24318  		return TCL_ERROR
 24319  	}
 24320  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24321  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 24322  	if objc == 4 {
 24323  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 24324  	}
 24325  	if zStateDb != 0 && int32(*(*int8)(unsafe.Pointer(zStateDb))) == 0 {
 24326  		zStateDb = uintptr(0)
 24327  	}
 24328  
 24329  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 24330  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24331  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24332  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24333  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24334  	return TCL_OK
 24335  }
 24336  
 24337  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24338  	var zName uintptr
 24339  	var zParent uintptr
 24340  	var rc int32
 24341  
 24342  	if objc != 3 && objc != 4 {
 24343  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 24344  		return TCL_ERROR
 24345  	}
 24346  
 24347  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 24348  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 24349  	if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 24350  		zParent = uintptr(0)
 24351  	}
 24352  
 24353  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 24354  	if rc != SQLITE_OK {
 24355  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24356  		return TCL_ERROR
 24357  	} else if objc == 4 {
 24358  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 24359  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 24360  	}
 24361  
 24362  	tcl.XTcl_ResetResult(tls, interp)
 24363  	return TCL_OK
 24364  }
 24365  
 24366  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24367  	var zName uintptr
 24368  
 24369  	if objc != 2 {
 24370  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 24371  		return TCL_ERROR
 24372  	}
 24373  
 24374  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 24375  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 24376  	return TCL_OK
 24377  }
 24378  
 24379  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24380  	bp := tls.Alloc(16)
 24381  	defer tls.Free(16)
 24382  
 24383  	var db uintptr
 24384  
 24385  	if objc != 1 {
 24386  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 24387  		return TCL_ERROR
 24388  	}
 24389  
 24390  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 24391  	if db != uintptr(0) {
 24392  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 24393  		return TCL_ERROR
 24394  	}
 24395  
 24396  	return TCL_OK
 24397  }
 24398  
 24399  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 24400  	var i int32
 24401  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 24402  		FzName uintptr
 24403  		FxProc uintptr
 24404  	}{})); i++ {
 24405  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 24406  	}
 24407  	return TCL_OK
 24408  }
 24409  
 24410  var aObjCmd = [5]struct {
 24411  	FzName uintptr
 24412  	FxProc uintptr
 24413  }{
 24414  	{FzName: ts + 9790, FxProc: 0},
 24415  	{FzName: ts + 9801, FxProc: 0},
 24416  	{FzName: ts + 9819, FxProc: 0},
 24417  	{FzName: ts + 9841, FxProc: 0},
 24418  	{FzName: ts + 9864, FxProc: 0},
 24419  }
 24420  
 24421  type sqlite31 = sqlite32
 24422  
 24423  type sqlite3_str = sqlite3_str1
 24424  
 24425  type int_least8_t = int8
 24426  type int_least16_t = int16
 24427  type int_least32_t = int32
 24428  type int_least64_t = int64
 24429  
 24430  type uint_least8_t = uint8
 24431  type uint_least16_t = uint16
 24432  type uint_least32_t = uint32
 24433  type uint_least64_t = uint64
 24434  
 24435  type int_fast8_t = int32
 24436  type int_fast16_t = int32
 24437  type int_fast32_t = int32
 24438  type int_fast64_t = int64
 24439  
 24440  type uint_fast8_t = uint32
 24441  type uint_fast16_t = uint32
 24442  type uint_fast32_t = uint32
 24443  type uint_fast64_t = uint64
 24444  
 24445  type imaxdiv_t = struct {
 24446  	Fquot intmax_t
 24447  	Frem  intmax_t
 24448  }
 24449  
 24450  type Hash1 = struct {
 24451  	Fhtsize uint32
 24452  	Fcount  uint32
 24453  	Ffirst  uintptr
 24454  	Fht     uintptr
 24455  }
 24456  
 24457  type Hash = Hash1
 24458  type HashElem1 = struct {
 24459  	Fnext uintptr
 24460  	Fprev uintptr
 24461  	Fdata uintptr
 24462  	FpKey uintptr
 24463  }
 24464  
 24465  type HashElem = HashElem1
 24466  
 24467  type _ht = struct {
 24468  	Fcount       uint32
 24469  	F__ccgo_pad1 [4]byte
 24470  	Fchain       uintptr
 24471  }
 24472  
 24473  type max_align_t = struct {
 24474  	F__max_align1 int64
 24475  	F__max_align2 float64
 24476  }
 24477  type i16 = int16_t
 24478  type i8 = int8_t
 24479  
 24480  type tRowcnt = u32
 24481  
 24482  type LogEst = int16_t
 24483  
 24484  type uptr = uintptr_t
 24485  
 24486  type BusyHandler1 = struct {
 24487  	FxBusyHandler uintptr
 24488  	FpBusyArg     uintptr
 24489  	FnBusy        int32
 24490  	F__ccgo_pad1  [4]byte
 24491  }
 24492  
 24493  type BusyHandler = BusyHandler1
 24494  
 24495  type AggInfo1 = struct {
 24496  	FdirectMode     u8
 24497  	FuseSortingIdx  u8
 24498  	F__ccgo_pad1    [2]byte
 24499  	FsortingIdx     int32
 24500  	FsortingIdxPTab int32
 24501  	FnSortingColumn int32
 24502  	FmnReg          int32
 24503  	FmxReg          int32
 24504  	FpGroupBy       uintptr
 24505  	FaCol           uintptr
 24506  	FnColumn        int32
 24507  	FnAccumulator   int32
 24508  	FaFunc          uintptr
 24509  	FnFunc          int32
 24510  	FselId          u32
 24511  }
 24512  
 24513  type AggInfo = AggInfo1
 24514  type AuthContext1 = struct {
 24515  	FzAuthContext uintptr
 24516  	FpParse       uintptr
 24517  }
 24518  
 24519  type AuthContext = AuthContext1
 24520  type AutoincInfo1 = struct {
 24521  	FpNext  uintptr
 24522  	FpTab   uintptr
 24523  	FiDb    int32
 24524  	FregCtr int32
 24525  }
 24526  
 24527  type AutoincInfo = AutoincInfo1
 24528  type CollSeq1 = struct {
 24529  	FzName       uintptr
 24530  	Fenc         u8
 24531  	F__ccgo_pad1 [7]byte
 24532  	FpUser       uintptr
 24533  	FxCmp        uintptr
 24534  	FxDel        uintptr
 24535  }
 24536  
 24537  type CollSeq = CollSeq1
 24538  type Column1 = struct {
 24539  	FzCnName     uintptr
 24540  	FnotNull     uint8
 24541  	F__ccgo_pad1 [1]byte
 24542  	Faffinity    int8
 24543  	FszEst       u8
 24544  	FhName       u8
 24545  	F__ccgo_pad2 [1]byte
 24546  	FiDflt       u16
 24547  	FcolFlags    u16
 24548  	F__ccgo_pad3 [6]byte
 24549  }
 24550  
 24551  type Column = Column1
 24552  type Cte1 = struct {
 24553  	FzName       uintptr
 24554  	FpCols       uintptr
 24555  	FpSelect     uintptr
 24556  	FzCteErr     uintptr
 24557  	FpUse        uintptr
 24558  	FeM10d       u8
 24559  	F__ccgo_pad1 [7]byte
 24560  }
 24561  
 24562  type Cte = Cte1
 24563  type CteUse1 = struct {
 24564  	FnUse        int32
 24565  	FaddrM9e     int32
 24566  	FregRtn      int32
 24567  	FiCur        int32
 24568  	FnRowEst     LogEst
 24569  	FeM10d       u8
 24570  	F__ccgo_pad1 [1]byte
 24571  }
 24572  
 24573  type CteUse = CteUse1
 24574  type Db1 = struct {
 24575  	FzDbSName     uintptr
 24576  	FpBt          uintptr
 24577  	Fsafety_level u8
 24578  	FbSyncSet     u8
 24579  	F__ccgo_pad1  [6]byte
 24580  	FpSchema      uintptr
 24581  }
 24582  
 24583  type Db = Db1
 24584  type DbFixer1 = struct {
 24585  	FpParse      uintptr
 24586  	Fw           Walker
 24587  	FpSchema     uintptr
 24588  	FbTemp       u8
 24589  	F__ccgo_pad1 [7]byte
 24590  	FzDb         uintptr
 24591  	FzType       uintptr
 24592  	FpName       uintptr
 24593  }
 24594  
 24595  type DbFixer = DbFixer1
 24596  type Schema1 = struct {
 24597  	Fschema_cookie int32
 24598  	FiGeneration   int32
 24599  	FtblHash       Hash
 24600  	FidxHash       Hash
 24601  	FtrigHash      Hash
 24602  	FfkeyHash      Hash
 24603  	FpSeqTab       uintptr
 24604  	Ffile_format   u8
 24605  	Fenc           u8
 24606  	FschemaFlags   u16
 24607  	Fcache_size    int32
 24608  }
 24609  
 24610  type Schema = Schema1
 24611  type Expr1 = struct {
 24612  	Fop          u8
 24613  	FaffExpr     int8
 24614  	Fop2         u8
 24615  	F__ccgo_pad1 [1]byte
 24616  	Fflags       u32
 24617  	Fu           struct{ FzToken uintptr }
 24618  	FpLeft       uintptr
 24619  	FpRight      uintptr
 24620  	Fx           struct{ FpList uintptr }
 24621  	FnHeight     int32
 24622  	FiTable      int32
 24623  	FiColumn     ynVar
 24624  	FiAgg        i16
 24625  	Fw           struct{ FiJoin int32 }
 24626  	FpAggInfo    uintptr
 24627  	Fy           struct{ FpTab uintptr }
 24628  }
 24629  
 24630  type Expr = Expr1
 24631  type ExprList1 = struct {
 24632  	FnExpr  int32
 24633  	FnAlloc int32
 24634  	Fa      [1]struct {
 24635  		FpExpr  uintptr
 24636  		FzEName uintptr
 24637  		Ffg     struct {
 24638  			F__ccgo_pad1 [0]uint32
 24639  			FsortFlags   u8
 24640  			F__ccgo_pad2 [3]byte
 24641  			FeEName      uint16
 24642  			F__ccgo_pad3 [2]byte
 24643  		}
 24644  		Fu struct {
 24645  			F__ccgo_pad1 [0]uint32
 24646  			Fx           struct {
 24647  				FiOrderByCol u16
 24648  				FiAlias      u16
 24649  			}
 24650  		}
 24651  		F__ccgo_pad1 [4]byte
 24652  	}
 24653  }
 24654  
 24655  type ExprList = ExprList1
 24656  type FKey1 = struct {
 24657  	FpFrom       uintptr
 24658  	FpNextFrom   uintptr
 24659  	FzTo         uintptr
 24660  	FpNextTo     uintptr
 24661  	FpPrevTo     uintptr
 24662  	FnCol        int32
 24663  	FisDeferred  u8
 24664  	FaAction     [2]u8
 24665  	F__ccgo_pad1 [1]byte
 24666  	FapTrigger   [2]uintptr
 24667  	FaCol        [1]struct {
 24668  		FiFrom       int32
 24669  		F__ccgo_pad1 [4]byte
 24670  		FzCol        uintptr
 24671  	}
 24672  }
 24673  
 24674  type FKey = FKey1
 24675  type FuncDestructor1 = struct {
 24676  	FnRef        int32
 24677  	F__ccgo_pad1 [4]byte
 24678  	FxDestroy    uintptr
 24679  	FpUserData   uintptr
 24680  }
 24681  
 24682  type FuncDestructor = FuncDestructor1
 24683  type FuncDef1 = struct {
 24684  	FnArg        i8
 24685  	F__ccgo_pad1 [3]byte
 24686  	FfuncFlags   u32
 24687  	FpUserData   uintptr
 24688  	FpNext       uintptr
 24689  	FxSFunc      uintptr
 24690  	FxFinalize   uintptr
 24691  	FxValue      uintptr
 24692  	FxInverse    uintptr
 24693  	FzName       uintptr
 24694  	Fu           struct{ FpHash uintptr }
 24695  }
 24696  
 24697  type FuncDef = FuncDef1
 24698  type FuncDefHash1 = struct{ Fa [23]uintptr }
 24699  
 24700  type FuncDefHash = FuncDefHash1
 24701  type IdList1 = struct {
 24702  	FnId         int32
 24703  	FeU4         u8
 24704  	F__ccgo_pad1 [3]byte
 24705  	Fa           [1]struct {
 24706  		FzName uintptr
 24707  		Fu4    struct {
 24708  			F__ccgo_pad1 [0]uint64
 24709  			Fidx         int32
 24710  			F__ccgo_pad2 [4]byte
 24711  		}
 24712  	}
 24713  }
 24714  
 24715  type IdList = IdList1
 24716  type Index1 = struct {
 24717  	FzName         uintptr
 24718  	FaiColumn      uintptr
 24719  	FaiRowLogEst   uintptr
 24720  	FpTable        uintptr
 24721  	FzColAff       uintptr
 24722  	FpNext         uintptr
 24723  	FpSchema       uintptr
 24724  	FaSortOrder    uintptr
 24725  	FazColl        uintptr
 24726  	FpPartIdxWhere uintptr
 24727  	FaColExpr      uintptr
 24728  	Ftnum          Pgno
 24729  	FszIdxRow      LogEst
 24730  	FnKeyCol       u16
 24731  	FnColumn       u16
 24732  	FonError       u8
 24733  	F__ccgo_pad1   [1]byte
 24734  	FidxType       uint16
 24735  	F__ccgo_pad2   [2]byte
 24736  	FnSample       int32
 24737  	FnSampleCol    int32
 24738  	FaAvgEq        uintptr
 24739  	FaSample       uintptr
 24740  	FaiRowEst      uintptr
 24741  	FnRowEst0      tRowcnt
 24742  	F__ccgo_pad3   [4]byte
 24743  	FcolNotIdxed   Bitmask
 24744  }
 24745  
 24746  type Index = Index1
 24747  type IndexSample1 = struct {
 24748  	Fp           uintptr
 24749  	Fn           int32
 24750  	F__ccgo_pad1 [4]byte
 24751  	FanEq        uintptr
 24752  	FanLt        uintptr
 24753  	FanDLt       uintptr
 24754  }
 24755  
 24756  type IndexSample = IndexSample1
 24757  type KeyInfo1 = struct {
 24758  	FnRef        u32
 24759  	Fenc         u8
 24760  	F__ccgo_pad1 [1]byte
 24761  	FnKeyField   u16
 24762  	FnAllField   u16
 24763  	F__ccgo_pad2 [6]byte
 24764  	Fdb          uintptr
 24765  	FaSortFlags  uintptr
 24766  	FaColl       [1]uintptr
 24767  }
 24768  
 24769  type KeyInfo = KeyInfo1
 24770  type Lookaside1 = struct {
 24771  	FbDisable    u32
 24772  	Fsz          u16
 24773  	FszTrue      u16
 24774  	FbMalloced   u8
 24775  	F__ccgo_pad1 [3]byte
 24776  	FnSlot       u32
 24777  	FanStat      [3]u32
 24778  	F__ccgo_pad2 [4]byte
 24779  	FpInit       uintptr
 24780  	FpFree       uintptr
 24781  	FpSmallInit  uintptr
 24782  	FpSmallFree  uintptr
 24783  	FpMiddle     uintptr
 24784  	FpStart      uintptr
 24785  	FpEnd        uintptr
 24786  }
 24787  
 24788  type Lookaside = Lookaside1
 24789  type LookasideSlot1 = struct{ FpNext uintptr }
 24790  
 24791  type LookasideSlot = LookasideSlot1
 24792  type Module1 = struct {
 24793  	FpModule     uintptr
 24794  	FzName       uintptr
 24795  	FnRefModule  int32
 24796  	F__ccgo_pad1 [4]byte
 24797  	FpAux        uintptr
 24798  	FxDestroy    uintptr
 24799  	FpEpoTab     uintptr
 24800  }
 24801  
 24802  type Module = Module1
 24803  type NameContext1 = struct {
 24804  	FpParse      uintptr
 24805  	FpSrcList    uintptr
 24806  	FuNC         struct{ FpEList uintptr }
 24807  	FpNext       uintptr
 24808  	FnRef        int32
 24809  	FnNcErr      int32
 24810  	FncFlags     int32
 24811  	F__ccgo_pad1 [4]byte
 24812  	FpWinSelect  uintptr
 24813  }
 24814  
 24815  type NameContext = NameContext1
 24816  type OnOrUsing1 = struct {
 24817  	FpOn    uintptr
 24818  	FpUsing uintptr
 24819  }
 24820  
 24821  type OnOrUsing = OnOrUsing1
 24822  type Parse1 = struct {
 24823  	Fdb               uintptr
 24824  	FzErrMsg          uintptr
 24825  	FpVdbe            uintptr
 24826  	Frc               int32
 24827  	FcolNamesSet      u8
 24828  	FcheckSchema      u8
 24829  	Fnested           u8
 24830  	FnTempReg         u8
 24831  	FisMultiWrite     u8
 24832  	FmayAbort         u8
 24833  	FhasCompound      u8
 24834  	FokConstFactor    u8
 24835  	FdisableLookaside u8
 24836  	FdisableVtab      u8
 24837  	FwithinRJSubrtn   u8
 24838  	F__ccgo_pad1      [1]byte
 24839  	FnRangeReg        int32
 24840  	FiRangeReg        int32
 24841  	FnErr             int32
 24842  	FnTab             int32
 24843  	FnMem             int32
 24844  	FszOpAlloc        int32
 24845  	FiSelfTab         int32
 24846  	FnLabel           int32
 24847  	FnLabelAlloc      int32
 24848  	F__ccgo_pad2      [4]byte
 24849  	FaLabel           uintptr
 24850  	FpConstExpr       uintptr
 24851  	FconstraintName   Token
 24852  	FwriteMask        yDbMask
 24853  	FcookieMask       yDbMask
 24854  	FregRowid         int32
 24855  	FregRoot          int32
 24856  	FnMaxArg          int32
 24857  	FnSelect          int32
 24858  	FnTableLock       int32
 24859  	F__ccgo_pad3      [4]byte
 24860  	FaTableLock       uintptr
 24861  	FpAinc            uintptr
 24862  	FpToplevel        uintptr
 24863  	FpTriggerTab      uintptr
 24864  	FpTriggerPrg      uintptr
 24865  	FpCleanup         uintptr
 24866  	Fu1               struct {
 24867  		F__ccgo_pad1 [0]uint64
 24868  		FaddrCrTab   int32
 24869  		F__ccgo_pad2 [4]byte
 24870  	}
 24871  	FnQueryLoop      u32
 24872  	Foldmask         u32
 24873  	Fnewmask         u32
 24874  	FeTriggerOp      u8
 24875  	FbReturning      u8
 24876  	FeOrconf         u8
 24877  	FdisableTriggers u8
 24878  	FaTempReg        [8]int32
 24879  	FpOuterParse     uintptr
 24880  	FsNameToken      Token
 24881  	FsLastToken      Token
 24882  	FnVar            ynVar
 24883  	FiPkSortOrder    u8
 24884  	Fexplain         u8
 24885  	FeParseMode      u8
 24886  	F__ccgo_pad4     [3]byte
 24887  	FnVtabLock       int32
 24888  	FnHeight         int32
 24889  	FaddrExplain     int32
 24890  	F__ccgo_pad5     [4]byte
 24891  	FpVList          uintptr
 24892  	FpReprepare      uintptr
 24893  	FzTail           uintptr
 24894  	FpNewTable       uintptr
 24895  	FpNewIndex       uintptr
 24896  	FpNewTrigger     uintptr
 24897  	FzAuthContext    uintptr
 24898  	FsArg            Token
 24899  	FapVtabLock      uintptr
 24900  	FpWith           uintptr
 24901  	FpRename         uintptr
 24902  }
 24903  
 24904  type Parse = Parse1
 24905  type ParseCleanup1 = struct {
 24906  	FpNext    uintptr
 24907  	FpPtr     uintptr
 24908  	FxCleanup uintptr
 24909  }
 24910  
 24911  type ParseCleanup = ParseCleanup1
 24912  type PreUpdate1 = struct {
 24913  	Fv            uintptr
 24914  	FpCsr         uintptr
 24915  	Fop           int32
 24916  	F__ccgo_pad1  [4]byte
 24917  	FaRecord      uintptr
 24918  	Fkeyinfo      KeyInfo
 24919  	FpUnpacked    uintptr
 24920  	FpNewUnpacked uintptr
 24921  	FiNewReg      int32
 24922  	FiBlobWrite   int32
 24923  	FiKey1        i64
 24924  	FiKey2        i64
 24925  	FaNew         uintptr
 24926  	FpTab         uintptr
 24927  	FpPk          uintptr
 24928  }
 24929  
 24930  type PrintfArguments1 = struct {
 24931  	FnArg  int32
 24932  	FnUsed int32
 24933  	FapArg uintptr
 24934  }
 24935  
 24936  type PrintfArguments = PrintfArguments1
 24937  type Returning1 = struct {
 24938  	FpParse      uintptr
 24939  	FpReturnEL   uintptr
 24940  	FretTrig     Trigger
 24941  	FretTStep    TriggerStep
 24942  	FiRetCur     int32
 24943  	FnRetCol     int32
 24944  	FiRetReg     int32
 24945  	F__ccgo_pad1 [4]byte
 24946  }
 24947  
 24948  type Returning = Returning1
 24949  type Savepoint1 = struct {
 24950  	FzName            uintptr
 24951  	FnDeferredCons    i64
 24952  	FnDeferredImmCons i64
 24953  	FpNext            uintptr
 24954  }
 24955  
 24956  type Savepoint = Savepoint1
 24957  type Select1 = struct {
 24958  	Fop           u8
 24959  	F__ccgo_pad1  [1]byte
 24960  	FnSelectRow   LogEst
 24961  	FselFlags     u32
 24962  	FiLimit       int32
 24963  	FiOffset      int32
 24964  	FselId        u32
 24965  	FaddrOpenEphm [2]int32
 24966  	F__ccgo_pad2  [4]byte
 24967  	FpEList       uintptr
 24968  	FpSrc         uintptr
 24969  	FpWhere       uintptr
 24970  	FpGroupBy     uintptr
 24971  	FpHaving      uintptr
 24972  	FpOrderBy     uintptr
 24973  	FpPrior       uintptr
 24974  	FpNext        uintptr
 24975  	FpLimit       uintptr
 24976  	FpWith        uintptr
 24977  	FpWin         uintptr
 24978  	FpWinDefn     uintptr
 24979  }
 24980  
 24981  type Select = Select1
 24982  type SelectDest1 = struct {
 24983  	FeDest       u8
 24984  	F__ccgo_pad1 [3]byte
 24985  	FiSDParm     int32
 24986  	FiSDParm2    int32
 24987  	FiSdst       int32
 24988  	FnSdst       int32
 24989  	F__ccgo_pad2 [4]byte
 24990  	FzAffSdst    uintptr
 24991  	FpOrderBy    uintptr
 24992  }
 24993  
 24994  type SelectDest = SelectDest1
 24995  type SrcItem1 = struct {
 24996  	FpSchema     uintptr
 24997  	FzDatabase   uintptr
 24998  	FzName       uintptr
 24999  	FzAlias      uintptr
 25000  	FpTab        uintptr
 25001  	FpSelect     uintptr
 25002  	FaddrFillSub int32
 25003  	FregReturn   int32
 25004  	FregResult   int32
 25005  	Ffg          struct {
 25006  		F__ccgo_pad1 [0]uint32
 25007  		Fjointype    u8
 25008  		F__ccgo_pad2 [3]byte
 25009  		FnotIndexed  uint16
 25010  		F__ccgo_pad3 [2]byte
 25011  	}
 25012  	FiCursor int32
 25013  	Fu3      struct{ FpOn uintptr }
 25014  	FcolUsed Bitmask
 25015  	Fu1      struct{ FzIndexedBy uintptr }
 25016  	Fu2      struct{ FpIBIndex uintptr }
 25017  }
 25018  
 25019  type SrcItem = SrcItem1
 25020  type SrcList1 = struct {
 25021  	FnSrc   int32
 25022  	FnAlloc u32
 25023  	Fa      [1]SrcItem
 25024  }
 25025  
 25026  type SrcList = SrcList1
 25027  type StrAccum = sqlite3_str1
 25028  type Table1 = struct {
 25029  	FzName      uintptr
 25030  	FaCol       uintptr
 25031  	FpIndex     uintptr
 25032  	FzColAff    uintptr
 25033  	FpCheck     uintptr
 25034  	Ftnum       Pgno
 25035  	FnTabRef    u32
 25036  	FtabFlags   u32
 25037  	FiPKey      i16
 25038  	FnCol       i16
 25039  	FnNVCol     i16
 25040  	FnRowLogEst LogEst
 25041  	FszTabRow   LogEst
 25042  	FkeyConf    u8
 25043  	FeTabType   u8
 25044  	Fu          struct {
 25045  		Ftab struct {
 25046  			FaddColOffset int32
 25047  			F__ccgo_pad1  [4]byte
 25048  			FpFKey        uintptr
 25049  			FpDfltList    uintptr
 25050  		}
 25051  	}
 25052  	FpTrigger uintptr
 25053  	FpSchema  uintptr
 25054  }
 25055  
 25056  type Table = Table1
 25057  type Token1 = struct {
 25058  	Fz           uintptr
 25059  	Fn           uint32
 25060  	F__ccgo_pad1 [4]byte
 25061  }
 25062  
 25063  type Token = Token1
 25064  type Trigger1 = struct {
 25065  	FzName       uintptr
 25066  	Ftable       uintptr
 25067  	Fop          u8
 25068  	Ftr_tm       u8
 25069  	FbReturning  u8
 25070  	F__ccgo_pad1 [5]byte
 25071  	FpWhen       uintptr
 25072  	FpColumns    uintptr
 25073  	FpSchema     uintptr
 25074  	FpTabSchema  uintptr
 25075  	Fstep_list   uintptr
 25076  	FpNext       uintptr
 25077  }
 25078  
 25079  type Trigger = Trigger1
 25080  type TriggerPrg1 = struct {
 25081  	FpTrigger    uintptr
 25082  	FpNext       uintptr
 25083  	FpProgram    uintptr
 25084  	Forconf      int32
 25085  	FaColmask    [2]u32
 25086  	F__ccgo_pad1 [4]byte
 25087  }
 25088  
 25089  type TriggerPrg = TriggerPrg1
 25090  type TriggerStep1 = struct {
 25091  	Fop          u8
 25092  	Forconf      u8
 25093  	F__ccgo_pad1 [6]byte
 25094  	FpTrig       uintptr
 25095  	FpSelect     uintptr
 25096  	FzTarget     uintptr
 25097  	FpFrom       uintptr
 25098  	FpWhere      uintptr
 25099  	FpExprList   uintptr
 25100  	FpIdList     uintptr
 25101  	FpUpsert     uintptr
 25102  	FzSpan       uintptr
 25103  	FpNext       uintptr
 25104  	FpLast       uintptr
 25105  }
 25106  
 25107  type TriggerStep = TriggerStep1
 25108  type UnpackedRecord1 = struct {
 25109  	FpKeyInfo    uintptr
 25110  	FaMem        uintptr
 25111  	Fu           struct{ Fz uintptr }
 25112  	Fn           int32
 25113  	FnField      u16
 25114  	Fdefault_rc  i8
 25115  	FerrCode     u8
 25116  	Fr1          i8
 25117  	Fr2          i8
 25118  	FeqSeen      u8
 25119  	F__ccgo_pad1 [5]byte
 25120  }
 25121  
 25122  type UnpackedRecord = UnpackedRecord1
 25123  type Upsert1 = struct {
 25124  	FpUpsertTarget      uintptr
 25125  	FpUpsertTargetWhere uintptr
 25126  	FpUpsertSet         uintptr
 25127  	FpUpsertWhere       uintptr
 25128  	FpNextUpsert        uintptr
 25129  	FisDoUpdate         u8
 25130  	F__ccgo_pad1        [7]byte
 25131  	FpToFree            uintptr
 25132  	FpUpsertIdx         uintptr
 25133  	FpUpsertSrc         uintptr
 25134  	FregData            int32
 25135  	FiDataCur           int32
 25136  	FiIdxCur            int32
 25137  	F__ccgo_pad2        [4]byte
 25138  }
 25139  
 25140  type Upsert = Upsert1
 25141  type VTable1 = struct {
 25142  	Fdb          uintptr
 25143  	FpMod        uintptr
 25144  	FpVtab       uintptr
 25145  	FnRef        int32
 25146  	FbConstraint u8
 25147  	FeVtabRisk   u8
 25148  	F__ccgo_pad1 [2]byte
 25149  	FiSavepoint  int32
 25150  	F__ccgo_pad2 [4]byte
 25151  	FpNext       uintptr
 25152  }
 25153  
 25154  type VTable = VTable1
 25155  type Walker1 = struct {
 25156  	FpParse           uintptr
 25157  	FxExprCallback    uintptr
 25158  	FxSelectCallback  uintptr
 25159  	FxSelectCallback2 uintptr
 25160  	FwalkerDepth      int32
 25161  	FeCode            u16
 25162  	F__ccgo_pad1      [2]byte
 25163  	Fu                struct{ FpNC uintptr }
 25164  }
 25165  
 25166  type Walker = Walker1
 25167  type Window1 = struct {
 25168  	FzName          uintptr
 25169  	FzBase          uintptr
 25170  	FpPartition     uintptr
 25171  	FpOrderBy       uintptr
 25172  	FeFrmType       u8
 25173  	FeStart         u8
 25174  	FeEnd           u8
 25175  	FbImplicitFrame u8
 25176  	FeExclude       u8
 25177  	F__ccgo_pad1    [3]byte
 25178  	FpStart         uintptr
 25179  	FpEnd           uintptr
 25180  	FppThis         uintptr
 25181  	FpNextWin       uintptr
 25182  	FpFilter        uintptr
 25183  	FpWFunc         uintptr
 25184  	FiEphCsr        int32
 25185  	FregAccum       int32
 25186  	FregResult      int32
 25187  	FcsrApp         int32
 25188  	FregApp         int32
 25189  	FregPart        int32
 25190  	FpOwner         uintptr
 25191  	FnBufferCol     int32
 25192  	FiArgCol        int32
 25193  	FregOne         int32
 25194  	FregStartRowid  int32
 25195  	FregEndRowid    int32
 25196  	FbExprArgs      u8
 25197  	F__ccgo_pad2    [3]byte
 25198  }
 25199  
 25200  type Window = Window1
 25201  type With1 = struct {
 25202  	FnCte   int32
 25203  	FbView  int32
 25204  	FpOuter uintptr
 25205  	Fa      [1]Cte
 25206  }
 25207  
 25208  type With = With1
 25209  
 25210  type Bitmask = u64
 25211  
 25212  type VList = int32
 25213  
 25214  type Pgno = u32
 25215  
 25216  type PgHdr1 = struct {
 25217  	FpPage      uintptr
 25218  	FpData      uintptr
 25219  	FpExtra     uintptr
 25220  	FpCache     uintptr
 25221  	FpDirty     uintptr
 25222  	FpPager     uintptr
 25223  	Fpgno       Pgno
 25224  	Fflags      u16
 25225  	FnRef       i16
 25226  	FpDirtyNext uintptr
 25227  	FpDirtyPrev uintptr
 25228  }
 25229  
 25230  type DbPage = PgHdr1
 25231  
 25232  type Btree1 = struct {
 25233  	Fdb             uintptr
 25234  	FpBt            uintptr
 25235  	FinTrans        u8
 25236  	Fsharable       u8
 25237  	Flocked         u8
 25238  	FhasIncrblobCur u8
 25239  	FwantToLock     int32
 25240  	FnBackup        int32
 25241  	FiBDataVersion  u32
 25242  	FpNext          uintptr
 25243  	FpPrev          uintptr
 25244  	Flock           BtLock
 25245  }
 25246  
 25247  type BtCursor1 = struct {
 25248  	FeState        u8
 25249  	FcurFlags      u8
 25250  	FcurPagerFlags u8
 25251  	Fhints         u8
 25252  	FskipNext      int32
 25253  	FpBtree        uintptr
 25254  	FaOverflow     uintptr
 25255  	FpKey          uintptr
 25256  	FpBt           uintptr
 25257  	FpNext         uintptr
 25258  	Finfo          CellInfo
 25259  	FnKey          i64
 25260  	FpgnoRoot      Pgno
 25261  	FiPage         i8
 25262  	FcurIntKey     u8
 25263  	Fix            u16
 25264  	FaiIdx         [19]u16
 25265  	F__ccgo_pad1   [2]byte
 25266  	FpKeyInfo      uintptr
 25267  	FpPage         uintptr
 25268  	FapPage        [19]uintptr
 25269  }
 25270  
 25271  type BtShared1 = struct {
 25272  	FpPager          uintptr
 25273  	Fdb              uintptr
 25274  	FpCursor         uintptr
 25275  	FpPage1          uintptr
 25276  	FopenFlags       u8
 25277  	FautoVacuum      u8
 25278  	FincrVacuum      u8
 25279  	FbDoTruncate     u8
 25280  	FinTransaction   u8
 25281  	Fmax1bytePayload u8
 25282  	FnReserveWanted  u8
 25283  	F__ccgo_pad1     [1]byte
 25284  	FbtsFlags        u16
 25285  	FmaxLocal        u16
 25286  	FminLocal        u16
 25287  	FmaxLeaf         u16
 25288  	FminLeaf         u16
 25289  	F__ccgo_pad2     [2]byte
 25290  	FpageSize        u32
 25291  	FusableSize      u32
 25292  	FnTransaction    int32
 25293  	FnPage           u32
 25294  	F__ccgo_pad3     [4]byte
 25295  	FpSchema         uintptr
 25296  	FxFreeSchema     uintptr
 25297  	Fmutex           uintptr
 25298  	FpHasContent     uintptr
 25299  	FnRef            int32
 25300  	F__ccgo_pad4     [4]byte
 25301  	FpNext           uintptr
 25302  	FpLock           uintptr
 25303  	FpWriter         uintptr
 25304  	FpTmpSpace       uintptr
 25305  	FnPreformatSize  int32
 25306  	F__ccgo_pad5     [4]byte
 25307  }
 25308  
 25309  type BtreePayload1 = struct {
 25310  	FpKey        uintptr
 25311  	FnKey        sqlite3_int64
 25312  	FpData       uintptr
 25313  	FaMem        uintptr
 25314  	FnMem        u16
 25315  	F__ccgo_pad1 [2]byte
 25316  	FnData       int32
 25317  	FnZero       int32
 25318  	F__ccgo_pad2 [4]byte
 25319  }
 25320  
 25321  type BtreePayload = BtreePayload1
 25322  
 25323  type Vdbe1 = struct {
 25324  	Fdb                 uintptr
 25325  	FpPrev              uintptr
 25326  	FpNext              uintptr
 25327  	FpParse             uintptr
 25328  	FnVar               ynVar
 25329  	F__ccgo_pad1        [2]byte
 25330  	FnMem               int32
 25331  	FnCursor            int32
 25332  	FcacheCtr           u32
 25333  	Fpc                 int32
 25334  	Frc                 int32
 25335  	FnChange            i64
 25336  	FiStatement         int32
 25337  	F__ccgo_pad2        [4]byte
 25338  	FiCurrentTime       i64
 25339  	FnFkConstraint      i64
 25340  	FnStmtDefCons       i64
 25341  	FnStmtDefImmCons    i64
 25342  	FaMem               uintptr
 25343  	FapArg              uintptr
 25344  	FapCsr              uintptr
 25345  	FaVar               uintptr
 25346  	FaOp                uintptr
 25347  	FnOp                int32
 25348  	FnOpAlloc           int32
 25349  	FaColName           uintptr
 25350  	FpResultSet         uintptr
 25351  	FzErrMsg            uintptr
 25352  	FpVList             uintptr
 25353  	FstartTime          i64
 25354  	FnResColumn         u16
 25355  	FerrorAction        u8
 25356  	FminWriteFileFormat u8
 25357  	FprepFlags          u8
 25358  	FeVdbeState         u8
 25359  	F__ccgo_pad3        [2]byte
 25360  	Fexpired            uint8
 25361  	F__ccgo_pad4        [3]byte
 25362  	FbtreeMask          yDbMask
 25363  	FlockMask           yDbMask
 25364  	FaCounter           [9]u32
 25365  	FzSql               uintptr
 25366  	FpFree              uintptr
 25367  	FpFrame             uintptr
 25368  	FpDelFrame          uintptr
 25369  	FnFrame             int32
 25370  	Fexpmask            u32
 25371  	FpProgram           uintptr
 25372  	FpAuxData           uintptr
 25373  }
 25374  
 25375  type SubProgram1 = struct {
 25376  	FaOp         uintptr
 25377  	FnOp         int32
 25378  	FnMem        int32
 25379  	FnCsr        int32
 25380  	F__ccgo_pad1 [4]byte
 25381  	FaOnce       uintptr
 25382  	Ftoken       uintptr
 25383  	FpNext       uintptr
 25384  }
 25385  
 25386  type SubProgram = SubProgram1
 25387  
 25388  type VdbeOp1 = struct {
 25389  	Fopcode u8
 25390  	Fp4type int8
 25391  	Fp5     u16
 25392  	Fp1     int32
 25393  	Fp2     int32
 25394  	Fp3     int32
 25395  	Fp4     struct {
 25396  		F__ccgo_pad1 [0]uint64
 25397  		Fi           int32
 25398  		F__ccgo_pad2 [4]byte
 25399  	}
 25400  	FzComment uintptr
 25401  }
 25402  
 25403  type p4union = struct {
 25404  	F__ccgo_pad1 [0]uint64
 25405  	Fi           int32
 25406  	F__ccgo_pad2 [4]byte
 25407  }
 25408  
 25409  type VdbeOp = VdbeOp1
 25410  
 25411  type VdbeOpList1 = struct {
 25412  	Fopcode u8
 25413  	Fp1     int8
 25414  	Fp2     int8
 25415  	Fp3     int8
 25416  }
 25417  
 25418  type VdbeOpList = VdbeOpList1
 25419  
 25420  type RecordCompare = uintptr
 25421  
 25422  type PgHdr = PgHdr1
 25423  
 25424  type sqlite3_xauth = uintptr
 25425  
 25426  type sqlite3InitInfo = struct {
 25427  	FnewTnum       Pgno
 25428  	FiDb           u8
 25429  	Fbusy          u8
 25430  	F__ccgo_pad1   [2]byte
 25431  	ForphanTrigger uint8
 25432  	F__ccgo_pad2   [7]byte
 25433  	FazInit        uintptr
 25434  }
 25435  
 25436  type sColMap = struct {
 25437  	FiFrom       int32
 25438  	F__ccgo_pad1 [4]byte
 25439  	FzCol        uintptr
 25440  }
 25441  
 25442  type AggInfo_col = struct {
 25443  	FpTab          uintptr
 25444  	FpCExpr        uintptr
 25445  	FiTable        int32
 25446  	FiMem          int32
 25447  	FiColumn       i16
 25448  	FiSorterColumn i16
 25449  	F__ccgo_pad1   [4]byte
 25450  }
 25451  
 25452  type AggInfo_func = struct {
 25453  	FpFExpr      uintptr
 25454  	FpFunc       uintptr
 25455  	FiMem        int32
 25456  	FiDistinct   int32
 25457  	FiDistAddr   int32
 25458  	F__ccgo_pad1 [4]byte
 25459  }
 25460  
 25461  type ynVar = i16
 25462  
 25463  type ExprList_item = struct {
 25464  	FpExpr  uintptr
 25465  	FzEName uintptr
 25466  	Ffg     struct {
 25467  		F__ccgo_pad1 [0]uint32
 25468  		FsortFlags   u8
 25469  		F__ccgo_pad2 [3]byte
 25470  		FeEName      uint16
 25471  		F__ccgo_pad3 [2]byte
 25472  	}
 25473  	Fu struct {
 25474  		F__ccgo_pad1 [0]uint32
 25475  		Fx           struct {
 25476  			FiOrderByCol u16
 25477  			FiAlias      u16
 25478  		}
 25479  	}
 25480  	F__ccgo_pad1 [4]byte
 25481  }
 25482  
 25483  type IdList_item = struct {
 25484  	FzName uintptr
 25485  	Fu4    struct {
 25486  		F__ccgo_pad1 [0]uint64
 25487  		Fidx         int32
 25488  		F__ccgo_pad2 [4]byte
 25489  	}
 25490  }
 25491  
 25492  type yDbMask = uint32
 25493  
 25494  type InitData = struct {
 25495  	Fdb          uintptr
 25496  	FpzErrMsg    uintptr
 25497  	FiDb         int32
 25498  	Frc          int32
 25499  	FmInitFlags  u32
 25500  	FnInitRow    u32
 25501  	FmxPage      Pgno
 25502  	F__ccgo_pad1 [4]byte
 25503  }
 25504  
 25505  type Sqlite3Config = struct {
 25506  	FbMemstat            int32
 25507  	FbCoreMutex          u8
 25508  	FbFullMutex          u8
 25509  	FbOpenUri            u8
 25510  	FbUseCis             u8
 25511  	FbSmallMalloc        u8
 25512  	FbExtraSchemaChecks  u8
 25513  	F__ccgo_pad1         [2]byte
 25514  	FmxStrlen            int32
 25515  	FneverCorrupt        int32
 25516  	FszLookaside         int32
 25517  	FnLookaside          int32
 25518  	FnStmtSpill          int32
 25519  	Fm                   sqlite3_mem_methods
 25520  	Fmutex               sqlite3_mutex_methods
 25521  	Fpcache2             sqlite3_pcache_methods2
 25522  	FpHeap               uintptr
 25523  	FnHeap               int32
 25524  	FmnReq               int32
 25525  	FmxReq               int32
 25526  	F__ccgo_pad2         [4]byte
 25527  	FszMmap              sqlite3_int64
 25528  	FmxMmap              sqlite3_int64
 25529  	FpPage               uintptr
 25530  	FszPage              int32
 25531  	FnPage               int32
 25532  	FmxParserStack       int32
 25533  	FsharedCacheEnabled  int32
 25534  	FszPma               u32
 25535  	FisInit              int32
 25536  	FinProgress          int32
 25537  	FisMutexInit         int32
 25538  	FisMallocInit        int32
 25539  	FisPCacheInit        int32
 25540  	FnRefInitMutex       int32
 25541  	F__ccgo_pad3         [4]byte
 25542  	FpInitMutex          uintptr
 25543  	FxLog                uintptr
 25544  	FpLogArg             uintptr
 25545  	FmxMemdbSize         sqlite3_int64
 25546  	FxTestCallback       uintptr
 25547  	FbLocaltimeFault     int32
 25548  	F__ccgo_pad4         [4]byte
 25549  	FxAltLocaltime       uintptr
 25550  	FiOnceResetThreshold int32
 25551  	FszSorterRef         u32
 25552  	FiPrngSeed           uint32
 25553  	F__ccgo_pad5         [4]byte
 25554  }
 25555  
 25556  type BoxGeomCtx1 = struct {
 25557  	Finterp  uintptr
 25558  	FpScript uintptr
 25559  }
 25560  
 25561  type BoxGeomCtx = BoxGeomCtx1
 25562  
 25563  type BoxQueryCtx1 = struct {
 25564  	Finterp  uintptr
 25565  	FpScript uintptr
 25566  }
 25567  
 25568  type BoxQueryCtx = BoxQueryCtx1
 25569  
 25570  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 25571  	var p uintptr = pCtx
 25572  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 25573  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25574  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 25575  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25576  			tcl.XTclFreeObj(tls, _objPtr)
 25577  		}
 25578  	}
 25579  	sqlite3.Xsqlite3_free(tls, p)
 25580  }
 25581  
 25582  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 25583  	bp := tls.Alloc(96)
 25584  	defer tls.Free(96)
 25585  
 25586  	var rc int32 = SQLITE_OK
 25587  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 25588  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 25589  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 25590  		var pScript uintptr = uintptr(0)
 25591  		var pParam uintptr = uintptr(0)
 25592  		var pCoord uintptr = uintptr(0)
 25593  		var ii int32
 25594  		var pRes uintptr
 25595  
 25596  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 25597  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 25598  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 25599  
 25600  		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))
 25601  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25602  
 25603  		pParam = tcl.XTcl_NewObj(tls)
 25604  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 25605  			tcl.XTcl_ListObjAppendElement(tls,
 25606  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 25607  		}
 25608  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 25609  
 25610  		pCoord = tcl.XTcl_NewObj(tls)
 25611  		for ii = 0; ii < nCoord; ii++ {
 25612  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 25613  		}
 25614  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 25615  
 25616  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 25617  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25618  
 25619  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 25620  		if rc != TCL_OK {
 25621  			rc = SQLITE_ERROR
 25622  		} else {
 25623  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 25624  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 25625  
 25626  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 25627  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 25628  				return TCL_ERROR
 25629  			}
 25630  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 25631  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 25632  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 25633  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 25634  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 25635  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 25636  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25637  						rc = SQLITE_ERROR
 25638  					} else {
 25639  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 25640  						if pBGCtx == uintptr(0) {
 25641  							rc = SQLITE_NOMEM
 25642  						} else {
 25643  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 25644  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 25645  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 25646  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 25647  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 25648  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 25649  						}
 25650  					}
 25651  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 25652  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25653  						rc = SQLITE_ERROR
 25654  					}
 25655  				}
 25656  			}
 25657  		}
 25658  	}
 25659  	return rc
 25660  }
 25661  
 25662  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 25663  	var ii int32
 25664  
 25665  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 25666  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 25667  		return SQLITE_ERROR
 25668  	}
 25669  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 25670  		return SQLITE_ERROR
 25671  	}
 25672  
 25673  	for ii = 0; ii < nCoord; ii = ii + 2 {
 25674  		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)) {
 25675  			*(*int32)(unsafe.Pointer(pRes)) = 0
 25676  			return SQLITE_OK
 25677  		}
 25678  	}
 25679  
 25680  	*(*int32)(unsafe.Pointer(pRes)) = 1
 25681  
 25682  	return SQLITE_OK
 25683  }
 25684  
 25685  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25686  	bp := tls.Alloc(80)
 25687  	defer tls.Free(80)
 25688  
 25689  	var pCtx uintptr
 25690  
 25691  	if objc != 3 {
 25692  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25693  		return TCL_ERROR
 25694  	}
 25695  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 25696  		return TCL_ERROR
 25697  	}
 25698  
 25699  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 25700  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25701  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25702  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25703  
 25704  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 25705  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 25706  	}{box_geom})), pCtx)
 25707  
 25708  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 25709  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25710  	return TCL_OK
 25711  }
 25712  
 25713  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 25714  	bp := tls.Alloc(60)
 25715  	defer tls.Free(60)
 25716  
 25717  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 25718  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 25719  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 25720  	var pEval uintptr
 25721  	var pArg uintptr
 25722  	var pTmp uintptr = uintptr(0)
 25723  	var rc int32
 25724  	var ii int32
 25725  
 25726  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 25727  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25728  	pArg = tcl.XTcl_NewObj(tls)
 25729  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 25730  
 25731  	pTmp = tcl.XTcl_NewObj(tls)
 25732  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25733  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 25734  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 25735  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25736  	}
 25737  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 25738  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25739  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25740  		var _objPtr uintptr = pTmp
 25741  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25742  			tcl.XTclFreeObj(tls, _objPtr)
 25743  		}
 25744  	}
 25745  
 25746  	pTmp = tcl.XTcl_NewObj(tls)
 25747  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25748  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 25749  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 25750  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25751  	}
 25752  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 25753  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25754  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 25755  		var _objPtr uintptr = pTmp
 25756  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25757  			tcl.XTclFreeObj(tls, _objPtr)
 25758  		}
 25759  	}
 25760  
 25761  	pTmp = tcl.XTcl_NewObj(tls)
 25762  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25763  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 25764  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 25765  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25766  	}
 25767  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 25768  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25769  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 25770  		var _objPtr uintptr = pTmp
 25771  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25772  			tcl.XTclFreeObj(tls, _objPtr)
 25773  		}
 25774  	}
 25775  
 25776  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 25777  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 25778  
 25779  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 25780  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 25781  
 25782  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 25783  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 25784  
 25785  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 25786  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 25787  
 25788  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 25789  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 25790  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 25791  
 25792  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 25793  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 25794  		rc = SQLITE_ERROR
 25795  	} else {
 25796  		rc = SQLITE_OK
 25797  	}
 25798  
 25799  	if rc == SQLITE_OK {
 25800  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 25801  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 25802  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 25803  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 25804  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 25805  
 25806  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 25807  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 25808  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 25809  			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 {
 25810  			rc = SQLITE_ERROR
 25811  		} else {
 25812  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 25813  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 25814  		}
 25815  	}
 25816  
 25817  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 25818  		var _objPtr uintptr = pArg
 25819  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25820  			tcl.XTclFreeObj(tls, _objPtr)
 25821  		}
 25822  	}
 25823  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 25824  		var _objPtr uintptr = pEval
 25825  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25826  			tcl.XTclFreeObj(tls, _objPtr)
 25827  		}
 25828  	}
 25829  	return rc
 25830  }
 25831  
 25832  func box_query_destroy(tls *libc.TLS, p uintptr) {
 25833  	var pCtx uintptr = p
 25834  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25835  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 25836  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25837  			tcl.XTclFreeObj(tls, _objPtr)
 25838  		}
 25839  	}
 25840  	tcl.XTcl_Free(tls, pCtx)
 25841  }
 25842  
 25843  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25844  	bp := tls.Alloc(8)
 25845  	defer tls.Free(8)
 25846  
 25847  	var pCtx uintptr
 25848  
 25849  	if objc != 3 {
 25850  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25851  		return TCL_ERROR
 25852  	}
 25853  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 25854  		return TCL_ERROR
 25855  	}
 25856  
 25857  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 25858  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25859  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25860  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25861  
 25862  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 25863  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 25864  			f func(*libc.TLS, uintptr) int32
 25865  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 25866  
 25867  	tcl.XTcl_ResetResult(tls, interp)
 25868  	return TCL_OK
 25869  }
 25870  
 25871  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 25872  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 25873  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25874  	}{register_box_geom})), uintptr(0), uintptr(0))
 25875  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 25876  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25877  	}{register_box_query})), uintptr(0), uintptr(0))
 25878  	return TCL_OK
 25879  }
 25880  
 25881  type TestSession1 = struct {
 25882  	FpSession      uintptr
 25883  	Finterp        uintptr
 25884  	FpFilterScript uintptr
 25885  }
 25886  
 25887  type TestSession = TestSession1
 25888  
 25889  type TestStreamInput1 = struct {
 25890  	FnStream     int32
 25891  	F__ccgo_pad1 [4]byte
 25892  	FaData       uintptr
 25893  	FnData       int32
 25894  	FiData       int32
 25895  }
 25896  
 25897  type TestStreamInput = TestStreamInput1
 25898  
 25899  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 25900  	bp := tls.Alloc(88)
 25901  	defer tls.Free(88)
 25902  
 25903  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 25904  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 25905  		return TCL_ERROR
 25906  	}
 25907  
 25908  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25909  	return TCL_OK
 25910  }
 25911  
 25912  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 25913  	bp := tls.Alloc(8)
 25914  	defer tls.Free(8)
 25915  
 25916  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 25917  	var rc int32
 25918  
 25919  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 25920  
 25921  	if rc == SQLITE_OK {
 25922  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 25923  	}
 25924  
 25925  	if rc == SQLITE_OK {
 25926  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 25927  	}
 25928  
 25929  	if rc == SQLITE_OK {
 25930  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 25931  	}
 25932  
 25933  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 25934  
 25935  	return rc
 25936  }
 25937  
 25938  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25939  	bp := tls.Alloc(40)
 25940  	defer tls.Free(40)
 25941  
 25942  	var zSql uintptr
 25943  
 25944  	var rc int32
 25945  
 25946  	if objc != 3 {
 25947  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 25948  		return TCL_ERROR
 25949  	}
 25950  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 25951  		return TCL_ERROR
 25952  	}
 25953  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25954  
 25955  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 25956  	if rc != SQLITE_OK {
 25957  		tcl.XTcl_ResetResult(tls, interp)
 25958  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 25959  		return TCL_ERROR
 25960  	}
 25961  
 25962  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 25963  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 25964  	return TCL_OK
 25965  }
 25966  
 25967  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 25968  	bp := tls.Alloc(4)
 25969  	defer tls.Free(4)
 25970  
 25971  	var pObj uintptr
 25972  	*(*int32)(unsafe.Pointer(bp)) = 0
 25973  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 25974  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 25975  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 25976  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25977  		var _objPtr uintptr = pName
 25978  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25979  			tcl.XTclFreeObj(tls, _objPtr)
 25980  		}
 25981  	}
 25982  	if pObj != 0 {
 25983  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 25984  	}
 25985  	return *(*int32)(unsafe.Pointer(bp))
 25986  }
 25987  
 25988  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 25989  	bp := tls.Alloc(24)
 25990  	defer tls.Free(24)
 25991  
 25992  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 25993  	if zErr != 0 {
 25994  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 25995  		sqlite3.Xsqlite3_free(tls, zErr)
 25996  	}
 25997  	return TCL_ERROR
 25998  }
 25999  
 26000  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 26001  	bp := tls.Alloc(4)
 26002  	defer tls.Free(4)
 26003  
 26004  	var p uintptr = pCtx
 26005  	var pEval uintptr
 26006  	var rc int32
 26007  	*(*int32)(unsafe.Pointer(bp)) = 0
 26008  
 26009  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 26010  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26011  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 26012  	if rc == TCL_OK {
 26013  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 26014  	}
 26015  	if rc == TCL_OK {
 26016  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 26017  	}
 26018  	if rc != TCL_OK {
 26019  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 26020  	}
 26021  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26022  		var _objPtr uintptr = pEval
 26023  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26024  			tcl.XTclFreeObj(tls, _objPtr)
 26025  		}
 26026  	}
 26027  
 26028  	return *(*int32)(unsafe.Pointer(bp))
 26029  }
 26030  
 26031  type TestSessionsBlob1 = struct {
 26032  	Fp           uintptr
 26033  	Fn           int32
 26034  	F__ccgo_pad1 [4]byte
 26035  }
 26036  
 26037  type TestSessionsBlob = TestSessionsBlob1
 26038  
 26039  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 26040  	var pBlob uintptr = pCtx
 26041  	var pNew uintptr
 26042  
 26043  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 26044  	if pNew == uintptr(0) {
 26045  		return SQLITE_NOMEM
 26046  	}
 26047  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 26048  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData))
 26049  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 26050  	return SQLITE_OK
 26051  }
 26052  
 26053  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26054  	bp := tls.Alloc(44)
 26055  	defer tls.Free(44)
 26056  
 26057  	var p uintptr = clientData
 26058  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 26059  
 26060  	var rc int32
 26061  
 26062  	if objc < 2 {
 26063  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26064  		return TCL_ERROR
 26065  	}
 26066  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26067  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 26068  	if rc != TCL_OK {
 26069  		return rc
 26070  	}
 26071  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26072  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26073  		return TCL_ERROR
 26074  	}
 26075  
 26076  	switch *(*int32)(unsafe.Pointer(bp)) {
 26077  	case 0:
 26078  		{
 26079  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26080  			if int32(*(*int8)(unsafe.Pointer(zArg))) == '*' && int32(*(*int8)(unsafe.Pointer(zArg + 1))) == 0 {
 26081  				zArg = uintptr(0)
 26082  			}
 26083  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 26084  			if rc != SQLITE_OK {
 26085  				return test_session_error(tls, interp, rc, uintptr(0))
 26086  			}
 26087  			break
 26088  
 26089  		}
 26090  
 26091  	case 7:
 26092  		fallthrough
 26093  	case 1:
 26094  		{
 26095  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 26096  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 26097  				var pCtx uintptr = bp + 8
 26098  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26099  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26100  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26101  					}{testStreamOutput})), pCtx)
 26102  				} else {
 26103  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26104  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26105  					}{testStreamOutput})), pCtx)
 26106  				}
 26107  			} else {
 26108  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26109  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 26110  				} else {
 26111  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 26112  				}
 26113  			}
 26114  			if rc == SQLITE_OK {
 26115  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 26116  			}
 26117  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 26118  			if rc != SQLITE_OK {
 26119  				return test_session_error(tls, interp, rc, uintptr(0))
 26120  			}
 26121  			break
 26122  
 26123  		}
 26124  
 26125  	case 2:
 26126  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26127  		break
 26128  
 26129  	case 3:
 26130  		{
 26131  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 26132  				return TCL_ERROR
 26133  			}
 26134  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 26135  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24)) != 0)))
 26136  			break
 26137  
 26138  		}
 26139  
 26140  	case 4:
 26141  		{
 26142  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 26143  				return TCL_ERROR
 26144  			}
 26145  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 26146  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 28)) != 0)))
 26147  			break
 26148  
 26149  		}
 26150  
 26151  	case 5:
 26152  		{
 26153  			var val int32
 26154  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 26155  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 26156  			break
 26157  
 26158  		}
 26159  
 26160  	case 6:
 26161  		{
 26162  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26163  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26164  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26165  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26166  						tcl.XTclFreeObj(tls, _objPtr)
 26167  					}
 26168  				}
 26169  			}
 26170  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 26171  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 26172  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 26173  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26174  				f func(*libc.TLS, uintptr, uintptr) int32
 26175  			}{test_table_filter})), clientData)
 26176  			break
 26177  
 26178  		}
 26179  
 26180  	case 8:
 26181  		{
 26182  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 26183  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 26184  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 26185  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 26186  				bp+32)
 26187  
 26188  			if rc != 0 {
 26189  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26190  			}
 26191  			break
 26192  
 26193  		}
 26194  
 26195  	case 9:
 26196  		{
 26197  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 26198  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 26199  			break
 26200  
 26201  		}
 26202  
 26203  	case 10:
 26204  		{
 26205  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 26206  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 26207  			break
 26208  
 26209  		}
 26210  	case 11:
 26211  		{
 26212  			var rc int32
 26213  
 26214  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 26215  				return TCL_ERROR
 26216  			}
 26217  			rc = sqlite3.Xsqlite3session_object_config(tls,
 26218  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 26219  			if rc != SQLITE_OK {
 26220  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26221  			} else {
 26222  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 26223  			}
 26224  			break
 26225  
 26226  		}
 26227  	}
 26228  
 26229  	return TCL_OK
 26230  }
 26231  
 26232  type SessionSubcmd = struct {
 26233  	FzSub        uintptr
 26234  	FnArg        int32
 26235  	F__ccgo_pad1 [4]byte
 26236  	FzMsg        uintptr
 26237  	FiSub        int32
 26238  	F__ccgo_pad2 [4]byte
 26239  }
 26240  
 26241  var aSub = [13]SessionSubcmd{
 26242  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 26243  	{FzSub: ts + 10128, FzMsg: ts + 584},
 26244  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26245  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 26246  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 26247  	{FzSub: ts + 10166, FzMsg: ts + 584},
 26248  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 26249  	{FzSub: ts + 10194, FzMsg: ts + 584},
 26250  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 26251  	{FzSub: ts + 10219, FzMsg: ts + 584},
 26252  	{FzSub: ts + 10231, FzMsg: ts + 584},
 26253  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 26254  	{},
 26255  }
 26256  
 26257  func test_session_del(tls *libc.TLS, clientData uintptr) {
 26258  	var p uintptr = clientData
 26259  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26260  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26261  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26262  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26263  				tcl.XTclFreeObj(tls, _objPtr)
 26264  			}
 26265  		}
 26266  	}
 26267  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 26268  	tcl.XTcl_Free(tls, p)
 26269  }
 26270  
 26271  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26272  	bp := tls.Alloc(92)
 26273  	defer tls.Free(92)
 26274  
 26275  	var db uintptr
 26276  
 26277  	var rc int32
 26278  	var p uintptr
 26279  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 26280  
 26281  	if objc != 4 {
 26282  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 26283  		return TCL_ERROR
 26284  	}
 26285  
 26286  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 26287  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26288  		return TCL_ERROR
 26289  	}
 26290  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26291  
 26292  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 26293  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})))
 26294  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 26295  	if rc != SQLITE_OK {
 26296  		tcl.XTcl_Free(tls, p)
 26297  		return test_session_error(tls, interp, rc, uintptr(0))
 26298  	}
 26299  
 26300  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26301  
 26302  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 26303  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 26304  
 26305  	tcl.XTcl_CreateObjCommand(tls,
 26306  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 26307  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26308  		}{test_session_cmd})), p,
 26309  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 26310  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26311  	return TCL_OK
 26312  }
 26313  
 26314  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 26315  	if pVal == uintptr(0) {
 26316  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26317  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26318  	} else {
 26319  		var pObj uintptr
 26320  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 26321  		case SQLITE_NULL:
 26322  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 26323  			pObj = tcl.XTcl_NewObj(tls)
 26324  			break
 26325  			fallthrough
 26326  		case SQLITE_INTEGER:
 26327  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 26328  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 26329  			break
 26330  			fallthrough
 26331  		case SQLITE_FLOAT:
 26332  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 26333  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 26334  			break
 26335  			fallthrough
 26336  		case SQLITE_TEXT:
 26337  			{
 26338  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 26339  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 26340  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 26341  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 26342  				break
 26343  
 26344  			}
 26345  			fallthrough
 26346  		default:
 26347  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 26348  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 26349  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 26350  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 26351  			break
 26352  		}
 26353  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 26354  	}
 26355  }
 26356  
 26357  type TestConflictHandler1 = struct {
 26358  	Finterp          uintptr
 26359  	FpConflictScript uintptr
 26360  	FpFilterScript   uintptr
 26361  }
 26362  
 26363  type TestConflictHandler = TestConflictHandler1
 26364  
 26365  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 26366  	bp := tls.Alloc(4)
 26367  	defer tls.Free(4)
 26368  
 26369  	var n int32
 26370  
 26371  	var zObj uintptr
 26372  
 26373  	n = int32(libc.Xstrlen(tls, z))
 26374  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 26375  
 26376  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 26377  }
 26378  
 26379  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 26380  	bp := tls.Alloc(4)
 26381  	defer tls.Free(4)
 26382  
 26383  	var p uintptr = pCtx
 26384  	*(*int32)(unsafe.Pointer(bp)) = 1
 26385  	var pEval uintptr
 26386  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26387  
 26388  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 26389  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26390  
 26391  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 26392  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 26393  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 26394  		tcl.XTcl_BackgroundError(tls, interp)
 26395  	}
 26396  
 26397  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26398  		var _objPtr uintptr = pEval
 26399  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26400  			tcl.XTclFreeObj(tls, _objPtr)
 26401  		}
 26402  	}
 26403  	return *(*int32)(unsafe.Pointer(bp))
 26404  }
 26405  
 26406  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26407  	bp := tls.Alloc(104)
 26408  	defer tls.Free(104)
 26409  
 26410  	var p uintptr = pCtx
 26411  	var pEval uintptr
 26412  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26413  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 26414  
 26415  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 26416  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26417  
 26418  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26419  
 26420  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 26421  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 26422  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 26423  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 26424  	} else {
 26425  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 26426  			func() uintptr {
 26427  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26428  					return ts + 10307
 26429  				}
 26430  				return func() uintptr {
 26431  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 26432  						return ts + 10314
 26433  					}
 26434  					return ts + 10321
 26435  				}()
 26436  			}(), -1))
 26437  
 26438  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26439  
 26440  		switch eConf {
 26441  		case SQLITE_CHANGESET_DATA:
 26442  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26443  			break
 26444  			fallthrough
 26445  		case SQLITE_CHANGESET_NOTFOUND:
 26446  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26447  			break
 26448  			fallthrough
 26449  		case SQLITE_CHANGESET_CONFLICT:
 26450  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 26451  			break
 26452  			fallthrough
 26453  		case SQLITE_CHANGESET_CONSTRAINT:
 26454  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 26455  			break
 26456  		}
 26457  
 26458  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26459  			var i int32
 26460  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 26461  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26462  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 26463  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26464  			}
 26465  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 26466  		}
 26467  
 26468  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26469  			var i int32
 26470  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 26471  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26472  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 26473  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26474  			}
 26475  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 26476  		}
 26477  
 26478  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 26479  			var i int32
 26480  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 26481  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26482  				var rc int32
 26483  				_ = rc
 26484  
 26485  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 26486  
 26487  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 26488  			}
 26489  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 26490  		}
 26491  
 26492  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 26493  			eConf == SQLITE_CHANGESET_NOTFOUND {
 26494  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 26495  			_ = rc
 26496  
 26497  		} else {
 26498  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 26499  			_ = rc
 26500  
 26501  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 26502  
 26503  		}
 26504  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 26505  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 26506  			_ = rc
 26507  
 26508  		} else {
 26509  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 26510  			_ = rc
 26511  
 26512  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 26513  
 26514  		}
 26515  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26516  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 26517  			_ = rc
 26518  
 26519  		} else {
 26520  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 26521  			_ = rc
 26522  
 26523  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 26524  
 26525  		}
 26526  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 26527  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 26528  			_ = rc
 26529  
 26530  		}
 26531  
 26532  	}
 26533  
 26534  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 26535  		tcl.XTcl_BackgroundError(tls, interp)
 26536  	} else {
 26537  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26538  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 26539  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 26540  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 26541  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 26542  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 26543  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 26544  		} else {
 26545  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 26546  		}
 26547  	}
 26548  
 26549  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26550  		var _objPtr uintptr = pEval
 26551  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26552  			tcl.XTclFreeObj(tls, _objPtr)
 26553  		}
 26554  	}
 26555  	return *(*int32)(unsafe.Pointer(bp + 100))
 26556  }
 26557  
 26558  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26559  	bp := tls.Alloc(32)
 26560  	defer tls.Free(32)
 26561  
 26562  	var i int32
 26563  	var x int32 = 0
 26564  
 26565  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26566  
 26567  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26568  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26569  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 26570  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26571  			x++
 26572  		}
 26573  	}
 26574  
 26575  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26576  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26577  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 26578  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26579  			x++
 26580  		}
 26581  	}
 26582  
 26583  	if eConf == SQLITE_CHANGESET_DATA {
 26584  		return SQLITE_CHANGESET_REPLACE
 26585  	}
 26586  	return SQLITE_CHANGESET_OMIT
 26587  }
 26588  
 26589  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 26590  	var p uintptr = pCtx
 26591  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 26592  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 26593  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 26594  
 26595  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 26596  	if pAlloc == uintptr(0) {
 26597  		return SQLITE_NOMEM
 26598  	}
 26599  	sqlite3.Xsqlite3_free(tls, pAlloc)
 26600  
 26601  	if nRet > nReq {
 26602  		nRet = nReq
 26603  	}
 26604  	if nRet > nRem {
 26605  		nRet = nRem
 26606  	}
 26607  
 26608  	if nRet > 0 {
 26609  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet))
 26610  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 26611  	}
 26612  
 26613  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 26614  	return SQLITE_OK
 26615  }
 26616  
 26617  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26618  	bp := tls.Alloc(156)
 26619  	defer tls.Free(156)
 26620  
 26621  	var db uintptr
 26622  
 26623  	var rc int32
 26624  	var pChangeset uintptr
 26625  
 26626  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 26627  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 26628  	var flags int32 = 0
 26629  
 26630  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26631  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26632  
 26633  	if bV2 != 0 {
 26634  		if objc > 1 {
 26635  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26636  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26637  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 26638  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 26639  				objc--
 26640  				objv += 8
 26641  			}
 26642  		}
 26643  		if objc > 1 {
 26644  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26645  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26646  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 26647  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 26648  				objc--
 26649  				objv += 8
 26650  			}
 26651  		}
 26652  	}
 26653  
 26654  	if objc != 4 && objc != 5 {
 26655  		var zMsg uintptr
 26656  		if bV2 != 0 {
 26657  			zMsg = ts + 10388
 26658  		} else {
 26659  			zMsg = ts + 10459
 26660  		}
 26661  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 26662  		return TCL_ERROR
 26663  	}
 26664  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 26665  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 26666  		return TCL_ERROR
 26667  	}
 26668  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 26669  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 26670  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26671  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 26672  		if objc == 5 {
 26673  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 26674  		}
 26675  		return uintptr(0)
 26676  	}()
 26677  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 26678  
 26679  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 26680  		if bV2 == 0 {
 26681  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26682  				func() uintptr {
 26683  					if objc == 5 {
 26684  						return *(*uintptr)(unsafe.Pointer(&struct {
 26685  							f func(*libc.TLS, uintptr, uintptr) int32
 26686  						}{test_filter_handler}))
 26687  					}
 26688  					return uintptr(0)
 26689  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26690  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26691  				}{test_conflict_handler})), bp+120)
 26692  		} else {
 26693  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26694  				func() uintptr {
 26695  					if objc == 5 {
 26696  						return *(*uintptr)(unsafe.Pointer(&struct {
 26697  							f func(*libc.TLS, uintptr, uintptr) int32
 26698  						}{test_filter_handler}))
 26699  					}
 26700  					return uintptr(0)
 26701  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26702  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26703  				}{test_conflict_handler})), bp+120,
 26704  				bp+144, bp+152, flags)
 26705  		}
 26706  	} else {
 26707  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 26708  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 26709  		if bV2 == 0 {
 26710  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26711  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26712  			}{testStreamInput})), bp+24,
 26713  				func() uintptr {
 26714  					if objc == 5 {
 26715  						return *(*uintptr)(unsafe.Pointer(&struct {
 26716  							f func(*libc.TLS, uintptr, uintptr) int32
 26717  						}{test_filter_handler}))
 26718  					}
 26719  					return uintptr(0)
 26720  				}(),
 26721  				*(*uintptr)(unsafe.Pointer(&struct {
 26722  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26723  				}{test_conflict_handler})), bp+120)
 26724  		} else {
 26725  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26726  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26727  			}{testStreamInput})), bp+24,
 26728  				func() uintptr {
 26729  					if objc == 5 {
 26730  						return *(*uintptr)(unsafe.Pointer(&struct {
 26731  							f func(*libc.TLS, uintptr, uintptr) int32
 26732  						}{test_filter_handler}))
 26733  					}
 26734  					return uintptr(0)
 26735  				}(),
 26736  				*(*uintptr)(unsafe.Pointer(&struct {
 26737  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26738  				}{test_conflict_handler})), bp+120,
 26739  				bp+144, bp+152, flags)
 26740  		}
 26741  	}
 26742  
 26743  	if rc != SQLITE_OK {
 26744  		return test_session_error(tls, interp, rc, uintptr(0))
 26745  	} else {
 26746  		tcl.XTcl_ResetResult(tls, interp)
 26747  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 26748  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 26749  		}
 26750  	}
 26751  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 26752  	return TCL_OK
 26753  }
 26754  
 26755  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26756  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 26757  }
 26758  
 26759  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26760  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 26761  }
 26762  
 26763  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26764  	bp := tls.Alloc(92)
 26765  	defer tls.Free(92)
 26766  
 26767  	var db uintptr
 26768  
 26769  	var rc int32
 26770  	var pChangeset uintptr
 26771  
 26772  	if objc != 3 {
 26773  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 26774  		return TCL_ERROR
 26775  	}
 26776  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 26777  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26778  		return TCL_ERROR
 26779  	}
 26780  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26781  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 26782  
 26783  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 26784  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 26785  	}{replace_handler})), uintptr(0))
 26786  	if rc != SQLITE_OK {
 26787  		return test_session_error(tls, interp, rc, uintptr(0))
 26788  	}
 26789  	tcl.XTcl_ResetResult(tls, interp)
 26790  	return TCL_OK
 26791  }
 26792  
 26793  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26794  	bp := tls.Alloc(40)
 26795  	defer tls.Free(40)
 26796  
 26797  	var rc int32
 26798  
 26799  	if objc != 2 {
 26800  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 26801  		return TCL_ERROR
 26802  	}
 26803  
 26804  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26805  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 26806  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26807  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26808  
 26809  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 26810  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 26811  			*(*uintptr)(unsafe.Pointer(&struct {
 26812  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26813  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 26814  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26815  			}{testStreamOutput})), bp+24)
 26816  	} else {
 26817  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 26818  	}
 26819  	if rc != SQLITE_OK {
 26820  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26821  	} else {
 26822  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 26823  	}
 26824  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 26825  	return rc
 26826  }
 26827  
 26828  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26829  	bp := tls.Alloc(64)
 26830  	defer tls.Free(64)
 26831  
 26832  	var rc int32
 26833  
 26834  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 26835  
 26836  	if objc != 3 {
 26837  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 26838  		return TCL_ERROR
 26839  	}
 26840  
 26841  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26842  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26843  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26844  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 26845  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26846  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 26847  
 26848  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 26849  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 26850  			*(*uintptr)(unsafe.Pointer(&struct {
 26851  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26852  			}{testStreamInput})), bp,
 26853  			*(*uintptr)(unsafe.Pointer(&struct {
 26854  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26855  			}{testStreamInput})), bp+24,
 26856  			*(*uintptr)(unsafe.Pointer(&struct {
 26857  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26858  			}{testStreamOutput})), bp+48)
 26859  	} else {
 26860  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 26861  			(*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)
 26862  	}
 26863  
 26864  	if rc != SQLITE_OK {
 26865  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26866  	} else {
 26867  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 26868  	}
 26869  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 26870  	return rc
 26871  }
 26872  
 26873  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26874  	bp := tls.Alloc(104)
 26875  	defer tls.Free(104)
 26876  
 26877  	var pChangeset uintptr
 26878  
 26879  	var rc int32
 26880  	var pVarname uintptr
 26881  	var pCS uintptr
 26882  	var pScript uintptr
 26883  	var isCheckNext int32 = 0
 26884  	var isInvert int32 = 0
 26885  
 26886  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26887  
 26888  	for objc > 1 {
 26889  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26890  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 26891  		if int32(*(*int8)(unsafe.Pointer(zOpt))) != '-' {
 26892  			break
 26893  		}
 26894  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 26895  			isInvert = 1
 26896  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 26897  			isCheckNext = 1
 26898  		} else {
 26899  			break
 26900  		}
 26901  		objv += 8
 26902  		objc--
 26903  	}
 26904  	if objc != 4 {
 26905  		tcl.XTcl_WrongNumArgs(tls,
 26906  			interp, 1, objv, ts+10544)
 26907  		return TCL_ERROR
 26908  	}
 26909  
 26910  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 26911  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 26912  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26913  
 26914  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 26915  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26916  	if isInvert != 0 {
 26917  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 26918  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26919  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 26920  		} else {
 26921  			var pCtx uintptr = bp
 26922  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26923  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26924  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26925  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26926  			}{testStreamInput})), pCtx, f)
 26927  		}
 26928  	} else {
 26929  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26930  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 26931  		} else {
 26932  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26933  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26934  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26935  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26936  			}{testStreamInput})), bp)
 26937  		}
 26938  	}
 26939  	if rc != SQLITE_OK {
 26940  		return test_session_error(tls, interp, rc, uintptr(0))
 26941  	}
 26942  
 26943  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 26944  		var pVar uintptr
 26945  		var pOld uintptr
 26946  		var pNew uintptr
 26947  
 26948  		var zPK uintptr
 26949  
 26950  		var i int32
 26951  
 26952  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 26953  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26954  			return TCL_ERROR
 26955  		}
 26956  
 26957  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 26958  		pVar = tcl.XTcl_NewObj(tls)
 26959  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 26960  			func() uintptr {
 26961  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 26962  					return ts + 10307
 26963  				}
 26964  				return func() uintptr {
 26965  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 26966  						return ts + 10314
 26967  					}
 26968  					return ts + 10321
 26969  				}()
 26970  			}(), -1))
 26971  
 26972  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 26973  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 64)) != 0)))
 26974  
 26975  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26976  		libc.Xmemset(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26977  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 26978  
 26979  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26980  			*(*int8)(unsafe.Pointer(zPK + uintptr(i))) = func() int8 {
 26981  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 26982  					return int8('X')
 26983  				}
 26984  				return int8('.')
 26985  			}()
 26986  		}
 26987  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 26988  		tcl.XTcl_Free(tls, zPK)
 26989  
 26990  		pOld = tcl.XTcl_NewObj(tls)
 26991  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 26992  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26993  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 26994  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 26995  			}
 26996  		}
 26997  		pNew = tcl.XTcl_NewObj(tls)
 26998  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 26999  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 27000  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 27001  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 27002  			}
 27003  		}
 27004  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 27005  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 27006  
 27007  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 27008  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 27009  		if rc != TCL_OK && rc != TCL_CONTINUE {
 27010  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27011  			if rc == TCL_BREAK {
 27012  				return TCL_OK
 27013  			}
 27014  			return rc
 27015  		}
 27016  	}
 27017  
 27018  	if isCheckNext != 0 {
 27019  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27020  		_ = rc2
 27021  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27022  
 27023  	} else {
 27024  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 27025  	}
 27026  	if rc != SQLITE_OK {
 27027  		return test_session_error(tls, interp, rc, uintptr(0))
 27028  	}
 27029  
 27030  	return TCL_OK
 27031  }
 27032  
 27033  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27034  	bp := tls.Alloc(48)
 27035  	defer tls.Free(48)
 27036  
 27037  	var p uintptr = clientData
 27038  
 27039  	var rc int32
 27040  
 27041  	if objc < 2 {
 27042  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 27043  		return TCL_ERROR
 27044  	}
 27045  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27046  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 27047  	if rc != TCL_OK {
 27048  		return rc
 27049  	}
 27050  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 27051  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 27052  		return TCL_ERROR
 27053  	}
 27054  
 27055  	switch *(*int32)(unsafe.Pointer(bp)) {
 27056  	case 0:
 27057  		{
 27058  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 27059  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 27060  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 27061  			break
 27062  
 27063  		}
 27064  
 27065  	case 1:
 27066  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 27067  		break
 27068  
 27069  	default:
 27070  		{
 27071  			libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 27072  			libc.Xmemset(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 27073  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 27074  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27075  
 27076  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 27077  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 27078  					*(*uintptr)(unsafe.Pointer(&struct {
 27079  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27080  					}{testStreamInput})), bp+8,
 27081  					*(*uintptr)(unsafe.Pointer(&struct {
 27082  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 27083  					}{testStreamOutput})), bp+32)
 27084  			} else {
 27085  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 27086  			}
 27087  
 27088  			if rc == SQLITE_OK {
 27089  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 27090  			}
 27091  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 27092  			break
 27093  
 27094  		}
 27095  	}
 27096  
 27097  	if rc != SQLITE_OK {
 27098  		return test_session_error(tls, interp, rc, uintptr(0))
 27099  	}
 27100  	return TCL_OK
 27101  }
 27102  
 27103  type RebaseSubcmd = struct {
 27104  	FzSub        uintptr
 27105  	FnArg        int32
 27106  	F__ccgo_pad1 [4]byte
 27107  	FzMsg        uintptr
 27108  	FiSub        int32
 27109  	F__ccgo_pad2 [4]byte
 27110  }
 27111  
 27112  var aSub1 = [4]RebaseSubcmd{
 27113  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 27114  	{FzSub: ts + 10138, FzMsg: ts + 584},
 27115  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 27116  	{},
 27117  }
 27118  
 27119  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 27120  	var p uintptr = clientData
 27121  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 27122  }
 27123  
 27124  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27125  	bp := tls.Alloc(8)
 27126  	defer tls.Free(8)
 27127  
 27128  	var rc int32
 27129  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 27130  	if objc != 2 {
 27131  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 27132  		return SQLITE_ERROR
 27133  	}
 27134  
 27135  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 27136  	if rc != SQLITE_OK {
 27137  		return test_session_error(tls, interp, rc, uintptr(0))
 27138  	}
 27139  
 27140  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 27141  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27142  	}{test_rebaser_cmd})),
 27143  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 27144  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 27145  	return TCL_OK
 27146  }
 27147  
 27148  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27149  	bp := tls.Alloc(8)
 27150  	defer tls.Free(8)
 27151  
 27152  	var rc int32
 27153  
 27154  	if objc != 3 {
 27155  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 27156  		return SQLITE_ERROR
 27157  	}
 27158  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27159  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 27160  	if rc != TCL_OK {
 27161  		return rc
 27162  	}
 27163  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 27164  		return TCL_ERROR
 27165  	}
 27166  
 27167  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 27168  	if rc != SQLITE_OK {
 27169  		return test_session_error(tls, interp, rc, uintptr(0))
 27170  	}
 27171  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 27172  	return TCL_OK
 27173  }
 27174  
 27175  type ConfigOpt = struct {
 27176  	FzSub        uintptr
 27177  	Fop          int32
 27178  	F__ccgo_pad1 [4]byte
 27179  }
 27180  
 27181  var aSub2 = [3]ConfigOpt{
 27182  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 27183  	{FzSub: ts + 2758},
 27184  	{},
 27185  }
 27186  
 27187  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 27188  	bp := tls.Alloc(160)
 27189  	defer tls.Free(160)
 27190  
 27191  	*(*[10]struct {
 27192  		FzCmd  uintptr
 27193  		FxProc uintptr
 27194  	})(unsafe.Pointer(bp)) = [10]struct {
 27195  		FzCmd  uintptr
 27196  		FxProc uintptr
 27197  	}{
 27198  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27199  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27200  		}{test_sqlite3session}))},
 27201  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27202  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27203  		}{test_sqlite3session_foreach}))},
 27204  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27205  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27206  		}{test_sqlite3changeset_invert}))},
 27207  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27208  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27209  		}{test_sqlite3changeset_concat}))},
 27210  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27211  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27212  		}{test_sqlite3changeset_apply}))},
 27213  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27214  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27215  		}{test_sqlite3changeset_apply_v2}))},
 27216  		{FzCmd: ts + 10770,
 27217  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27218  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27219  			}{test_sqlite3changeset_apply_replace_all}))},
 27220  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27221  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27222  		}{test_sql_exec_changeset}))},
 27223  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27224  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27225  		}{test_sqlite3rebaser_create}))},
 27226  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27227  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27228  		}{test_sqlite3session_config}))},
 27229  	}
 27230  	var i int32
 27231  
 27232  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 27233  		FzCmd  uintptr
 27234  		FxProc uintptr
 27235  	}{}))/uint64(unsafe.Sizeof(struct {
 27236  		FzCmd  uintptr
 27237  		FxProc uintptr
 27238  	}{})); i++ {
 27239  		var p uintptr = bp + uintptr(i)*16
 27240  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 27241  			FzCmd  uintptr
 27242  			FxProc uintptr
 27243  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 27244  			FzCmd  uintptr
 27245  			FxProc uintptr
 27246  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 27247  	}
 27248  
 27249  	return TCL_OK
 27250  }
 27251  
 27252  type sig_atomic_t = int64
 27253  
 27254  type sigcontext = struct {
 27255  	Fsc_mask          struct{ F__bits [4]uint32 }
 27256  	Fsc_onstack       int64
 27257  	Fsc_rdi           int64
 27258  	Fsc_rsi           int64
 27259  	Fsc_rdx           int64
 27260  	Fsc_rcx           int64
 27261  	Fsc_r8            int64
 27262  	Fsc_r9            int64
 27263  	Fsc_rax           int64
 27264  	Fsc_rbx           int64
 27265  	Fsc_rbp           int64
 27266  	Fsc_r10           int64
 27267  	Fsc_r11           int64
 27268  	Fsc_r12           int64
 27269  	Fsc_r13           int64
 27270  	Fsc_r14           int64
 27271  	Fsc_r15           int64
 27272  	Fsc_trapno        int32
 27273  	Fsc_fs            int16
 27274  	Fsc_gs            int16
 27275  	Fsc_addr          int64
 27276  	Fsc_flags         int32
 27277  	Fsc_es            int16
 27278  	Fsc_ds            int16
 27279  	Fsc_err           int64
 27280  	Fsc_rip           int64
 27281  	Fsc_cs            int64
 27282  	Fsc_rflags        int64
 27283  	Fsc_rsp           int64
 27284  	Fsc_ss            int64
 27285  	Fsc_len           int64
 27286  	Fsc_fpformat      int64
 27287  	Fsc_ownedfp       int64
 27288  	Fsc_fpstate       [64]int64
 27289  	Fsc_fsbase        int64
 27290  	Fsc_gsbase        int64
 27291  	Fsc_xfpustate     int64
 27292  	Fsc_xfpustate_len int64
 27293  	Fsc_spare         [4]int64
 27294  }
 27295  
 27296  type sigval = struct {
 27297  	F__ccgo_pad1 [0]uint64
 27298  	Fsival_int   int32
 27299  	F__ccgo_pad2 [4]byte
 27300  }
 27301  
 27302  type __siginfo = struct {
 27303  	Fsi_signo  int32
 27304  	Fsi_errno  int32
 27305  	Fsi_code   int32
 27306  	Fsi_pid    int32
 27307  	Fsi_uid    uint32
 27308  	Fsi_status int32
 27309  	Fsi_addr   uintptr
 27310  	Fsi_value  struct {
 27311  		F__ccgo_pad1 [0]uint64
 27312  		Fsival_int   int32
 27313  		F__ccgo_pad2 [4]byte
 27314  	}
 27315  	F_reason struct {
 27316  		F__ccgo_pad1 [0]uint64
 27317  		F_fault      struct{ F_trapno int32 }
 27318  		F__ccgo_pad2 [36]byte
 27319  	}
 27320  }
 27321  
 27322  type siginfo_t = __siginfo
 27323  
 27324  type sigaction = struct {
 27325  	F__sigaction_u struct{ F__sa_handler uintptr }
 27326  	Fsa_flags      int32
 27327  	Fsa_mask       sigset_t
 27328  	F__ccgo_pad1   [4]byte
 27329  }
 27330  
 27331  type sig_t = uintptr
 27332  
 27333  type sigaltstack = struct {
 27334  	Fss_sp       uintptr
 27335  	Fss_size     uint64
 27336  	Fss_flags    int32
 27337  	F__ccgo_pad1 [4]byte
 27338  }
 27339  
 27340  type stack_t = sigaltstack
 27341  
 27342  type sigvec = struct {
 27343  	Fsv_handler uintptr
 27344  	Fsv_mask    int32
 27345  	Fsv_flags   int32
 27346  }
 27347  
 27348  type sigstack = struct {
 27349  	Fss_sp       uintptr
 27350  	Fss_onstack  int32
 27351  	F__ccgo_pad1 [4]byte
 27352  }
 27353  
 27354  type __mcontext = struct {
 27355  	Fmc_onstack       int64
 27356  	Fmc_rdi           int64
 27357  	Fmc_rsi           int64
 27358  	Fmc_rdx           int64
 27359  	Fmc_rcx           int64
 27360  	Fmc_r8            int64
 27361  	Fmc_r9            int64
 27362  	Fmc_rax           int64
 27363  	Fmc_rbx           int64
 27364  	Fmc_rbp           int64
 27365  	Fmc_r10           int64
 27366  	Fmc_r11           int64
 27367  	Fmc_r12           int64
 27368  	Fmc_r13           int64
 27369  	Fmc_r14           int64
 27370  	Fmc_r15           int64
 27371  	Fmc_trapno        uint32
 27372  	Fmc_fs            uint16
 27373  	Fmc_gs            uint16
 27374  	Fmc_addr          int64
 27375  	Fmc_flags         uint32
 27376  	Fmc_es            uint16
 27377  	Fmc_ds            uint16
 27378  	Fmc_err           int64
 27379  	Fmc_rip           int64
 27380  	Fmc_cs            int64
 27381  	Fmc_rflags        int64
 27382  	Fmc_rsp           int64
 27383  	Fmc_ss            int64
 27384  	Fmc_len           int64
 27385  	Fmc_fpformat      int64
 27386  	Fmc_ownedfp       int64
 27387  	Fmc_fpstate       [64]int64
 27388  	Fmc_fsbase        int64
 27389  	Fmc_gsbase        int64
 27390  	Fmc_xfpustate     int64
 27391  	Fmc_xfpustate_len int64
 27392  	Fmc_spare         [4]int64
 27393  }
 27394  
 27395  type mcontext_t = __mcontext
 27396  
 27397  type __ucontext = struct {
 27398  	Fuc_sigmask  struct{ F__bits [4]uint32 }
 27399  	Fuc_mcontext mcontext_t
 27400  	Fuc_link     uintptr
 27401  	Fuc_stack    struct {
 27402  		Fss_sp       uintptr
 27403  		Fss_size     uint64
 27404  		Fss_flags    int32
 27405  		F__ccgo_pad1 [4]byte
 27406  	}
 27407  	Fuc_flags    int32
 27408  	F__spare__   [4]int32
 27409  	F__ccgo_pad1 [4]byte
 27410  }
 27411  
 27412  type ucontext_t = __ucontext
 27413  
 27414  type SqliteDb = struct {
 27415  	Fdb             uintptr
 27416  	Finterp         uintptr
 27417  	FzBusy          uintptr
 27418  	FzCommit        uintptr
 27419  	FzTrace         uintptr
 27420  	FzTraceV2       uintptr
 27421  	FzProfile       uintptr
 27422  	FzProgress      uintptr
 27423  	FzBindFallback  uintptr
 27424  	FzAuth          uintptr
 27425  	FdisableAuth    int32
 27426  	F__ccgo_pad1    [4]byte
 27427  	FzNull          uintptr
 27428  	FpFunc          uintptr
 27429  	FpUpdateHook    uintptr
 27430  	FpPreUpdateHook uintptr
 27431  	FpRollbackHook  uintptr
 27432  	FpWalHook       uintptr
 27433  	FpUnlockNotify  uintptr
 27434  	FpCollate       uintptr
 27435  	Frc             int32
 27436  	F__ccgo_pad2    [4]byte
 27437  	FpCollateNeeded uintptr
 27438  	FstmtList       uintptr
 27439  	FstmtLast       uintptr
 27440  	FmaxStmt        int32
 27441  	FnStmt          int32
 27442  	FpIncrblob      uintptr
 27443  	FnStep          int32
 27444  	FnSort          int32
 27445  	FnIndex         int32
 27446  	FnVMStep        int32
 27447  	FnTransaction   int32
 27448  	FopenFlags      int32
 27449  	FnRef           int32
 27450  	FbLegacyPrepare int32
 27451  }
 27452  
 27453  type SqlFunc1 = struct {
 27454  	Finterp      uintptr
 27455  	FpScript     uintptr
 27456  	FpDb         uintptr
 27457  	FuseEvalObjv int32
 27458  	FeType       int32
 27459  	FzName       uintptr
 27460  	FpNext       uintptr
 27461  }
 27462  
 27463  type SqlFunc = SqlFunc1
 27464  
 27465  type SqlCollate1 = struct {
 27466  	Finterp  uintptr
 27467  	FzScript uintptr
 27468  	FpNext   uintptr
 27469  }
 27470  
 27471  type SqlCollate = SqlCollate1
 27472  
 27473  type SqlPreparedStmt1 = struct {
 27474  	FpNext       uintptr
 27475  	FpPrev       uintptr
 27476  	FpStmt       uintptr
 27477  	FnSql        int32
 27478  	F__ccgo_pad1 [4]byte
 27479  	FzSql        uintptr
 27480  	FnParm       int32
 27481  	F__ccgo_pad2 [4]byte
 27482  	FapParm      uintptr
 27483  }
 27484  
 27485  type SqlPreparedStmt = SqlPreparedStmt1
 27486  
 27487  type IncrblobChannel1 = struct {
 27488  	FpBlob       uintptr
 27489  	FpDb         uintptr
 27490  	FiSeek       int32
 27491  	F__ccgo_pad1 [4]byte
 27492  	Fchannel     Tcl_Channel
 27493  	FpNext       uintptr
 27494  	FpPrev       uintptr
 27495  }
 27496  
 27497  type IncrblobChannel = IncrblobChannel1
 27498  
 27499  func strlen30(tls *libc.TLS, z uintptr) int32 {
 27500  	var z2 uintptr = z
 27501  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 27502  		z2++
 27503  	}
 27504  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 27505  }
 27506  
 27507  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 27508  	var p uintptr
 27509  	var pNext uintptr
 27510  
 27511  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 27512  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27513  
 27514  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27515  	}
 27516  }
 27517  
 27518  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 27519  	var p uintptr = instanceData
 27520  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27521  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 27522  
 27523  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27524  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 27525  	}
 27526  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 27527  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27528  	}
 27529  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 27530  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27531  	}
 27532  
 27533  	tcl.XTcl_Free(tls, p)
 27534  
 27535  	if rc != SQLITE_OK {
 27536  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 27537  		return TCL_ERROR
 27538  	}
 27539  	return TCL_OK
 27540  }
 27541  
 27542  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 27543  	var p uintptr = instanceData
 27544  	var nRead int32 = bufSize
 27545  	var nBlob int32
 27546  	var rc int32
 27547  
 27548  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27549  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 27550  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27551  	}
 27552  	if nRead <= 0 {
 27553  		return 0
 27554  	}
 27555  
 27556  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27557  	if rc != SQLITE_OK {
 27558  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 27559  		return -1
 27560  	}
 27561  
 27562  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 27563  	return nRead
 27564  }
 27565  
 27566  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 27567  	var p uintptr = instanceData
 27568  	var nWrite int32 = toWrite
 27569  	var nBlob int32
 27570  	var rc int32
 27571  
 27572  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27573  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 27574  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 27575  		return -1
 27576  	}
 27577  	if nWrite <= 0 {
 27578  		return 0
 27579  	}
 27580  
 27581  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27582  	if rc != SQLITE_OK {
 27583  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 27584  		return -1
 27585  	}
 27586  
 27587  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 27588  	return nWrite
 27589  }
 27590  
 27591  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 27592  	var p uintptr = instanceData
 27593  
 27594  	switch seekMode {
 27595  	case SEEK_SET:
 27596  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 27597  		break
 27598  	case SEEK_CUR:
 27599  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 27600  		break
 27601  	case SEEK_END:
 27602  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 27603  		break
 27604  
 27605  	default:
 27606  	}
 27607  
 27608  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27609  }
 27610  
 27611  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 27612  }
 27613  
 27614  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 27615  	return TCL_ERROR
 27616  }
 27617  
 27618  var IncrblobChannelType = Tcl_ChannelType{
 27619  	FtypeName:      ts + 10868,
 27620  	Fversion:       uintptr(0x2),
 27621  	FcloseProc:     0,
 27622  	FinputProc:     0,
 27623  	FoutputProc:    0,
 27624  	FseekProc:      0,
 27625  	FwatchProc:     0,
 27626  	FgetHandleProc: 0,
 27627  }
 27628  
 27629  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 27630  	bp := tls.Alloc(80)
 27631  	defer tls.Free(80)
 27632  
 27633  	var p uintptr
 27634  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 27635  
 27636  	var rc int32
 27637  	var flags int32 = int32(1)<<1 | func() int32 {
 27638  		if isReadonly != 0 {
 27639  			return 0
 27640  		}
 27641  		return int32(1) << 2
 27642  	}()
 27643  
 27644  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 27645  	if rc != SQLITE_OK {
 27646  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 27647  		return TCL_ERROR
 27648  	}
 27649  
 27650  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 27651  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 27652  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 27653  
 27654  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 27655  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 27656  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27657  
 27658  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 27659  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 27660  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27661  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 27662  	}
 27663  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 27664  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 27665  
 27666  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 27667  	return TCL_OK
 27668  }
 27669  
 27670  var count int32 = 0
 27671  
 27672  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 27673  	bp := tls.Alloc(4)
 27674  	defer tls.Free(4)
 27675  
 27676  	var z uintptr
 27677  
 27678  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 27679  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 27680  		var c int32 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 27681  		if c == '$' || c == '[' || c == ';' {
 27682  			return 0
 27683  		}
 27684  	}
 27685  	return 1
 27686  }
 27687  
 27688  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 27689  	var p uintptr
 27690  	var pNew uintptr
 27691  	var nName int32 = strlen30(tls, zName)
 27692  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 27693  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 27694  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1))
 27695  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 27696  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 27697  			tcl.XTcl_Free(tls, pNew)
 27698  			return p
 27699  		}
 27700  	}
 27701  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27702  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 27703  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 27704  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27705  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 27706  	return pNew
 27707  }
 27708  
 27709  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 27710  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 27711  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 27712  	}
 27713  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 27714  	tcl.XTcl_Free(tls, pStmt)
 27715  }
 27716  
 27717  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 27718  	var pPreStmt uintptr
 27719  	var pNext uintptr
 27720  
 27721  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 27722  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 27723  		dbFreeStmt(tls, pPreStmt)
 27724  	}
 27725  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 27726  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 27727  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 27728  }
 27729  
 27730  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27731  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 27732  }
 27733  
 27734  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27735  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 27736  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 27737  		flushStmtCache(tls, pDb)
 27738  		closeIncrblobChannels(tls, pDb)
 27739  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 27740  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 27741  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27742  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 27743  
 27744  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27745  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 27746  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27747  					tcl.XTclFreeObj(tls, _objPtr)
 27748  				}
 27749  			}
 27750  			tcl.XTcl_Free(tls, pFunc)
 27751  		}
 27752  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 27753  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 27754  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 27755  			tcl.XTcl_Free(tls, pCollate)
 27756  		}
 27757  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 27758  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 27759  		}
 27760  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 27761  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 27762  		}
 27763  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 27764  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 27765  		}
 27766  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 27767  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 27768  		}
 27769  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 27770  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 27771  		}
 27772  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 27773  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 27774  		}
 27775  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 27776  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 27777  		}
 27778  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 27779  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27780  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 27781  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27782  					tcl.XTclFreeObj(tls, _objPtr)
 27783  				}
 27784  			}
 27785  		}
 27786  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 27787  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27788  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 27789  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27790  					tcl.XTclFreeObj(tls, _objPtr)
 27791  				}
 27792  			}
 27793  		}
 27794  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 27795  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27796  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 27797  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27798  					tcl.XTclFreeObj(tls, _objPtr)
 27799  				}
 27800  			}
 27801  		}
 27802  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 27803  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 27804  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 27805  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27806  					tcl.XTclFreeObj(tls, _objPtr)
 27807  				}
 27808  			}
 27809  		}
 27810  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 27811  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 27812  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 27813  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27814  					tcl.XTclFreeObj(tls, _objPtr)
 27815  				}
 27816  			}
 27817  		}
 27818  		tcl.XTcl_Free(tls, pDb)
 27819  	}
 27820  }
 27821  
 27822  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 27823  	var pDb uintptr = db
 27824  	delDatabaseRef(tls, pDb)
 27825  }
 27826  
 27827  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 27828  	bp := tls.Alloc(70)
 27829  	defer tls.Free(70)
 27830  
 27831  	var pDb uintptr = cd
 27832  	var rc int32
 27833  
 27834  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 27835  	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)))
 27836  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27837  		return 0
 27838  	}
 27839  	return 1
 27840  }
 27841  
 27842  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 27843  	var pDb uintptr = cd
 27844  	var rc int32
 27845  
 27846  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 27847  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27848  		return 1
 27849  	}
 27850  	return 0
 27851  }
 27852  
 27853  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 27854  	bp := tls.Alloc(216)
 27855  	defer tls.Free(216)
 27856  
 27857  	var pDb uintptr = cd
 27858  
 27859  	tcl.XTcl_DStringInit(tls, bp)
 27860  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 27861  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 27862  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27863  	tcl.XTcl_DStringFree(tls, bp)
 27864  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27865  }
 27866  
 27867  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 27868  	var pDb uintptr = cd
 27869  	var pCmd uintptr
 27870  
 27871  	switch type1 {
 27872  	case uint32(SQLITE_TRACE_STMT):
 27873  		{
 27874  			var pStmt uintptr = pd
 27875  			var zSql uintptr = xd
 27876  
 27877  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27878  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27879  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27880  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27881  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27882  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 27883  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27884  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27885  				var _objPtr uintptr = pCmd
 27886  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27887  					tcl.XTclFreeObj(tls, _objPtr)
 27888  				}
 27889  			}
 27890  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27891  			break
 27892  
 27893  		}
 27894  	case uint32(SQLITE_TRACE_PROFILE):
 27895  		{
 27896  			var pStmt uintptr = pd
 27897  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 27898  
 27899  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27900  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27901  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27902  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27903  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27904  				tcl.XTcl_NewWideIntObj(tls, ns))
 27905  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27906  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27907  				var _objPtr uintptr = pCmd
 27908  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27909  					tcl.XTclFreeObj(tls, _objPtr)
 27910  				}
 27911  			}
 27912  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27913  			break
 27914  
 27915  		}
 27916  	case uint32(SQLITE_TRACE_ROW):
 27917  		{
 27918  			var pStmt uintptr = pd
 27919  
 27920  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27921  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27922  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27923  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27924  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27925  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27926  				var _objPtr uintptr = pCmd
 27927  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27928  					tcl.XTclFreeObj(tls, _objPtr)
 27929  				}
 27930  			}
 27931  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27932  			break
 27933  
 27934  		}
 27935  	case uint32(SQLITE_TRACE_CLOSE):
 27936  		{
 27937  			var db uintptr = pd
 27938  
 27939  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27940  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27941  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27942  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 27943  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27944  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27945  				var _objPtr uintptr = pCmd
 27946  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27947  					tcl.XTclFreeObj(tls, _objPtr)
 27948  				}
 27949  			}
 27950  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27951  			break
 27952  
 27953  		}
 27954  	}
 27955  	return SQLITE_OK
 27956  }
 27957  
 27958  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 27959  	bp := tls.Alloc(328)
 27960  	defer tls.Free(328)
 27961  
 27962  	var pDb uintptr = cd
 27963  
 27964  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]int8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 27965  	tcl.XTcl_DStringInit(tls, bp+112)
 27966  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 27967  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 27968  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 27969  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 27970  	tcl.XTcl_DStringFree(tls, bp+112)
 27971  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27972  }
 27973  
 27974  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 27975  	var pDb uintptr = cd
 27976  	var rc int32
 27977  
 27978  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 27979  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27980  		return 1
 27981  	}
 27982  	return 0
 27983  }
 27984  
 27985  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 27986  	var pDb uintptr = clientData
 27987  
 27988  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 27989  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27990  	}
 27991  }
 27992  
 27993  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 27994  	bp := tls.Alloc(4)
 27995  	defer tls.Free(4)
 27996  
 27997  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 27998  	var p uintptr
 27999  	var pDb uintptr = clientData
 28000  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28001  
 28002  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 28003  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 28004  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28005  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 28006  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 28007  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 28008  		tcl.XTcl_BackgroundError(tls, interp)
 28009  	}
 28010  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28011  		var _objPtr uintptr = p
 28012  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28013  			tcl.XTclFreeObj(tls, _objPtr)
 28014  		}
 28015  	}
 28016  
 28017  	return *(*int32)(unsafe.Pointer(bp))
 28018  }
 28019  
 28020  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 28021  	bp := tls.Alloc(80)
 28022  	defer tls.Free(80)
 28023  
 28024  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 28025  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28026  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 28027  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28028  }
 28029  
 28030  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 28031  	var i int32
 28032  	for i = 0; i < nArg; i++ {
 28033  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 28034  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 28035  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 28036  
 28037  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 28038  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28039  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 28040  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28041  				tcl.XTclFreeObj(tls, _objPtr)
 28042  			}
 28043  		}
 28044  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 28045  	}
 28046  }
 28047  
 28048  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 28049  	var pDb uintptr = p
 28050  	var pCmd uintptr
 28051  
 28052  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 28053  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28054  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 28055  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28056  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28057  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 28058  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 28059  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28060  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28061  		var _objPtr uintptr = pCmd
 28062  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28063  			tcl.XTclFreeObj(tls, _objPtr)
 28064  		}
 28065  	}
 28066  }
 28067  
 28068  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28069  
 28070  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 28071  	var pDb uintptr = p
 28072  	var pCmd uintptr
 28073  
 28074  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 28075  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28076  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 28077  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28078  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28079  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 28080  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28081  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28082  		var _objPtr uintptr = pCmd
 28083  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28084  			tcl.XTclFreeObj(tls, _objPtr)
 28085  		}
 28086  	}
 28087  }
 28088  
 28089  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28090  
 28091  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 28092  	var pDb uintptr = pCtx
 28093  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 28094  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 28095  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 28096  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 28097  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28098  		var _objPtr uintptr = pScript
 28099  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28100  			tcl.XTclFreeObj(tls, _objPtr)
 28101  		}
 28102  	}
 28103  }
 28104  
 28105  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 28106  	var p uintptr = pCtx
 28107  	var pCmd uintptr
 28108  
 28109  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 28110  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28111  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 28112  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 28113  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28114  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28115  		var _objPtr uintptr = pCmd
 28116  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28117  			tcl.XTclFreeObj(tls, _objPtr)
 28118  		}
 28119  	}
 28120  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 28121  }
 28122  
 28123  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 28124  	bp := tls.Alloc(40)
 28125  	defer tls.Free(40)
 28126  
 28127  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 28128  	var pCmd uintptr
 28129  	var i int32
 28130  	var rc int32
 28131  
 28132  	if argc == 0 {
 28133  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 28134  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28135  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 28136  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28137  			var _objPtr uintptr = pCmd
 28138  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28139  				tcl.XTclFreeObj(tls, _objPtr)
 28140  			}
 28141  		}
 28142  	} else {
 28143  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 28144  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28145  			return
 28146  		}
 28147  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 28148  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28149  		for i = 0; i < argc; i++ {
 28150  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 28151  			var pVal uintptr
 28152  
 28153  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 28154  			case SQLITE_BLOB:
 28155  				{
 28156  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28157  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 28158  					break
 28159  
 28160  				}
 28161  				fallthrough
 28162  			case SQLITE_INTEGER:
 28163  				{
 28164  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 28165  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 28166  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 28167  					} else {
 28168  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 28169  					}
 28170  					break
 28171  
 28172  				}
 28173  				fallthrough
 28174  			case SQLITE_FLOAT:
 28175  				{
 28176  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 28177  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 28178  					break
 28179  
 28180  				}
 28181  				fallthrough
 28182  			case SQLITE_NULL:
 28183  				{
 28184  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28185  					break
 28186  
 28187  				}
 28188  				fallthrough
 28189  			default:
 28190  				{
 28191  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28192  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 28193  					break
 28194  
 28195  				}
 28196  			}
 28197  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 28198  			if rc != 0 {
 28199  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28200  					var _objPtr uintptr = pCmd
 28201  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28202  						tcl.XTclFreeObj(tls, _objPtr)
 28203  					}
 28204  				}
 28205  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28206  				return
 28207  			}
 28208  		}
 28209  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 28210  			tcl.XTcl_GetString(tls, pCmd)
 28211  		}
 28212  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28213  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28214  			var _objPtr uintptr = pCmd
 28215  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28216  				tcl.XTclFreeObj(tls, _objPtr)
 28217  			}
 28218  		}
 28219  	}
 28220  
 28221  	if rc != 0 && rc != TCL_RETURN {
 28222  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28223  	} else {
 28224  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 28225  
 28226  		var data uintptr
 28227  		var zType uintptr = func() uintptr {
 28228  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28229  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28230  			}
 28231  			return ts + 584
 28232  		}()
 28233  		var c int8 = *(*int8)(unsafe.Pointer(zType))
 28234  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 28235  
 28236  		if eType == SQLITE_NULL {
 28237  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28238  				eType = SQLITE_BLOB
 28239  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 28240  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 28241  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28242  				eType = SQLITE_INTEGER
 28243  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28244  				eType = SQLITE_FLOAT
 28245  			} else {
 28246  				eType = SQLITE_TEXT
 28247  			}
 28248  		}
 28249  
 28250  		switch eType {
 28251  		case SQLITE_BLOB:
 28252  			{
 28253  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 28254  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28255  				break
 28256  
 28257  			}
 28258  			fallthrough
 28259  		case SQLITE_INTEGER:
 28260  			{
 28261  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 28262  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28263  					break
 28264  				}
 28265  
 28266  			}
 28267  			fallthrough
 28268  		case SQLITE_FLOAT:
 28269  			{
 28270  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 28271  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 28272  					break
 28273  				}
 28274  
 28275  			}
 28276  			fallthrough
 28277  		default:
 28278  			{
 28279  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 28280  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 28281  				break
 28282  
 28283  			}
 28284  		}
 28285  
 28286  	}
 28287  }
 28288  
 28289  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 28290  	bp := tls.Alloc(216)
 28291  	defer tls.Free(216)
 28292  
 28293  	var zCode uintptr
 28294  
 28295  	var rc int32
 28296  	var zReply uintptr
 28297  
 28298  	var pDb uintptr = pArg
 28299  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 28300  		return SQLITE_OK
 28301  	}
 28302  
 28303  	switch code {
 28304  	case SQLITE_COPY:
 28305  		zCode = ts + 10944
 28306  		break
 28307  	case SQLITE_CREATE_INDEX:
 28308  		zCode = ts + 10956
 28309  		break
 28310  	case SQLITE_CREATE_TABLE:
 28311  		zCode = ts + 10976
 28312  		break
 28313  	case SQLITE_CREATE_TEMP_INDEX:
 28314  		zCode = ts + 10996
 28315  		break
 28316  	case SQLITE_CREATE_TEMP_TABLE:
 28317  		zCode = ts + 11021
 28318  		break
 28319  	case SQLITE_CREATE_TEMP_TRIGGER:
 28320  		zCode = ts + 11046
 28321  		break
 28322  	case SQLITE_CREATE_TEMP_VIEW:
 28323  		zCode = ts + 11073
 28324  		break
 28325  	case SQLITE_CREATE_TRIGGER:
 28326  		zCode = ts + 11097
 28327  		break
 28328  	case SQLITE_CREATE_VIEW:
 28329  		zCode = ts + 11119
 28330  		break
 28331  	case SQLITE_DELETE:
 28332  		zCode = ts + 11138
 28333  		break
 28334  	case SQLITE_DROP_INDEX:
 28335  		zCode = ts + 11152
 28336  		break
 28337  	case SQLITE_DROP_TABLE:
 28338  		zCode = ts + 11170
 28339  		break
 28340  	case SQLITE_DROP_TEMP_INDEX:
 28341  		zCode = ts + 11188
 28342  		break
 28343  	case SQLITE_DROP_TEMP_TABLE:
 28344  		zCode = ts + 11211
 28345  		break
 28346  	case SQLITE_DROP_TEMP_TRIGGER:
 28347  		zCode = ts + 11234
 28348  		break
 28349  	case SQLITE_DROP_TEMP_VIEW:
 28350  		zCode = ts + 11259
 28351  		break
 28352  	case SQLITE_DROP_TRIGGER:
 28353  		zCode = ts + 11281
 28354  		break
 28355  	case SQLITE_DROP_VIEW:
 28356  		zCode = ts + 11301
 28357  		break
 28358  	case SQLITE_INSERT:
 28359  		zCode = ts + 11318
 28360  		break
 28361  	case SQLITE_PRAGMA:
 28362  		zCode = ts + 11332
 28363  		break
 28364  	case SQLITE_READ:
 28365  		zCode = ts + 11346
 28366  		break
 28367  	case SQLITE_SELECT:
 28368  		zCode = ts + 11358
 28369  		break
 28370  	case SQLITE_TRANSACTION:
 28371  		zCode = ts + 11372
 28372  		break
 28373  	case SQLITE_UPDATE:
 28374  		zCode = ts + 11391
 28375  		break
 28376  	case SQLITE_ATTACH:
 28377  		zCode = ts + 11405
 28378  		break
 28379  	case SQLITE_DETACH:
 28380  		zCode = ts + 11419
 28381  		break
 28382  	case SQLITE_ALTER_TABLE:
 28383  		zCode = ts + 11433
 28384  		break
 28385  	case SQLITE_REINDEX:
 28386  		zCode = ts + 11452
 28387  		break
 28388  	case SQLITE_ANALYZE:
 28389  		zCode = ts + 11467
 28390  		break
 28391  	case SQLITE_CREATE_VTABLE:
 28392  		zCode = ts + 11482
 28393  		break
 28394  	case SQLITE_DROP_VTABLE:
 28395  		zCode = ts + 11503
 28396  		break
 28397  	case SQLITE_FUNCTION:
 28398  		zCode = ts + 11522
 28399  		break
 28400  	case SQLITE_SAVEPOINT:
 28401  		zCode = ts + 11538
 28402  		break
 28403  	case SQLITE_RECURSIVE:
 28404  		zCode = ts + 11555
 28405  		break
 28406  	default:
 28407  		zCode = ts + 11572
 28408  		break
 28409  	}
 28410  	tcl.XTcl_DStringInit(tls, bp)
 28411  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 28412  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 28413  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28414  		if zArg1 != 0 {
 28415  			return zArg1
 28416  		}
 28417  		return ts + 584
 28418  	}())
 28419  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28420  		if zArg2 != 0 {
 28421  			return zArg2
 28422  		}
 28423  		return ts + 584
 28424  	}())
 28425  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28426  		if zArg3 != 0 {
 28427  			return zArg3
 28428  		}
 28429  		return ts + 584
 28430  	}())
 28431  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28432  		if zArg4 != 0 {
 28433  			return zArg4
 28434  		}
 28435  		return ts + 584
 28436  	}())
 28437  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28438  	tcl.XTcl_DStringFree(tls, bp)
 28439  	if rc == TCL_OK {
 28440  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28441  	} else {
 28442  		zReply = ts + 11577
 28443  	}
 28444  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 28445  		rc = SQLITE_OK
 28446  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 28447  		rc = SQLITE_DENY
 28448  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 28449  		rc = SQLITE_IGNORE
 28450  	} else {
 28451  		rc = 999
 28452  	}
 28453  	return rc
 28454  }
 28455  
 28456  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 28457  	var zLine uintptr
 28458  	var nLine int32
 28459  	var n int32
 28460  
 28461  	nLine = 100
 28462  	zLine = libc.Xmalloc(tls, uint64(nLine))
 28463  	if zLine == uintptr(0) {
 28464  		return uintptr(0)
 28465  	}
 28466  	n = 0
 28467  	for 1 != 0 {
 28468  		if n+100 > nLine {
 28469  			nLine = nLine*2 + 100
 28470  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 28471  			if zLine == uintptr(0) {
 28472  				return uintptr(0)
 28473  			}
 28474  		}
 28475  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 28476  			if n == 0 {
 28477  				libc.Xfree(tls, zLine)
 28478  				return uintptr(0)
 28479  			}
 28480  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 28481  			break
 28482  		}
 28483  		for *(*int8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 28484  			n++
 28485  		}
 28486  		if n > 0 && int32(*(*int8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 28487  			n--
 28488  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 28489  			break
 28490  		}
 28491  	}
 28492  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 28493  	return zLine
 28494  }
 28495  
 28496  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28497  	bp := tls.Alloc(16)
 28498  	defer tls.Free(16)
 28499  
 28500  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 28501  	var rc int32 = result
 28502  	var zEnd uintptr
 28503  
 28504  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 28505  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 28506  
 28507  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 28508  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 28509  		if rc != TCL_ERROR {
 28510  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 28511  			rc = TCL_ERROR
 28512  		}
 28513  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 28514  	}
 28515  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 28516  
 28517  	delDatabaseRef(tls, pDb)
 28518  	return rc
 28519  }
 28520  
 28521  var azEnd = [4]uintptr{
 28522  	ts + 11603,
 28523  	ts + 11628,
 28524  	ts + 11635,
 28525  	ts + 7824,
 28526  }
 28527  
 28528  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 28529  	var prepFlags uint32 = uint32(0)
 28530  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 28531  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 28532  	}
 28533  
 28534  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 28535  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 28536  	}
 28537  
 28538  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 28539  }
 28540  
 28541  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 28542  	bp := tls.Alloc(32)
 28543  	defer tls.Free(32)
 28544  
 28545  	var zSql uintptr = zIn
 28546  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28547  	var pPreStmt uintptr
 28548  	var nSql int32
 28549  	var nVar int32 = 0
 28550  	var iParm int32 = 0
 28551  	var c int8
 28552  	var i int32
 28553  	var needResultReset int32 = 0
 28554  	var rc int32 = SQLITE_OK
 28555  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28556  
 28557  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 28558  
 28559  	for int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 28560  		zSql++
 28561  	}
 28562  	nSql = strlen30(tls, zSql)
 28563  
 28564  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 28565  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 28566  		if nSql >= n &&
 28567  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 28568  			(int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 28569  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28570  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 28571  
 28572  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 28573  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28574  			} else {
 28575  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28576  			}
 28577  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 28578  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28579  			} else {
 28580  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28581  			}
 28582  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28583  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28584  			break
 28585  		}
 28586  	}
 28587  
 28588  	if pPreStmt == uintptr(0) {
 28589  		var nByte int32
 28590  
 28591  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 28592  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28593  			return TCL_ERROR
 28594  		}
 28595  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 28596  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 28597  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28598  				return TCL_ERROR
 28599  			} else {
 28600  				return TCL_OK
 28601  			}
 28602  		}
 28603  
 28604  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28605  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 28606  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 28607  		libc.Xmemset(tls, pPreStmt, 0, uint64(nByte))
 28608  
 28609  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 28610  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 28611  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28612  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 28613  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 28614  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 28615  			libc.Xmemcpy(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 28616  			*(*int8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = int8(0)
 28617  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 28618  		}
 28619  	}
 28620  
 28621  	for i = 1; i <= nVar; i++ {
 28622  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28623  		if zVar != uintptr(0) && (int32(*(*int8)(unsafe.Pointer(zVar))) == '$' || int32(*(*int8)(unsafe.Pointer(zVar))) == ':' || int32(*(*int8)(unsafe.Pointer(zVar))) == '@') {
 28624  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 28625  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 28626  				var pCmd uintptr
 28627  				var rx int32
 28628  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 28629  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28630  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 28631  				if needResultReset != 0 {
 28632  					tcl.XTcl_ResetResult(tls, interp)
 28633  				}
 28634  				needResultReset = 1
 28635  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 28636  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28637  					var _objPtr uintptr = pCmd
 28638  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28639  						tcl.XTclFreeObj(tls, _objPtr)
 28640  					}
 28641  				}
 28642  				if rx == TCL_OK {
 28643  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 28644  				} else if rx == TCL_ERROR {
 28645  					rc = TCL_ERROR
 28646  					break
 28647  				} else {
 28648  					pVar = uintptr(0)
 28649  				}
 28650  			}
 28651  			if pVar != 0 {
 28652  				var data uintptr
 28653  				var zType uintptr = func() uintptr {
 28654  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28655  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28656  					}
 28657  					return ts + 584
 28658  				}()
 28659  				c = *(*int8)(unsafe.Pointer(zType))
 28660  				if int32(*(*int8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28661  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 28662  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28663  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28664  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28665  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 28666  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 28667  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 28668  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28669  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 28670  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 28671  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28672  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 28673  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28674  				} else {
 28675  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 28676  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28677  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28678  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28679  				}
 28680  			} else {
 28681  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28682  			}
 28683  			if needResultReset != 0 {
 28684  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28685  			}
 28686  		}
 28687  	}
 28688  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 28689  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 28690  	if needResultReset != 0 && rc == TCL_OK {
 28691  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28692  	}
 28693  
 28694  	return rc
 28695  }
 28696  
 28697  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 28698  	var i int32
 28699  
 28700  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 28701  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28702  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8))
 28703  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28704  				tcl.XTclFreeObj(tls, _objPtr)
 28705  			}
 28706  		}
 28707  	}
 28708  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 28709  
 28710  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 28711  		dbFreeStmt(tls, pPreStmt)
 28712  	} else {
 28713  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 28714  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 28715  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 28716  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 28717  		}
 28718  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 28719  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 28720  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 28721  		} else {
 28722  		}
 28723  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 28724  
 28725  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 28726  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 28727  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 28728  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 28729  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28730  			dbFreeStmt(tls, pLast)
 28731  		}
 28732  	}
 28733  }
 28734  
 28735  type DbEvalContext1 = struct {
 28736  	FpDb       uintptr
 28737  	FpSql      uintptr
 28738  	FzSql      uintptr
 28739  	FpPreStmt  uintptr
 28740  	FnCol      int32
 28741  	FevalFlags int32
 28742  	FpArray    uintptr
 28743  	FapColName uintptr
 28744  }
 28745  
 28746  type DbEvalContext = DbEvalContext1
 28747  
 28748  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 28749  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 28750  		var i int32
 28751  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 28752  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28753  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8))
 28754  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28755  					tcl.XTclFreeObj(tls, _objPtr)
 28756  				}
 28757  			}
 28758  		}
 28759  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 28760  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 28761  	}
 28762  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 28763  }
 28764  
 28765  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 28766  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})))
 28767  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 28768  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 28769  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 28770  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 28771  	if pArray != 0 {
 28772  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 28773  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 28774  	}
 28775  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 28776  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28777  }
 28778  
 28779  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 28780  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 28781  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28782  		var i int32
 28783  		var nCol int32
 28784  		var apColName uintptr = uintptr(0)
 28785  
 28786  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 28787  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 28788  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 28789  			for i = 0; i < nCol; i++ {
 28790  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 28791  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 28792  			}
 28793  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 28794  		}
 28795  
 28796  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28797  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 28798  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 28799  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 28800  
 28801  			for i = 0; i < nCol; i++ {
 28802  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 28803  			}
 28804  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 28805  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 28806  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28807  				var _objPtr uintptr = pStar
 28808  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28809  					tcl.XTclFreeObj(tls, _objPtr)
 28810  				}
 28811  			}
 28812  		}
 28813  	}
 28814  
 28815  	if papColName != 0 {
 28816  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 28817  	}
 28818  	if pnCol != 0 {
 28819  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 28820  	}
 28821  }
 28822  
 28823  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 28824  	var zPrevSql uintptr = uintptr(0)
 28825  
 28826  	for *(*int8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28827  		var rc int32
 28828  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 28829  			zPrevSql = func() uintptr {
 28830  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 28831  					return uintptr(0)
 28832  				}
 28833  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 28834  			}()
 28835  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 28836  			if rc != TCL_OK {
 28837  				return rc
 28838  			}
 28839  		} else {
 28840  			var rcs int32
 28841  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 28842  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 28843  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28844  
 28845  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 28846  			if rcs == SQLITE_ROW {
 28847  				return TCL_OK
 28848  			}
 28849  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28850  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 28851  			}
 28852  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 28853  
 28854  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 28855  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 28856  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 28857  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 28858  			dbReleaseColumnNames(tls, p)
 28859  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28860  
 28861  			if rcs != SQLITE_OK {
 28862  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 28863  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 28864  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 28865  					continue
 28866  				}
 28867  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 28868  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28869  				return TCL_ERROR
 28870  			} else {
 28871  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 28872  			}
 28873  		}
 28874  	}
 28875  
 28876  	return TCL_BREAK
 28877  }
 28878  
 28879  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 28880  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28881  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 28882  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 28883  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28884  	}
 28885  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28886  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28887  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28888  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28889  				tcl.XTclFreeObj(tls, _objPtr)
 28890  			}
 28891  		}
 28892  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 28893  	}
 28894  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28895  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 28896  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28897  			tcl.XTclFreeObj(tls, _objPtr)
 28898  		}
 28899  	}
 28900  	dbReleaseColumnNames(tls, p)
 28901  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28902  }
 28903  
 28904  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 28905  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28906  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 28907  	case SQLITE_BLOB:
 28908  		{
 28909  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 28910  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 28911  			if !(zBlob != 0) {
 28912  				bytes = 0
 28913  			}
 28914  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 28915  
 28916  		}
 28917  	case SQLITE_INTEGER:
 28918  		{
 28919  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 28920  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 28921  				return tcl.XTcl_NewIntObj(tls, int32(v))
 28922  			} else {
 28923  				return tcl.XTcl_NewWideIntObj(tls, v)
 28924  			}
 28925  
 28926  		}
 28927  		fallthrough
 28928  	case SQLITE_FLOAT:
 28929  		{
 28930  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 28931  
 28932  		}
 28933  	case SQLITE_NULL:
 28934  		{
 28935  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28936  
 28937  		}
 28938  	}
 28939  
 28940  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 28941  }
 28942  
 28943  func DbUseNre(tls *libc.TLS) int32 {
 28944  	bp := tls.Alloc(8)
 28945  	defer tls.Free(8)
 28946  
 28947  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 28948  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 28949  }
 28950  
 28951  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28952  	bp := tls.Alloc(16)
 28953  	defer tls.Free(16)
 28954  
 28955  	var rc int32 = result
 28956  
 28957  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 28958  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 28959  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28960  
 28961  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 28962  		var i int32
 28963  
 28964  		dbEvalRowInfo(tls, p, bp, bp+8)
 28965  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 28966  			if pArray == uintptr(0) {
 28967  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 28968  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 28969  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 28970  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 28971  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 28972  			} else {
 28973  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 28974  			}
 28975  		}
 28976  
 28977  		if DbUseNre(tls) != 0 {
 28978  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 28979  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 28980  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 28981  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 28982  		} else {
 28983  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 28984  		}
 28985  	}
 28986  
 28987  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28988  		var _objPtr uintptr = pScript
 28989  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28990  			tcl.XTclFreeObj(tls, _objPtr)
 28991  		}
 28992  	}
 28993  	dbEvalFinalize(tls, p)
 28994  	tcl.XTcl_Free(tls, p)
 28995  
 28996  	if rc == TCL_OK || rc == TCL_BREAK {
 28997  		tcl.XTcl_ResetResult(tls, interp)
 28998  		rc = TCL_OK
 28999  	}
 29000  	return rc
 29001  }
 29002  
 29003  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 29004  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 29005  
 29006  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 29007  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 29008  		if pArg != 0 {
 29009  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29010  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 29011  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29012  					tcl.XTclFreeObj(tls, _objPtr)
 29013  				}
 29014  			}
 29015  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 29016  		}
 29017  	}
 29018  	if pArg != 0 {
 29019  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 29020  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 29021  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 29022  		}
 29023  	}
 29024  
 29025  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 29026  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 29027  			return *(*uintptr)(unsafe.Pointer(&struct {
 29028  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 29029  			}{DbPreUpdateHandler}))
 29030  		}
 29031  		return uintptr(0)
 29032  	}(), pDb)
 29033  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 29034  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 29035  			return *(*uintptr)(unsafe.Pointer(&struct {
 29036  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 29037  			}{DbUpdateHandler}))
 29038  		}
 29039  		return uintptr(0)
 29040  	}(), pDb)
 29041  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 29042  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 29043  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 29044  		}
 29045  		return uintptr(0)
 29046  	}(), pDb)
 29047  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 29048  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 29049  			return *(*uintptr)(unsafe.Pointer(&struct {
 29050  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 29051  			}{DbWalHandler}))
 29052  		}
 29053  		return uintptr(0)
 29054  	}(), pDb)
 29055  }
 29056  
 29057  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29058  	bp := tls.Alloc(1588)
 29059  	defer tls.Free(1588)
 29060  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 29061  
 29062  	var pDb uintptr
 29063  
 29064  	var rc int32
 29065  	var zAuth uintptr
 29066  
 29067  	var zDestFile uintptr
 29068  	var zSrcDb uintptr
 29069  
 29070  	var pBackup uintptr
 29071  	var zCallback uintptr
 29072  
 29073  	var zBusy uintptr
 29074  
 29075  	var subCmd uintptr
 29076  
 29077  	var pResult uintptr
 29078  	var pCollate uintptr
 29079  	var zName uintptr
 29080  	var zScript uintptr
 29081  
 29082  	var _objPtr uintptr
 29083  	var zCommit uintptr
 29084  
 29085  	var pResult1 uintptr
 29086  	var isComplete int32
 29087  
 29088  	var zOpt uintptr
 29089  
 29090  	var pResult2 uintptr
 29091  	var ii int32
 29092  	var zErr uintptr
 29093  	var nErr int32
 29094  	var z uintptr
 29095  	var zTable uintptr
 29096  	var zFile uintptr
 29097  	var zConflict uintptr
 29098  
 29099  	var nCol int32
 29100  	var nByte int32
 29101  	var i int32
 29102  	var j int32
 29103  	var nSep int32
 29104  	var nNull int32
 29105  	var zSql uintptr
 29106  	var zLine uintptr
 29107  	var azCol uintptr
 29108  	var zCommit1 uintptr
 29109  	var in uintptr
 29110  	var lineno int32
 29111  
 29112  	var pResult3 uintptr
 29113  
 29114  	var zSep uintptr
 29115  	var zNull uintptr
 29116  
 29117  	var z1 uintptr
 29118  	var flags int32
 29119  	var zSchema uintptr
 29120  	var pValue uintptr
 29121  	var pBA uintptr
 29122  	var pData uintptr
 29123  
 29124  	var xrc int32
 29125  
 29126  	var i1 int32
 29127  
 29128  	var pResult4 uintptr
 29129  
 29130  	var i2 int32
 29131  
 29132  	var _objPtr1 uintptr
 29133  
 29134  	var pRet uintptr
 29135  
 29136  	var p uintptr
 29137  	var pArray uintptr
 29138  	var pScript uintptr
 29139  	var evalFlags int32
 29140  	var zOpt1 uintptr
 29141  
 29142  	var z2 uintptr
 29143  	var n1 int32
 29144  	var _objPtr2 uintptr
 29145  	var flags1 int32
 29146  	var pFunc uintptr
 29147  	var pScript1 uintptr
 29148  	var zName1 uintptr
 29149  
 29150  	var i3 int32
 29151  
 29152  	var isReadonly1 int32
 29153  	var zDb uintptr
 29154  	var zTable1 uintptr
 29155  	var zColumn uintptr
 29156  
 29157  	var zNull1 uintptr
 29158  	var pResult5 uintptr
 29159  	var rowid Tcl_WideInt
 29160  	var zProgress uintptr
 29161  
 29162  	var zProfile uintptr
 29163  
 29164  	var zSrcFile uintptr
 29165  	var zDestDb uintptr
 29166  
 29167  	var pBackup1 uintptr
 29168  	var nTimeout int32
 29169  	var needFree int32
 29170  	var zSchema1 uintptr
 29171  
 29172  	var pData1 uintptr
 29173  	var v2 int32
 29174  	var zOp uintptr
 29175  
 29176  	var pResult6 uintptr
 29177  	var zTrace uintptr
 29178  
 29179  	var _objPtr3 uintptr
 29180  	var _objPtr4 uintptr
 29181  
 29182  	var pError uintptr
 29183  
 29184  	var i4 int32
 29185  	var zTraceV2 uintptr
 29186  
 29187  	var wMask Tcl_WideInt
 29188  
 29189  	var pScript2 uintptr
 29190  	var zBegin uintptr
 29191  	var _objPtr5 uintptr
 29192  	var xNotify uintptr
 29193  	var pNotifyArg uintptr
 29194  	var nCol2 int32
 29195  	var pRet1 uintptr
 29196  	var pObj1 uintptr
 29197  
 29198  	var ppHook uintptr
 29199  
 29200  	var zArg uintptr
 29201  	var i5 int32
 29202  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 29203  	rc = TCL_OK
 29204  
 29205  	if !(objc < 2) {
 29206  		goto __1
 29207  	}
 29208  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 29209  	return TCL_ERROR
 29210  __1:
 29211  	;
 29212  	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) {
 29213  		goto __2
 29214  	}
 29215  	return TCL_ERROR
 29216  __2:
 29217  	;
 29218  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 29219  	case uint32(0):
 29220  		goto __4
 29221  
 29222  	case uint32(1):
 29223  		goto __5
 29224  
 29225  	case uint32(2):
 29226  		goto __6
 29227  
 29228  	case uint32(3):
 29229  		goto __7
 29230  
 29231  	case uint32(4):
 29232  		goto __8
 29233  
 29234  	case uint32(5):
 29235  		goto __9
 29236  
 29237  	case uint32(6):
 29238  		goto __10
 29239  
 29240  	case uint32(7):
 29241  		goto __11
 29242  
 29243  	case uint32(8):
 29244  		goto __12
 29245  
 29246  	case uint32(9):
 29247  		goto __13
 29248  
 29249  	case uint32(10):
 29250  		goto __14
 29251  
 29252  	case uint32(11):
 29253  		goto __15
 29254  
 29255  	case uint32(12):
 29256  		goto __16
 29257  
 29258  	case uint32(13):
 29259  		goto __17
 29260  
 29261  	case uint32(14):
 29262  		goto __18
 29263  
 29264  	case uint32(15):
 29265  		goto __19
 29266  
 29267  	case uint32(16):
 29268  		goto __20
 29269  
 29270  	case uint32(18):
 29271  		goto __21
 29272  	case uint32(24):
 29273  		goto __22
 29274  
 29275  	case uint32(17):
 29276  		goto __23
 29277  
 29278  	case uint32(19):
 29279  		goto __24
 29280  
 29281  	case uint32(20):
 29282  		goto __25
 29283  
 29284  	case uint32(21):
 29285  		goto __26
 29286  
 29287  	case uint32(23):
 29288  		goto __27
 29289  
 29290  	case uint32(22):
 29291  		goto __28
 29292  
 29293  	case uint32(27):
 29294  		goto __29
 29295  
 29296  	case uint32(26):
 29297  		goto __30
 29298  
 29299  	case uint32(28):
 29300  		goto __31
 29301  
 29302  	case uint32(29):
 29303  		goto __32
 29304  
 29305  	case uint32(31):
 29306  		goto __33
 29307  
 29308  	case uint32(32):
 29309  		goto __34
 29310  
 29311  	case uint32(33):
 29312  		goto __35
 29313  
 29314  	case uint32(34):
 29315  		goto __36
 29316  
 29317  	case uint32(35):
 29318  		goto __37
 29319  
 29320  	case uint32(36):
 29321  		goto __38
 29322  
 29323  	case uint32(37):
 29324  		goto __39
 29325  
 29326  	case uint32(38):
 29327  		goto __40
 29328  
 29329  	case uint32(25):
 29330  		goto __41
 29331  
 29332  	case uint32(41):
 29333  		goto __42
 29334  	case uint32(39):
 29335  		goto __43
 29336  	case uint32(30):
 29337  		goto __44
 29338  
 29339  	case uint32(40):
 29340  		goto __45
 29341  	}
 29342  	goto __3
 29343  
 29344  __4:
 29345  	if !(objc > 3) {
 29346  		goto __46
 29347  	}
 29348  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29349  	return TCL_ERROR
 29350  	goto __47
 29351  __46:
 29352  	if !(objc == 2) {
 29353  		goto __48
 29354  	}
 29355  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29356  		goto __50
 29357  	}
 29358  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 29359  __50:
 29360  	;
 29361  	goto __49
 29362  __48:
 29363  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29364  		goto __51
 29365  	}
 29366  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 29367  __51:
 29368  	;
 29369  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 29370  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 29371  		goto __52
 29372  	}
 29373  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29374  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29375  	goto __53
 29376  __52:
 29377  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 29378  __53:
 29379  	;
 29380  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29381  		goto __54
 29382  	}
 29383  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29384  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29385  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 29386  	}{auth_callback})), pDb)
 29387  	goto __55
 29388  __54:
 29389  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29390  __55:
 29391  	;
 29392  __49:
 29393  	;
 29394  __47:
 29395  	;
 29396  	goto __3
 29397  
 29398  __5:
 29399  	if !(objc == 3) {
 29400  		goto __56
 29401  	}
 29402  	zSrcDb = ts + 85
 29403  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29404  	goto __57
 29405  __56:
 29406  	if !(objc == 4) {
 29407  		goto __58
 29408  	}
 29409  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29410  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 29411  	goto __59
 29412  __58:
 29413  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 29414  	return TCL_ERROR
 29415  __59:
 29416  	;
 29417  __57:
 29418  	;
 29419  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 29420  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 29421  	if !(rc != SQLITE_OK) {
 29422  		goto __60
 29423  	}
 29424  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 29425  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29426  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29427  	return TCL_ERROR
 29428  __60:
 29429  	;
 29430  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 29431  	if !(pBackup == uintptr(0)) {
 29432  		goto __61
 29433  	}
 29434  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 29435  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29436  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29437  	return TCL_ERROR
 29438  __61:
 29439  	;
 29440  __62:
 29441  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 29442  		goto __63
 29443  	}
 29444  	goto __62
 29445  __63:
 29446  	;
 29447  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 29448  	if !(rc == SQLITE_DONE) {
 29449  		goto __64
 29450  	}
 29451  	rc = TCL_OK
 29452  	goto __65
 29453  __64:
 29454  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 29455  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29456  	rc = TCL_ERROR
 29457  __65:
 29458  	;
 29459  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29460  	goto __3
 29461  
 29462  __6:
 29463  	if !(objc > 3) {
 29464  		goto __66
 29465  	}
 29466  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29467  	return TCL_ERROR
 29468  	goto __67
 29469  __66:
 29470  	if !(objc == 2) {
 29471  		goto __68
 29472  	}
 29473  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29474  		goto __70
 29475  	}
 29476  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 29477  __70:
 29478  	;
 29479  	goto __69
 29480  __68:
 29481  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29482  		goto __71
 29483  	}
 29484  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 29485  __71:
 29486  	;
 29487  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 29488  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 29489  		goto __72
 29490  	}
 29491  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29492  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29493  	goto __73
 29494  __72:
 29495  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 29496  __73:
 29497  	;
 29498  __69:
 29499  	;
 29500  __67:
 29501  	;
 29502  	goto __3
 29503  
 29504  __7:
 29505  	if !(objc > 3) {
 29506  		goto __74
 29507  	}
 29508  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 29509  	return TCL_ERROR
 29510  	goto __75
 29511  __74:
 29512  	if !(objc == 2) {
 29513  		goto __76
 29514  	}
 29515  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29516  		goto __78
 29517  	}
 29518  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 29519  __78:
 29520  	;
 29521  	goto __77
 29522  __76:
 29523  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29524  		goto __79
 29525  	}
 29526  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 29527  __79:
 29528  	;
 29529  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 29530  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 29531  		goto __80
 29532  	}
 29533  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29534  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29535  	goto __81
 29536  __80:
 29537  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 29538  __81:
 29539  	;
 29540  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29541  		goto __82
 29542  	}
 29543  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29544  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29545  		f func(*libc.TLS, uintptr, int32) int32
 29546  	}{DbBusyHandler})), pDb)
 29547  	goto __83
 29548  __82:
 29549  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29550  __83:
 29551  	;
 29552  __77:
 29553  	;
 29554  __75:
 29555  	;
 29556  	goto __3
 29557  
 29558  __8:
 29559  	if !(objc <= 2) {
 29560  		goto __84
 29561  	}
 29562  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 29563  	return TCL_ERROR
 29564  __84:
 29565  	;
 29566  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29567  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 29568  		goto __85
 29569  	}
 29570  	if !(objc != 3) {
 29571  		goto __87
 29572  	}
 29573  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 29574  	return TCL_ERROR
 29575  	goto __88
 29576  __87:
 29577  	flushStmtCache(tls, pDb)
 29578  __88:
 29579  	;
 29580  	goto __86
 29581  __85:
 29582  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 29583  		goto __89
 29584  	}
 29585  	if !(objc != 4) {
 29586  		goto __91
 29587  	}
 29588  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 29589  	return TCL_ERROR
 29590  	goto __92
 29591  __91:
 29592  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 29593  		goto __93
 29594  	}
 29595  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 29596  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 29597  	return TCL_ERROR
 29598  	goto __94
 29599  __93:
 29600  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 29601  		goto __95
 29602  	}
 29603  	flushStmtCache(tls, pDb)
 29604  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 29605  	goto __96
 29606  __95:
 29607  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 29608  		goto __97
 29609  	}
 29610  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 29611  __97:
 29612  	;
 29613  __96:
 29614  	;
 29615  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 29616  __94:
 29617  	;
 29618  __92:
 29619  	;
 29620  	goto __90
 29621  __89:
 29622  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 29623  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 29624  		uintptr(0)))
 29625  	return TCL_ERROR
 29626  __90:
 29627  	;
 29628  __86:
 29629  	;
 29630  	goto __3
 29631  
 29632  __9:
 29633  	if !(objc != 2) {
 29634  		goto __98
 29635  	}
 29636  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 29637  	return TCL_ERROR
 29638  __98:
 29639  	;
 29640  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 29641  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 29642  	goto __3
 29643  
 29644  __10:
 29645  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 29646  	goto __3
 29647  
 29648  __11:
 29649  	if !(objc != 4) {
 29650  		goto __99
 29651  	}
 29652  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 29653  	return TCL_ERROR
 29654  __99:
 29655  	;
 29656  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29657  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 29658  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 29659  	if !(pCollate == uintptr(0)) {
 29660  		goto __100
 29661  	}
 29662  	return TCL_ERROR
 29663  __100:
 29664  	;
 29665  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 29666  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 29667  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 29668  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 29669  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29670  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 29671  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 29672  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 29673  		}{tclSqlCollate}))) != 0) {
 29674  		goto __101
 29675  	}
 29676  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 29677  	return TCL_ERROR
 29678  __101:
 29679  	;
 29680  	goto __3
 29681  
 29682  __12:
 29683  	if !(objc != 3) {
 29684  		goto __102
 29685  	}
 29686  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 29687  	return TCL_ERROR
 29688  __102:
 29689  	;
 29690  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 29691  		goto __103
 29692  	}
 29693  __104:
 29694  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 29695  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 29696  		goto __107
 29697  	}
 29698  	tcl.XTclFreeObj(tls, _objPtr)
 29699  __107:
 29700  	;
 29701  	goto __105
 29702  __105:
 29703  	if 0 != 0 {
 29704  		goto __104
 29705  	}
 29706  	goto __106
 29707  __106:
 29708  	;
 29709  __103:
 29710  	;
 29711  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29712  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 29713  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 29714  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 29715  	}{tclCollateNeeded})))
 29716  	goto __3
 29717  
 29718  __13:
 29719  	if !(objc > 3) {
 29720  		goto __108
 29721  	}
 29722  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29723  	return TCL_ERROR
 29724  	goto __109
 29725  __108:
 29726  	if !(objc == 2) {
 29727  		goto __110
 29728  	}
 29729  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29730  		goto __112
 29731  	}
 29732  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 29733  __112:
 29734  	;
 29735  	goto __111
 29736  __110:
 29737  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29738  		goto __113
 29739  	}
 29740  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 29741  __113:
 29742  	;
 29743  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 29744  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 29745  		goto __114
 29746  	}
 29747  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29748  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29749  	goto __115
 29750  __114:
 29751  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 29752  __115:
 29753  	;
 29754  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29755  		goto __116
 29756  	}
 29757  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29758  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29759  		f func(*libc.TLS, uintptr) int32
 29760  	}{DbCommitHandler})), pDb)
 29761  	goto __117
 29762  __116:
 29763  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29764  __117:
 29765  	;
 29766  __111:
 29767  	;
 29768  __109:
 29769  	;
 29770  	goto __3
 29771  
 29772  __14:
 29773  	if !(objc != 3) {
 29774  		goto __118
 29775  	}
 29776  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29777  	return TCL_ERROR
 29778  __118:
 29779  	;
 29780  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 29781  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 29782  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 29783  	goto __3
 29784  
 29785  __15:
 29786  	if !(objc > 4) {
 29787  		goto __119
 29788  	}
 29789  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 29790  	return TCL_ERROR
 29791  __119:
 29792  	;
 29793  	if !(objc == 2) {
 29794  		goto __120
 29795  	}
 29796  
 29797  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 29798  	ii = 0
 29799  __122:
 29800  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29801  		goto __124
 29802  	}
 29803  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 29804  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 29805  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29806  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 29807  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29808  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 29809  	goto __123
 29810  __123:
 29811  	ii++
 29812  	goto __122
 29813  	goto __124
 29814  __124:
 29815  	;
 29816  	goto __121
 29817  __120:
 29818  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29819  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 29820  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 29821  	if !(int32(*(*int8)(unsafe.Pointer(zOpt))) == '-') {
 29822  		goto __125
 29823  	}
 29824  	zOpt++
 29825  __125:
 29826  	;
 29827  	ii = 0
 29828  __126:
 29829  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29830  		goto __128
 29831  	}
 29832  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 29833  		goto __129
 29834  	}
 29835  	goto __128
 29836  __129:
 29837  	;
 29838  	goto __127
 29839  __127:
 29840  	ii++
 29841  	goto __126
 29842  	goto __128
 29843  __128:
 29844  	;
 29845  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29846  		goto __130
 29847  	}
 29848  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 29849  		ts+11945, uintptr(0)))
 29850  	return TCL_ERROR
 29851  __130:
 29852  	;
 29853  	if !(objc == 4) {
 29854  		goto __131
 29855  	}
 29856  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 29857  		goto __132
 29858  	}
 29859  	return TCL_ERROR
 29860  __132:
 29861  	;
 29862  __131:
 29863  	;
 29864  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 29865  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 29866  __121:
 29867  	;
 29868  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 29869  	goto __3
 29870  
 29871  __16:
 29872  	lineno = 0
 29873  	if !(objc < 5 || objc > 7) {
 29874  		goto __133
 29875  	}
 29876  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29877  		ts+11947)
 29878  	return TCL_ERROR
 29879  __133:
 29880  	;
 29881  	if !(objc >= 6) {
 29882  		goto __134
 29883  	}
 29884  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 29885  	goto __135
 29886  __134:
 29887  	zSep = ts + 12009
 29888  __135:
 29889  	;
 29890  	if !(objc >= 7) {
 29891  		goto __136
 29892  	}
 29893  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 29894  	goto __137
 29895  __136:
 29896  	zNull = ts + 584
 29897  __137:
 29898  	;
 29899  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29900  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 29901  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 29902  	nSep = strlen30(tls, zSep)
 29903  	nNull = strlen30(tls, zNull)
 29904  	if !(nSep == 0) {
 29905  		goto __138
 29906  	}
 29907  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 29908  		uintptr(0)))
 29909  	return TCL_ERROR
 29910  __138:
 29911  	;
 29912  	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) {
 29913  		goto __139
 29914  	}
 29915  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 29916  		ts+12099, uintptr(0)))
 29917  	return TCL_ERROR
 29918  __139:
 29919  	;
 29920  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 29921  	if !(zSql == uintptr(0)) {
 29922  		goto __140
 29923  	}
 29924  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 29925  	return TCL_ERROR
 29926  __140:
 29927  	;
 29928  	nByte = strlen30(tls, zSql)
 29929  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29930  	sqlite3.Xsqlite3_free(tls, zSql)
 29931  	if !(rc != 0) {
 29932  		goto __141
 29933  	}
 29934  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29935  	nCol = 0
 29936  	goto __142
 29937  __141:
 29938  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29939  __142:
 29940  	;
 29941  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29942  	if !(nCol == 0) {
 29943  		goto __143
 29944  	}
 29945  	return TCL_ERROR
 29946  __143:
 29947  	;
 29948  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 29949  	if !(zSql == uintptr(0)) {
 29950  		goto __144
 29951  	}
 29952  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 29953  	return TCL_ERROR
 29954  __144:
 29955  	;
 29956  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 29957  		libc.VaList(bp+384, zConflict, zTable))
 29958  	j = strlen30(tls, zSql)
 29959  	i = 1
 29960  __145:
 29961  	if !(i < nCol) {
 29962  		goto __147
 29963  	}
 29964  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(',')
 29965  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 29966  	goto __146
 29967  __146:
 29968  	i++
 29969  	goto __145
 29970  	goto __147
 29971  __147:
 29972  	;
 29973  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(')')
 29974  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 29975  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29976  	libc.Xfree(tls, zSql)
 29977  	if !(rc != 0) {
 29978  		goto __148
 29979  	}
 29980  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29981  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29982  	return TCL_ERROR
 29983  __148:
 29984  	;
 29985  	in = libc.Xfopen(tls, zFile, ts+4402)
 29986  	if !(in == uintptr(0)) {
 29987  		goto __149
 29988  	}
 29989  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 29990  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29991  	return TCL_ERROR
 29992  __149:
 29993  	;
 29994  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 29995  	if !(azCol == uintptr(0)) {
 29996  		goto __150
 29997  	}
 29998  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 29999  	libc.Xfclose(tls, in)
 30000  	return TCL_ERROR
 30001  __150:
 30002  	;
 30003  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 30004  	zCommit1 = ts + 11628
 30005  __151:
 30006  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 30007  		goto __152
 30008  	}
 30009  	lineno++
 30010  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 30011  	i = 0
 30012  	z = zLine
 30013  __153:
 30014  	if !(*(*int8)(unsafe.Pointer(z)) != 0) {
 30015  		goto __155
 30016  	}
 30017  	if !(int32(*(*int8)(unsafe.Pointer(z))) == int32(*(*int8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 30018  		goto __156
 30019  	}
 30020  	*(*int8)(unsafe.Pointer(z)) = int8(0)
 30021  	i++
 30022  	if !(i < nCol) {
 30023  		goto __157
 30024  	}
 30025  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 30026  	z += uintptr(nSep - 1)
 30027  __157:
 30028  	;
 30029  __156:
 30030  	;
 30031  	goto __154
 30032  __154:
 30033  	z++
 30034  	goto __153
 30035  	goto __155
 30036  __155:
 30037  	;
 30038  	if !(i+1 != nCol) {
 30039  		goto __158
 30040  	}
 30041  	nErr = strlen30(tls, zFile) + 200
 30042  	zErr = libc.Xmalloc(tls, uint64(nErr))
 30043  	if !(zErr != 0) {
 30044  		goto __159
 30045  	}
 30046  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 30047  		ts+12315,
 30048  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 30049  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 30050  	libc.Xfree(tls, zErr)
 30051  __159:
 30052  	;
 30053  	zCommit1 = ts + 7824
 30054  	goto __152
 30055  __158:
 30056  	;
 30057  	i = 0
 30058  __160:
 30059  	if !(i < nCol) {
 30060  		goto __162
 30061  	}
 30062  
 30063  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 30064  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 30065  		goto __163
 30066  	}
 30067  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 30068  	goto __164
 30069  __163:
 30070  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 30071  __164:
 30072  	;
 30073  	goto __161
 30074  __161:
 30075  	i++
 30076  	goto __160
 30077  	goto __162
 30078  __162:
 30079  	;
 30080  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30081  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30082  	libc.Xfree(tls, zLine)
 30083  	if !(rc != SQLITE_OK) {
 30084  		goto __165
 30085  	}
 30086  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30087  	zCommit1 = ts + 7824
 30088  	goto __152
 30089  __165:
 30090  	;
 30091  	goto __151
 30092  __152:
 30093  	;
 30094  	libc.Xfree(tls, azCol)
 30095  	libc.Xfclose(tls, in)
 30096  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 30097  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 30098  
 30099  	if !(int32(*(*int8)(unsafe.Pointer(zCommit1))) == 'C') {
 30100  		goto __166
 30101  	}
 30102  
 30103  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 30104  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 30105  	rc = TCL_OK
 30106  	goto __167
 30107  __166:
 30108  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 30109  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 30110  		uintptr(0)))
 30111  	rc = TCL_ERROR
 30112  __167:
 30113  	;
 30114  	goto __3
 30115  
 30116  __17:
 30117  	zSchema = uintptr(0)
 30118  	pValue = uintptr(0)
 30119  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 30120  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 30121  
 30122  	if !(objc < 3) {
 30123  		goto __168
 30124  	}
 30125  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 30126  	rc = TCL_ERROR
 30127  	goto __3
 30128  __168:
 30129  	;
 30130  	i1 = 2
 30131  __169:
 30132  	if !(i1 < objc-1) {
 30133  		goto __171
 30134  	}
 30135  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 30136  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 30137  		goto __172
 30138  	}
 30139  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 30140  	if !(rc != 0) {
 30141  		goto __173
 30142  	}
 30143  	goto deserialize_error
 30144  __173:
 30145  	;
 30146  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 30147  	goto __170
 30148  __172:
 30149  	;
 30150  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 30151  		goto __174
 30152  	}
 30153  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 30154  	if !(rc != 0) {
 30155  		goto __175
 30156  	}
 30157  	goto deserialize_error
 30158  __175:
 30159  	;
 30160  	goto __170
 30161  __174:
 30162  	;
 30163  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*int8)(unsafe.Pointer(z1))) != '-') {
 30164  		goto __176
 30165  	}
 30166  	zSchema = z1
 30167  	goto __170
 30168  __176:
 30169  	;
 30170  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 30171  	rc = TCL_ERROR
 30172  	goto deserialize_error
 30173  	goto __170
 30174  __170:
 30175  	i1++
 30176  	goto __169
 30177  	goto __171
 30178  __171:
 30179  	;
 30180  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30181  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 30182  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30183  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30184  		goto __177
 30185  	}
 30186  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 30187  	rc = TCL_ERROR
 30188  	goto __178
 30189  __177:
 30190  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 30191  		goto __179
 30192  	}
 30193  	libc.Xmemcpy(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 30194  __179:
 30195  	;
 30196  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 30197  		goto __180
 30198  	}
 30199  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 30200  	goto __181
 30201  __180:
 30202  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 30203  __181:
 30204  	;
 30205  	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))
 30206  	if !(xrc != 0) {
 30207  		goto __182
 30208  	}
 30209  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 30210  	rc = TCL_ERROR
 30211  __182:
 30212  	;
 30213  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 30214  		goto __183
 30215  	}
 30216  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 30217  __183:
 30218  	;
 30219  __178:
 30220  	;
 30221  deserialize_error:
 30222  	goto __3
 30223  
 30224  __18:
 30225  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 30226  		uintptr(0)))
 30227  	return TCL_ERROR
 30228  
 30229  __19:
 30230  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30231  	goto __3
 30232  
 30233  __20:
 30234  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30235  	goto __3
 30236  
 30237  __21:
 30238  __22:
 30239  	pResult4 = uintptr(0)
 30240  	if !(objc != 3) {
 30241  		goto __184
 30242  	}
 30243  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30244  	return TCL_ERROR
 30245  __184:
 30246  	;
 30247  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30248  	rc = dbEvalStep(tls, bp+1176)
 30249  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 30250  		goto __185
 30251  	}
 30252  	if !(rc == TCL_OK) {
 30253  		goto __187
 30254  	}
 30255  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 30256  	goto __188
 30257  __187:
 30258  	if !(rc == TCL_BREAK) {
 30259  		goto __189
 30260  	}
 30261  	tcl.XTcl_ResetResult(tls, interp)
 30262  __189:
 30263  	;
 30264  __188:
 30265  	;
 30266  	goto __186
 30267  __185:
 30268  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 30269  		goto __190
 30270  	}
 30271  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 30272  __190:
 30273  	;
 30274  __186:
 30275  	;
 30276  	dbEvalFinalize(tls, bp+1176)
 30277  	if !(pResult4 != 0) {
 30278  		goto __191
 30279  	}
 30280  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 30281  __191:
 30282  	;
 30283  	if !(rc == TCL_BREAK) {
 30284  		goto __192
 30285  	}
 30286  	rc = TCL_OK
 30287  __192:
 30288  	;
 30289  	goto __3
 30290  
 30291  __23:
 30292  	evalFlags = 0
 30293  __193:
 30294  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*int8)(unsafe.Pointer(zOpt1))) == '-') {
 30295  		goto __194
 30296  	}
 30297  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 30298  		goto __195
 30299  	}
 30300  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 30301  	goto __196
 30302  __195:
 30303  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 30304  	return TCL_ERROR
 30305  __196:
 30306  	;
 30307  	objc--
 30308  	objv += 8
 30309  	goto __193
 30310  __194:
 30311  	;
 30312  	if !(objc < 3 || objc > 5) {
 30313  		goto __197
 30314  	}
 30315  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30316  		ts+12569)
 30317  	return TCL_ERROR
 30318  __197:
 30319  	;
 30320  	if !(objc == 3) {
 30321  		goto __198
 30322  	}
 30323  	pRet = tcl.XTcl_NewObj(tls)
 30324  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 30325  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 30326  __200:
 30327  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 30328  		goto __201
 30329  	}
 30330  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 30331  	i2 = 0
 30332  __202:
 30333  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 30334  		goto __204
 30335  	}
 30336  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 30337  	goto __203
 30338  __203:
 30339  	i2++
 30340  	goto __202
 30341  	goto __204
 30342  __204:
 30343  	;
 30344  	goto __200
 30345  __201:
 30346  	;
 30347  	dbEvalFinalize(tls, bp+1232)
 30348  	if !(rc == TCL_BREAK) {
 30349  		goto __205
 30350  	}
 30351  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 30352  	rc = TCL_OK
 30353  __205:
 30354  	;
 30355  __206:
 30356  	_objPtr1 = pRet
 30357  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 30358  		goto __209
 30359  	}
 30360  	tcl.XTclFreeObj(tls, _objPtr1)
 30361  __209:
 30362  	;
 30363  	goto __207
 30364  __207:
 30365  	if 0 != 0 {
 30366  		goto __206
 30367  	}
 30368  	goto __208
 30369  __208:
 30370  	;
 30371  	goto __199
 30372  __198:
 30373  	pArray = uintptr(0)
 30374  
 30375  	if !(objc >= 5 && *(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 30376  		goto __210
 30377  	}
 30378  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 30379  __210:
 30380  	;
 30381  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30382  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 30383  
 30384  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 30385  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 30386  
 30387  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 30388  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 30389  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 30390  __199:
 30391  	;
 30392  	goto __3
 30393  
 30394  __24:
 30395  	flags1 = SQLITE_UTF8
 30396  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 30397  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 30398  	if !(objc < 4) {
 30399  		goto __211
 30400  	}
 30401  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 30402  	return TCL_ERROR
 30403  __211:
 30404  	;
 30405  	i3 = 3
 30406  __212:
 30407  	if !(i3 < objc-1) {
 30408  		goto __214
 30409  	}
 30410  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 30411  	n1 = strlen30(tls, z2)
 30412  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 30413  		goto __215
 30414  	}
 30415  	if !(i3 == objc-2) {
 30416  		goto __217
 30417  	}
 30418  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 30419  	return TCL_ERROR
 30420  __217:
 30421  	;
 30422  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 30423  		goto __218
 30424  	}
 30425  	return TCL_ERROR
 30426  __218:
 30427  	;
 30428  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 30429  		goto __219
 30430  	}
 30431  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 30432  		uintptr(0)))
 30433  	return TCL_ERROR
 30434  __219:
 30435  	;
 30436  	i3++
 30437  	goto __216
 30438  __215:
 30439  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 30440  		goto __220
 30441  	}
 30442  	flags1 = flags1 | SQLITE_DETERMINISTIC
 30443  	goto __221
 30444  __220:
 30445  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 30446  		goto __222
 30447  	}
 30448  	flags1 = flags1 | SQLITE_DIRECTONLY
 30449  	goto __223
 30450  __222:
 30451  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 30452  		goto __224
 30453  	}
 30454  	flags1 = flags1 | SQLITE_INNOCUOUS
 30455  	goto __225
 30456  __224:
 30457  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 30458  		goto __226
 30459  	}
 30460  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 30461  
 30462  	if !(i3 == objc-2) {
 30463  		goto __228
 30464  	}
 30465  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 30466  	return TCL_ERROR
 30467  __228:
 30468  	;
 30469  	i3++
 30470  	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) {
 30471  		goto __229
 30472  	}
 30473  	return TCL_ERROR
 30474  __229:
 30475  	;
 30476  	*(*int32)(unsafe.Pointer(bp + 1368))++
 30477  	goto __227
 30478  __226:
 30479  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 30480  		ts+12783, uintptr(0)))
 30481  	return TCL_ERROR
 30482  __227:
 30483  	;
 30484  __225:
 30485  	;
 30486  __223:
 30487  	;
 30488  __221:
 30489  	;
 30490  __216:
 30491  	;
 30492  	goto __213
 30493  __213:
 30494  	i3++
 30495  	goto __212
 30496  	goto __214
 30497  __214:
 30498  	;
 30499  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30500  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 30501  	pFunc = findSqlFunc(tls, pDb, zName1)
 30502  	if !(pFunc == uintptr(0)) {
 30503  		goto __230
 30504  	}
 30505  	return TCL_ERROR
 30506  __230:
 30507  	;
 30508  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 30509  		goto __231
 30510  	}
 30511  __232:
 30512  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 30513  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 30514  		goto __235
 30515  	}
 30516  	tcl.XTclFreeObj(tls, _objPtr2)
 30517  __235:
 30518  	;
 30519  	goto __233
 30520  __233:
 30521  	if 0 != 0 {
 30522  		goto __232
 30523  	}
 30524  	goto __234
 30525  __234:
 30526  	;
 30527  __231:
 30528  	;
 30529  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 30530  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 30531  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 30532  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 30533  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 30534  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 30535  			f func(*libc.TLS, uintptr, int32, uintptr)
 30536  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 30537  	if !(rc != SQLITE_OK) {
 30538  		goto __236
 30539  	}
 30540  	rc = TCL_ERROR
 30541  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30542  __236:
 30543  	;
 30544  	goto __3
 30545  
 30546  __25:
 30547  	isReadonly1 = 0
 30548  	zDb = ts + 85
 30549  
 30550  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 30551  		goto __237
 30552  	}
 30553  	isReadonly1 = 1
 30554  __237:
 30555  	;
 30556  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 30557  		goto __238
 30558  	}
 30559  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 30560  	return TCL_ERROR
 30561  __238:
 30562  	;
 30563  	if !(objc == 6+isReadonly1) {
 30564  		goto __239
 30565  	}
 30566  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 30567  __239:
 30568  	;
 30569  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 30570  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 30571  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 30572  
 30573  	if !(rc == TCL_OK) {
 30574  		goto __240
 30575  	}
 30576  	rc = createIncrblobChannel(tls,
 30577  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 30578  __240:
 30579  	;
 30580  	goto __3
 30581  
 30582  __26:
 30583  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30584  	goto __3
 30585  
 30586  __27:
 30587  	if !(objc != 2 && objc != 3) {
 30588  		goto __241
 30589  	}
 30590  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 30591  	return TCL_ERROR
 30592  __241:
 30593  	;
 30594  	if !(objc == 3) {
 30595  		goto __242
 30596  	}
 30597  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 30598  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 30599  		goto __243
 30600  	}
 30601  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30602  __243:
 30603  	;
 30604  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 30605  		goto __244
 30606  	}
 30607  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 30608  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))))
 30609  	*(*int8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = int8(0)
 30610  	goto __245
 30611  __244:
 30612  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 30613  __245:
 30614  	;
 30615  __242:
 30616  	;
 30617  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 30618  	goto __3
 30619  
 30620  __28:
 30621  	if !(objc != 2) {
 30622  		goto __246
 30623  	}
 30624  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30625  	return TCL_ERROR
 30626  __246:
 30627  	;
 30628  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30629  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 30630  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 30631  	goto __3
 30632  
 30633  __29:
 30634  	if !(objc == 2) {
 30635  		goto __247
 30636  	}
 30637  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30638  		goto __249
 30639  	}
 30640  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 30641  __249:
 30642  	;
 30643  	goto __248
 30644  __247:
 30645  	if !(objc == 4) {
 30646  		goto __250
 30647  	}
 30648  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 30649  		goto __252
 30650  	}
 30651  	return TCL_ERROR
 30652  __252:
 30653  	;
 30654  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30655  		goto __253
 30656  	}
 30657  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30658  __253:
 30659  	;
 30660  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 30661  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 30662  		goto __254
 30663  	}
 30664  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30665  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30666  	goto __255
 30667  __254:
 30668  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 30669  __255:
 30670  	;
 30671  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30672  		goto __256
 30673  	}
 30674  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30675  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 30676  		f func(*libc.TLS, uintptr) int32
 30677  	}{DbProgressHandler})), pDb)
 30678  	goto __257
 30679  __256:
 30680  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 30681  __257:
 30682  	;
 30683  	goto __251
 30684  __250:
 30685  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 30686  	return TCL_ERROR
 30687  __251:
 30688  	;
 30689  __248:
 30690  	;
 30691  	goto __3
 30692  
 30693  __30:
 30694  	if !(objc > 3) {
 30695  		goto __258
 30696  	}
 30697  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30698  	return TCL_ERROR
 30699  	goto __259
 30700  __258:
 30701  	if !(objc == 2) {
 30702  		goto __260
 30703  	}
 30704  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30705  		goto __262
 30706  	}
 30707  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 30708  __262:
 30709  	;
 30710  	goto __261
 30711  __260:
 30712  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30713  		goto __263
 30714  	}
 30715  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30716  __263:
 30717  	;
 30718  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 30719  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 30720  		goto __264
 30721  	}
 30722  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30723  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30724  	goto __265
 30725  __264:
 30726  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 30727  __265:
 30728  	;
 30729  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30730  		goto __266
 30731  	}
 30732  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30733  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30734  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 30735  	}{DbProfileHandler})), pDb)
 30736  	goto __267
 30737  __266:
 30738  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30739  __267:
 30740  	;
 30741  __261:
 30742  	;
 30743  __259:
 30744  	;
 30745  	goto __3
 30746  
 30747  __31:
 30748  	if !(objc != 3) {
 30749  		goto __268
 30750  	}
 30751  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 30752  	return TCL_ERROR
 30753  __268:
 30754  	;
 30755  	goto __3
 30756  
 30757  __32:
 30758  	nTimeout = 0
 30759  
 30760  	if !(objc == 3) {
 30761  		goto __269
 30762  	}
 30763  	zDestDb = ts + 85
 30764  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30765  	goto __270
 30766  __269:
 30767  	if !(objc == 4) {
 30768  		goto __271
 30769  	}
 30770  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30771  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 30772  	goto __272
 30773  __271:
 30774  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 30775  	return TCL_ERROR
 30776  __272:
 30777  	;
 30778  __270:
 30779  	;
 30780  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 30781  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 30782  	if !(rc != SQLITE_OK) {
 30783  		goto __273
 30784  	}
 30785  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 30786  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 30787  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30788  	return TCL_ERROR
 30789  __273:
 30790  	;
 30791  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 30792  	if !(pBackup1 == uintptr(0)) {
 30793  		goto __274
 30794  	}
 30795  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 30796  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30797  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30798  	return TCL_ERROR
 30799  __274:
 30800  	;
 30801  __275:
 30802  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 30803  		rc == SQLITE_BUSY) {
 30804  		goto __276
 30805  	}
 30806  	if !(rc == SQLITE_BUSY) {
 30807  		goto __277
 30808  	}
 30809  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 30810  		goto __278
 30811  	}
 30812  	goto __276
 30813  __278:
 30814  	;
 30815  	sqlite3.Xsqlite3_sleep(tls, 100)
 30816  __277:
 30817  	;
 30818  	goto __275
 30819  __276:
 30820  	;
 30821  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 30822  	if !(rc == SQLITE_DONE) {
 30823  		goto __279
 30824  	}
 30825  	rc = TCL_OK
 30826  	goto __280
 30827  __279:
 30828  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 30829  		goto __281
 30830  	}
 30831  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 30832  		uintptr(0)))
 30833  	rc = TCL_ERROR
 30834  	goto __282
 30835  __281:
 30836  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 30837  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30838  	rc = TCL_ERROR
 30839  __282:
 30840  	;
 30841  __280:
 30842  	;
 30843  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30844  	goto __3
 30845  
 30846  __33:
 30847  	if objc >= 3 {
 30848  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30849  	} else {
 30850  		zSchema1 = ts + 85
 30851  	}
 30852  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 30853  	if !(objc != 2 && objc != 3) {
 30854  		goto __283
 30855  	}
 30856  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 30857  	rc = TCL_ERROR
 30858  	goto __284
 30859  __283:
 30860  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 30861  	if !(pData1 != 0) {
 30862  		goto __285
 30863  	}
 30864  	needFree = 0
 30865  	goto __286
 30866  __285:
 30867  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 30868  	needFree = 1
 30869  __286:
 30870  	;
 30871  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 30872  	if !(needFree != 0) {
 30873  		goto __287
 30874  	}
 30875  	sqlite3.Xsqlite3_free(tls, pData1)
 30876  __287:
 30877  	;
 30878  __284:
 30879  	;
 30880  	goto __3
 30881  
 30882  __34:
 30883  	if !(objc != 3) {
 30884  		goto __288
 30885  	}
 30886  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 30887  	return TCL_ERROR
 30888  __288:
 30889  	;
 30890  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30891  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 30892  		goto __289
 30893  	}
 30894  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 30895  	goto __290
 30896  __289:
 30897  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 30898  		goto __291
 30899  	}
 30900  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 30901  	goto __292
 30902  __291:
 30903  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 30904  		goto __293
 30905  	}
 30906  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 30907  	goto __294
 30908  __293:
 30909  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 30910  		goto __295
 30911  	}
 30912  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 30913  	goto __296
 30914  __295:
 30915  	tcl.XTcl_AppendResult(tls, interp,
 30916  		libc.VaList(bp+888, ts+13061,
 30917  			uintptr(0)))
 30918  	return TCL_ERROR
 30919  __296:
 30920  	;
 30921  __294:
 30922  	;
 30923  __292:
 30924  	;
 30925  __290:
 30926  	;
 30927  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 30928  	goto __3
 30929  
 30930  __35:
 30931  	if !(objc != 3) {
 30932  		goto __297
 30933  	}
 30934  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 30935  	return TCL_ERROR
 30936  __297:
 30937  	;
 30938  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 30939  		goto __298
 30940  	}
 30941  	return TCL_ERROR
 30942  __298:
 30943  	;
 30944  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 30945  	goto __3
 30946  
 30947  __36:
 30948  	if !(objc != 2) {
 30949  		goto __299
 30950  	}
 30951  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30952  	return TCL_ERROR
 30953  __299:
 30954  	;
 30955  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 30956  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30957  	goto __3
 30958  
 30959  __37:
 30960  	if !(objc > 3) {
 30961  		goto __300
 30962  	}
 30963  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30964  	return TCL_ERROR
 30965  	goto __301
 30966  __300:
 30967  	if !(objc == 2) {
 30968  		goto __302
 30969  	}
 30970  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30971  		goto __304
 30972  	}
 30973  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 30974  __304:
 30975  	;
 30976  	goto __303
 30977  __302:
 30978  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30979  		goto __305
 30980  	}
 30981  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 30982  __305:
 30983  	;
 30984  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 30985  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 30986  		goto __306
 30987  	}
 30988  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30989  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30990  	goto __307
 30991  __306:
 30992  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 30993  __307:
 30994  	;
 30995  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30996  		goto __308
 30997  	}
 30998  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30999  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31000  		f func(*libc.TLS, uintptr, uintptr)
 31001  	}{DbTraceHandler})), pDb)
 31002  	goto __309
 31003  __308:
 31004  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31005  __309:
 31006  	;
 31007  __303:
 31008  	;
 31009  __301:
 31010  	;
 31011  	goto __3
 31012  
 31013  __38:
 31014  	if !(objc > 4) {
 31015  		goto __310
 31016  	}
 31017  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 31018  	return TCL_ERROR
 31019  	goto __311
 31020  __310:
 31021  	if !(objc == 2) {
 31022  		goto __312
 31023  	}
 31024  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31025  		goto __314
 31026  	}
 31027  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 31028  __314:
 31029  	;
 31030  	goto __313
 31031  __312:
 31032  	wMask = int64(0)
 31033  	if !(objc == 4) {
 31034  		goto __315
 31035  	}
 31036  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 31037  		goto __317
 31038  	}
 31039  	return TCL_ERROR
 31040  __317:
 31041  	;
 31042  	i4 = 0
 31043  __318:
 31044  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 31045  		goto __320
 31046  	}
 31047  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 31048  		goto __321
 31049  	}
 31050  	return TCL_ERROR
 31051  __321:
 31052  	;
 31053  	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) {
 31054  		goto __322
 31055  	}
 31056  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 31057  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 31058  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 31059  		goto __324
 31060  	}
 31061  __326:
 31062  	_objPtr3 = pError
 31063  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 31064  		goto __329
 31065  	}
 31066  	tcl.XTclFreeObj(tls, _objPtr3)
 31067  __329:
 31068  	;
 31069  	goto __327
 31070  __327:
 31071  	if 0 != 0 {
 31072  		goto __326
 31073  	}
 31074  	goto __328
 31075  __328:
 31076  	;
 31077  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 31078  	goto __325
 31079  __324:
 31080  	tcl.XTcl_SetObjResult(tls, interp, pError)
 31081  __330:
 31082  	_objPtr4 = pError
 31083  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 31084  		goto __333
 31085  	}
 31086  	tcl.XTclFreeObj(tls, _objPtr4)
 31087  __333:
 31088  	;
 31089  	goto __331
 31090  __331:
 31091  	if 0 != 0 {
 31092  		goto __330
 31093  	}
 31094  	goto __332
 31095  __332:
 31096  	;
 31097  	return TCL_ERROR
 31098  __325:
 31099  	;
 31100  	goto __323
 31101  __322:
 31102  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 31103  	case uint32(0):
 31104  		goto __335
 31105  	case uint32(1):
 31106  		goto __336
 31107  	case uint32(2):
 31108  		goto __337
 31109  	case uint32(3):
 31110  		goto __338
 31111  	}
 31112  	goto __334
 31113  __335:
 31114  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 31115  	goto __334
 31116  __336:
 31117  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 31118  	goto __334
 31119  __337:
 31120  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 31121  	goto __334
 31122  __338:
 31123  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 31124  	goto __334
 31125  __334:
 31126  	;
 31127  __323:
 31128  	;
 31129  	goto __319
 31130  __319:
 31131  	i4++
 31132  	goto __318
 31133  	goto __320
 31134  __320:
 31135  	;
 31136  	goto __316
 31137  __315:
 31138  	wMask = int64(SQLITE_TRACE_STMT)
 31139  __316:
 31140  	;
 31141  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31142  		goto __339
 31143  	}
 31144  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 31145  __339:
 31146  	;
 31147  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 31148  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 31149  		goto __340
 31150  	}
 31151  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31152  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 31153  	goto __341
 31154  __340:
 31155  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 31156  __341:
 31157  	;
 31158  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31159  		goto __342
 31160  	}
 31161  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31162  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 31163  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 31164  	}{DbTraceV2Handler})), pDb)
 31165  	goto __343
 31166  __342:
 31167  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 31168  __343:
 31169  	;
 31170  __313:
 31171  	;
 31172  __311:
 31173  	;
 31174  	goto __3
 31175  
 31176  __39:
 31177  	zBegin = ts + 13159
 31178  	if !(objc != 3 && objc != 4) {
 31179  		goto __344
 31180  	}
 31181  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 31182  	return TCL_ERROR
 31183  __344:
 31184  	;
 31185  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 31186  		goto __345
 31187  	}
 31188  	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) {
 31189  		goto __346
 31190  	}
 31191  	return TCL_ERROR
 31192  __346:
 31193  	;
 31194  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 31195  	case uint32(0):
 31196  		goto __348
 31197  	case uint32(1):
 31198  		goto __349
 31199  	case uint32(2):
 31200  		goto __350
 31201  	}
 31202  	goto __347
 31203  __348:
 31204  	;
 31205  	goto __347
 31206  __349:
 31207  	zBegin = ts + 13217
 31208  	goto __347
 31209  __350:
 31210  	zBegin = ts + 13233
 31211  	goto __347
 31212  __347:
 31213  	;
 31214  __345:
 31215  	;
 31216  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 31217  
 31218  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 31219  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 31220  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 31221  	if !(rc != SQLITE_OK) {
 31222  		goto __351
 31223  	}
 31224  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31225  	return TCL_ERROR
 31226  __351:
 31227  	;
 31228  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 31229  
 31230  	addDatabaseRef(tls, pDb)
 31231  	if !(DbUseNre(tls) != 0) {
 31232  		goto __352
 31233  	}
 31234  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31235  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 31236  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1464)), uintptr(0), uintptr(0), uintptr(0))
 31237  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 31238  	goto __353
 31239  __352:
 31240  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 31241  __353:
 31242  	;
 31243  	goto __3
 31244  
 31245  __40:
 31246  	if !(objc != 2 && objc != 3) {
 31247  		goto __354
 31248  	}
 31249  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31250  	rc = TCL_ERROR
 31251  	goto __355
 31252  __354:
 31253  	xNotify = uintptr(0)
 31254  	pNotifyArg = uintptr(0)
 31255  
 31256  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 31257  		goto __356
 31258  	}
 31259  __357:
 31260  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 31261  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 31262  		goto __360
 31263  	}
 31264  	tcl.XTclFreeObj(tls, _objPtr5)
 31265  __360:
 31266  	;
 31267  	goto __358
 31268  __358:
 31269  	if 0 != 0 {
 31270  		goto __357
 31271  	}
 31272  	goto __359
 31273  __359:
 31274  	;
 31275  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 31276  __356:
 31277  	;
 31278  	if !(objc == 3) {
 31279  		goto __361
 31280  	}
 31281  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 31282  		f func(*libc.TLS, uintptr, int32)
 31283  	}{DbUnlockNotify}))
 31284  	pNotifyArg = pDb
 31285  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31286  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 31287  __361:
 31288  	;
 31289  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 31290  		goto __362
 31291  	}
 31292  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31293  	rc = TCL_ERROR
 31294  __362:
 31295  	;
 31296  __355:
 31297  	;
 31298  	goto __3
 31299  
 31300  __41:
 31301  	if !(objc < 3) {
 31302  		goto __363
 31303  	}
 31304  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 31305  __363:
 31306  	;
 31307  	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) {
 31308  		goto __364
 31309  	}
 31310  	return TCL_ERROR
 31311  __364:
 31312  	;
 31313  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 31314  	case uint32(0):
 31315  		goto __366
 31316  
 31317  	case uint32(2):
 31318  		goto __367
 31319  
 31320  	case uint32(1):
 31321  		goto __368
 31322  
 31323  	case uint32(3):
 31324  		goto __369
 31325  	case uint32(4):
 31326  		goto __370
 31327  	}
 31328  	goto __365
 31329  __366:
 31330  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31331  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 31332  	goto __365
 31333  
 31334  __367:
 31335  	if !(objc > 4) {
 31336  		goto __371
 31337  	}
 31338  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 31339  	return TCL_ERROR
 31340  __371:
 31341  	;
 31342  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31343  		if objc == 4 {
 31344  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 31345  		}
 31346  		return uintptr(0)
 31347  	}(), pDb+112)
 31348  	goto __365
 31349  
 31350  __368:
 31351  	if !(objc != 3) {
 31352  		goto __372
 31353  	}
 31354  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 31355  	return TCL_ERROR
 31356  __372:
 31357  	;
 31358  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31359  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 31360  	goto __365
 31361  
 31362  __369:
 31363  __370:
 31364  	if !(objc != 4) {
 31365  		goto __373
 31366  	}
 31367  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 31368  	return TCL_ERROR
 31369  __373:
 31370  	;
 31371  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 31372  		goto __374
 31373  	}
 31374  	return TCL_ERROR
 31375  __374:
 31376  	;
 31377  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 31378  		goto __375
 31379  	}
 31380  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31381  	goto __376
 31382  __375:
 31383  	;
 31384  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 31385  __376:
 31386  	;
 31387  	if !(rc == SQLITE_OK) {
 31388  		goto __377
 31389  	}
 31390  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 31391  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 31392  	goto __378
 31393  __377:
 31394  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31395  	return TCL_ERROR
 31396  __378:
 31397  	;
 31398  __365:
 31399  	;
 31400  	goto __3
 31401  
 31402  __42:
 31403  __43:
 31404  __44:
 31405  	ppHook = uintptr(0)
 31406  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 31407  		goto __379
 31408  	}
 31409  	ppHook = pDb + 128
 31410  __379:
 31411  	;
 31412  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 31413  		goto __380
 31414  	}
 31415  	ppHook = pDb + 104
 31416  __380:
 31417  	;
 31418  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 31419  		goto __381
 31420  	}
 31421  	ppHook = pDb + 120
 31422  __381:
 31423  	;
 31424  	if !(objc > 3) {
 31425  		goto __382
 31426  	}
 31427  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31428  	return TCL_ERROR
 31429  __382:
 31430  	;
 31431  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31432  		if objc == 3 {
 31433  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 31434  		}
 31435  		return uintptr(0)
 31436  	}(), ppHook)
 31437  	goto __3
 31438  
 31439  __45:
 31440  	i5 = 2
 31441  __383:
 31442  	if !(i5 < objc) {
 31443  		goto __385
 31444  	}
 31445  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 31446  
 31447  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 31448  		goto __386
 31449  	}
 31450  	i5++
 31451  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 31452  		goto __388
 31453  	}
 31454  	return TCL_ERROR
 31455  __388:
 31456  	;
 31457  	goto __387
 31458  __386:
 31459  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 31460  		goto __389
 31461  	}
 31462  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+1488, ts+9889,
 31463  		libc.VaList(bp+984, func() uintptr {
 31464  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 31465  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 31466  			}
 31467  			return uintptr(0)
 31468  		}()))
 31469  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 31470  	goto __390
 31471  __389:
 31472  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 31473  	return TCL_ERROR
 31474  __390:
 31475  	;
 31476  __387:
 31477  	;
 31478  	goto __384
 31479  __384:
 31480  	i5++
 31481  	goto __383
 31482  	goto __385
 31483  __385:
 31484  	;
 31485  	if !(i5 == 2) {
 31486  		goto __391
 31487  	}
 31488  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 31489  __391:
 31490  	;
 31491  	goto __3
 31492  
 31493  __3:
 31494  	;
 31495  	return rc
 31496  }
 31497  
 31498  type DbConfigChoices = struct {
 31499  	FzName       uintptr
 31500  	Fop          int32
 31501  	F__ccgo_pad1 [4]byte
 31502  }
 31503  
 31504  var DB_strs = [43]uintptr{
 31505  	ts + 13351, ts + 13362, ts + 13369,
 31506  	ts + 13383, ts + 13388, ts + 13394,
 31507  	ts + 9490, ts + 13402, ts + 13410,
 31508  	ts + 13427, ts + 13439, ts + 13448,
 31509  	ts + 13455, ts + 13460, ts + 13472,
 31510  	ts + 13494, ts + 13504, ts + 4896,
 31511  	ts + 13516, ts + 13523, ts + 10868,
 31512  	ts + 13532, ts + 13542, ts + 13560,
 31513  	ts + 13570, ts + 13580, ts + 13590,
 31514  	ts + 9564, ts + 13598, ts + 13604,
 31515  	ts + 13612, ts + 13626, ts + 13636,
 31516  	ts + 13643, ts + 13651, ts + 13665,
 31517  	ts + 13671, ts + 13680, ts + 13692,
 31518  	ts + 13706, ts + 13718, ts + 13726,
 31519  	uintptr(0),
 31520  }
 31521  var aDbConfig = [16]DbConfigChoices{
 31522  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 31523  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 31524  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 31525  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 31526  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 31527  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 31528  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 31529  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 31530  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 31531  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 31532  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 31533  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 31534  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 31535  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 31536  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 31537  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 31538  }
 31539  var TTYPE_strs = [5]uintptr{
 31540  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 31541  }
 31542  var TTYPE_strs1 = [4]uintptr{
 31543  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 31544  }
 31545  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 31546  
 31547  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31548  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31549  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31550  	}{DbObjCmd})), cd, objc, objv)
 31551  }
 31552  
 31553  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 31554  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 31555  		ts+14017)
 31556  	return TCL_ERROR
 31557  }
 31558  
 31559  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31560  	bp := tls.Alloc(336)
 31561  	defer tls.Free(336)
 31562  
 31563  	var p uintptr
 31564  	var zArg uintptr
 31565  	var zErrMsg uintptr
 31566  	var i int32
 31567  	var zFile uintptr = uintptr(0)
 31568  	var zVfs uintptr = uintptr(0)
 31569  	var flags int32
 31570  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 31571  
 31572  	var rc int32
 31573  
 31574  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 31575  
 31576  	if objc == 1 {
 31577  		return sqliteCmdUsage(tls, interp, objv)
 31578  	}
 31579  	if objc == 2 {
 31580  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31581  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 31582  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 31583  			return TCL_OK
 31584  		}
 31585  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 31586  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 31587  			return TCL_OK
 31588  		}
 31589  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 31590  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 31591  			return TCL_OK
 31592  		}
 31593  		if int32(*(*int8)(unsafe.Pointer(zArg))) == '-' {
 31594  			return sqliteCmdUsage(tls, interp, objv)
 31595  		}
 31596  	}
 31597  	for i = 2; i < objc; i++ {
 31598  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31599  		if int32(*(*int8)(unsafe.Pointer(zArg))) != '-' {
 31600  			if zFile != uintptr(0) {
 31601  				return sqliteCmdUsage(tls, interp, objv)
 31602  			}
 31603  			zFile = zArg
 31604  			continue
 31605  		}
 31606  		if i == objc-1 {
 31607  			return sqliteCmdUsage(tls, interp, objv)
 31608  		}
 31609  		i++
 31610  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 31611  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 31612  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31613  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 31614  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 31615  				return TCL_ERROR
 31616  			}
 31617  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 31618  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 31619  				flags = flags | SQLITE_OPEN_READONLY
 31620  			} else {
 31621  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 31622  				flags = flags | SQLITE_OPEN_READWRITE
 31623  			}
 31624  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 31625  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 31626  				return TCL_ERROR
 31627  			}
 31628  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 31629  				flags = flags | SQLITE_OPEN_CREATE
 31630  			} else {
 31631  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 31632  			}
 31633  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 31634  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 31635  				return TCL_ERROR
 31636  			}
 31637  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 31638  				flags = flags | SQLITE_OPEN_NOFOLLOW
 31639  			} else {
 31640  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 31641  			}
 31642  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 31643  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 31644  				return TCL_ERROR
 31645  			}
 31646  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 31647  				flags = flags | SQLITE_OPEN_NOMUTEX
 31648  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31649  			} else {
 31650  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31651  			}
 31652  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 31653  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 31654  				return TCL_ERROR
 31655  			}
 31656  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 31657  				flags = flags | SQLITE_OPEN_FULLMUTEX
 31658  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31659  			} else {
 31660  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31661  			}
 31662  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 31663  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 31664  				return TCL_ERROR
 31665  			}
 31666  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 31667  				flags = flags | SQLITE_OPEN_URI
 31668  			} else {
 31669  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 31670  			}
 31671  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 31672  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 31673  				return TCL_ERROR
 31674  			}
 31675  		} else {
 31676  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 31677  			return TCL_ERROR
 31678  		}
 31679  	}
 31680  	zErrMsg = uintptr(0)
 31681  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 31682  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})))
 31683  	if zFile == uintptr(0) {
 31684  		zFile = ts + 584
 31685  	}
 31686  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31687  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 31688  	}
 31689  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 31690  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31691  		tcl.XTcl_DStringFree(tls, bp+120)
 31692  	}
 31693  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 31694  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 31695  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 31696  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 31697  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 31698  		}
 31699  	} else {
 31700  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 31701  	}
 31702  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 31703  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 31704  		tcl.XTcl_Free(tls, p)
 31705  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 31706  		return TCL_ERROR
 31707  	}
 31708  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 31709  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 31710  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 31711  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31712  	if DbUseNre(tls) != 0 {
 31713  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31714  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31715  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 31716  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31717  		}{DbObjCmd})),
 31718  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31719  	} else {
 31720  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31721  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31722  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31723  	}
 31724  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 31725  	return TCL_OK
 31726  }
 31727  
 31728  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31729  	var rc int32
 31730  	if 1 != 0 {
 31731  		rc = TCL_OK
 31732  	} else {
 31733  		rc = TCL_ERROR
 31734  	}
 31735  	if rc == TCL_OK {
 31736  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 31737  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31738  		}{DbMain})), uintptr(0), uintptr(0))
 31739  
 31740  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 31741  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31742  		}{DbMain})), uintptr(0), uintptr(0))
 31743  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 31744  	}
 31745  	return rc
 31746  }
 31747  
 31748  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31749  	return Sqlite3_Init(tls, interp)
 31750  }
 31751  
 31752  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31753  	return TCL_OK
 31754  }
 31755  
 31756  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31757  	return TCL_OK
 31758  }
 31759  
 31760  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 31761  	return TCL_ERROR
 31762  }
 31763  
 31764  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31765  	return TCL_ERROR
 31766  }
 31767  
 31768  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31769  	return Sqlite3_Init(tls, interp)
 31770  }
 31771  
 31772  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31773  	return Sqlite3_Init(tls, interp)
 31774  }
 31775  
 31776  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31777  	return TCL_OK
 31778  }
 31779  
 31780  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31781  	return TCL_OK
 31782  }
 31783  
 31784  func tclsh_main_loop(tls *libc.TLS) uintptr {
 31785  	return uintptr(unsafe.Pointer(&zMainloop))
 31786  }
 31787  
 31788  var zMainloop = *(*[431]int8)(unsafe.Pointer(ts + 14289))
 31789  
 31790  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 31791  	bp := tls.Alloc(64)
 31792  	defer tls.Free(64)
 31793  
 31794  	var interp uintptr
 31795  	var i int32
 31796  	var zScript uintptr = uintptr(0)
 31797  
 31798  	if libc.Xgetenv(tls, ts+14720) != 0 {
 31799  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 31800  			libc.Xfprintf(tls, libc.X__stderrp,
 31801  				ts+14739,
 31802  				libc.VaList(bp, libc.Xgetpid(tls)))
 31803  			libc.Xfgetc(tls, libc.X__stdinp)
 31804  		} else {
 31805  			libc.Xraise(tls, SIGTRAP)
 31806  		}
 31807  	}
 31808  
 31809  	sqlite3.Xsqlite3_shutdown(tls)
 31810  
 31811  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31812  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 31813  	interp = tcl.XTcl_CreateInterp(tls)
 31814  	Sqlite3_Init(tls, interp)
 31815  
 31816  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 31817  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 31818  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 31819  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 31820  	for i = 1; i < argc; i++ {
 31821  		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)
 31822  	}
 31823  	zScript = sqlite3TestInit(tls, interp)
 31824  	if zScript == uintptr(0) {
 31825  		zScript = tclsh_main_loop(tls)
 31826  	}
 31827  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 31828  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 31829  		if zInfo == uintptr(0) {
 31830  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 31831  		}
 31832  		libc.Xfprintf(tls, libc.X__stderrp, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 31833  		return 1
 31834  	}
 31835  	return 0
 31836  }
 31837  
 31838  type sqlite3_value = sqlite3_value1
 31839  
 31840  type sqlite3_context = sqlite3_context1
 31841  type PreUpdate = PreUpdate1
 31842  
 31843  type Vdbe = Vdbe1
 31844  
 31845  type Mem = sqlite3_value1
 31846  
 31847  type Op = VdbeOp1
 31848  
 31849  type Bool = uint32
 31850  
 31851  type AuxData1 = struct {
 31852  	FiAuxOp     int32
 31853  	FiAuxArg    int32
 31854  	FpAux       uintptr
 31855  	FxDeleteAux uintptr
 31856  	FpNextAux   uintptr
 31857  }
 31858  
 31859  type AuxData = AuxData1
 31860  
 31861  type VdbeCursor1 = struct {
 31862  	FeCurType       u8
 31863  	FiDb            i8
 31864  	FnullRow        u8
 31865  	FdeferredMoveto u8
 31866  	FisTable        u8
 31867  	F__ccgo_pad1    [3]byte
 31868  	FisEphemeral    uint8
 31869  	F__ccgo_pad2    [1]byte
 31870  	FseekHit        u16
 31871  	F__ccgo_pad3    [4]byte
 31872  	Fub             struct{ FpBtx uintptr }
 31873  	FseqCount       i64
 31874  	FcacheStatus    u32
 31875  	FseekResult     int32
 31876  	FpAltCursor     uintptr
 31877  	Fuc             struct{ FpCursor uintptr }
 31878  	FpKeyInfo       uintptr
 31879  	FiHdrOffset     u32
 31880  	FpgnoRoot       Pgno
 31881  	FnField         i16
 31882  	FnHdrParsed     u16
 31883  	F__ccgo_pad4    [4]byte
 31884  	FmovetoTarget   i64
 31885  	FaOffset        uintptr
 31886  	FaRow           uintptr
 31887  	FpayloadSize    u32
 31888  	FszRow          u32
 31889  	FaType          [1]u32
 31890  	F__ccgo_pad5    [4]byte
 31891  }
 31892  
 31893  type VdbeCursor = VdbeCursor1
 31894  
 31895  type VdbeFrame1 = struct {
 31896  	Fv         uintptr
 31897  	FpParent   uintptr
 31898  	FaOp       uintptr
 31899  	FanExec    uintptr
 31900  	FaMem      uintptr
 31901  	FapCsr     uintptr
 31902  	FaOnce     uintptr
 31903  	Ftoken     uintptr
 31904  	FlastRowid i64
 31905  	FpAuxData  uintptr
 31906  	FnCursor   int32
 31907  	Fpc        int32
 31908  	FnOp       int32
 31909  	FnMem      int32
 31910  	FnChildMem int32
 31911  	FnChildCsr int32
 31912  	FnChange   i64
 31913  	FnDbChange i64
 31914  }
 31915  
 31916  type VdbeFrame = VdbeFrame1
 31917  
 31918  type MemValue = struct{ Fr float64 }
 31919  
 31920  type bft = uint32
 31921  
 31922  type ScanStatus1 = struct {
 31923  	FaddrExplain int32
 31924  	FaddrLoop    int32
 31925  	FaddrVisit   int32
 31926  	FiSelectID   int32
 31927  	FnEst        LogEst
 31928  	F__ccgo_pad1 [6]byte
 31929  	FzName       uintptr
 31930  }
 31931  
 31932  type ScanStatus = ScanStatus1
 31933  
 31934  type DblquoteStr1 = struct {
 31935  	FpNextStr uintptr
 31936  	Fz        [8]int8
 31937  }
 31938  
 31939  type DblquoteStr = DblquoteStr1
 31940  
 31941  type ValueList1 = struct {
 31942  	FpCsr uintptr
 31943  	FpOut uintptr
 31944  }
 31945  
 31946  type ValueList = ValueList1
 31947  
 31948  func testHexToInt(tls *libc.TLS, h int32) int32 {
 31949  	if h >= '0' && h <= '9' {
 31950  		return h - '0'
 31951  	} else if h >= 'a' && h <= 'f' {
 31952  		return h - 'a' + 10
 31953  	} else {
 31954  		return h - 'A' + 10
 31955  	}
 31956  	return int32(0)
 31957  }
 31958  
 31959  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 31960  	bp := tls.Alloc(20)
 31961  	defer tls.Free(20)
 31962  
 31963  	if int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 'x' {
 31964  		z += uintptr(2)
 31965  	}
 31966  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 31967  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 31968  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(z)))))
 31969  		z++
 31970  	}
 31971  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 31972  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 31973  	} else {
 31974  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 31975  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 31976  	}
 31977  	return *(*uintptr)(unsafe.Pointer(bp))
 31978  }
 31979  
 31980  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31981  	bp := tls.Alloc(212)
 31982  	defer tls.Free(212)
 31983  
 31984  	var p uintptr
 31985  
 31986  	if objc != 2 {
 31987  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 31988  		return TCL_ERROR
 31989  	}
 31990  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 31991  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 31992  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 31993  		return TCL_ERROR
 31994  	}
 31995  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 31996  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 31997  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 31998  	return TCL_OK
 31999  }
 32000  
 32001  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 32002  	bp := tls.Alloc(64)
 32003  	defer tls.Free(64)
 32004  
 32005  	var p uintptr
 32006  
 32007  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 32008  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 32009  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 32010  	} else {
 32011  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 32012  	}
 32013  	return TCL_OK
 32014  }
 32015  
 32016  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 32017  	bp := tls.Alloc(248)
 32018  	defer tls.Free(248)
 32019  
 32020  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 32021  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 32022  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 32023  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+48,
 32024  			ts+14879,
 32025  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 32026  		tcl.XTcl_ResetResult(tls, interp)
 32027  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 32028  		return 1
 32029  	}
 32030  	return 0
 32031  }
 32032  
 32033  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 32034  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 32035  	return TCL_OK
 32036  }
 32037  
 32038  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 32039  	bp := tls.Alloc(8)
 32040  	defer tls.Free(8)
 32041  
 32042  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 32043  	return TCL_OK
 32044  }
 32045  
 32046  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 32047  	var str uintptr = pArg
 32048  	var i int32
 32049  
 32050  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 32051  		for i = 0; i < argc; i++ {
 32052  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32053  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 32054  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 32055  				}
 32056  				return ts + 5846
 32057  			}())
 32058  		}
 32059  	}
 32060  	for i = 0; i < argc; i++ {
 32061  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32062  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 32063  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 32064  			}
 32065  			return ts + 5846
 32066  		}())
 32067  	}
 32068  	return 0
 32069  }
 32070  
 32071  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32072  	return TCL_OK
 32073  }
 32074  
 32075  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32076  	var res int32 = 0
 32077  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 32078  		res = 1
 32079  	}
 32080  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 32081  	return TCL_OK
 32082  }
 32083  
 32084  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32085  	bp := tls.Alloc(310)
 32086  	defer tls.Free(310)
 32087  
 32088  	var rc int32
 32089  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32090  	var zSql uintptr
 32091  
 32092  	if argc != 4 {
 32093  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32094  			ts+14975, 0))
 32095  		return TCL_ERROR
 32096  	}
 32097  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32098  		return TCL_ERROR
 32099  	}
 32100  	tcl.XTcl_DStringInit(tls, bp+56)
 32101  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32102  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32103  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32104  	}{exec_printf_cb})), bp+56, bp+272)
 32105  	sqlite3.Xsqlite3_free(tls, zSql)
 32106  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32107  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32108  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32109  		if rc == SQLITE_OK {
 32110  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32111  		}
 32112  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32113  	}())
 32114  	tcl.XTcl_DStringFree(tls, bp+56)
 32115  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32116  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32117  	}
 32118  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32119  		return TCL_ERROR
 32120  	}
 32121  	return TCL_OK
 32122  }
 32123  
 32124  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32125  	bp := tls.Alloc(806)
 32126  	defer tls.Free(806)
 32127  
 32128  	var rc int32
 32129  	var i int32
 32130  	var j int32
 32131  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 32132  	var zHex uintptr
 32133  
 32134  	if argc != 3 {
 32135  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32136  			ts+14993, 0))
 32137  		return TCL_ERROR
 32138  	}
 32139  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 32140  		return TCL_ERROR
 32141  	}
 32142  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32143  	i = libc.AssignInt32(&j, 0)
 32144  __1:
 32145  	if !(uint64(i) < uint64(unsafe.Sizeof([501]int8{}))-uint64(1) && *(*int8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 32146  		goto __3
 32147  	}
 32148  	{
 32149  		if int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 32150  			*(*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))))))
 32151  			j = j + 2
 32152  		} else {
 32153  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*int8)(unsafe.Pointer(zHex + uintptr(j)))
 32154  		}
 32155  
 32156  	}
 32157  	goto __2
 32158  __2:
 32159  	i++
 32160  	j++
 32161  	goto __1
 32162  	goto __3
 32163  __3:
 32164  	;
 32165  	*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(0)
 32166  	tcl.XTcl_DStringInit(tls, bp+552)
 32167  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 32168  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32169  	}{exec_printf_cb})), bp+552, bp+768)
 32170  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 32171  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 32172  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32173  		if rc == SQLITE_OK {
 32174  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 32175  		}
 32176  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 32177  	}())
 32178  	tcl.XTcl_DStringFree(tls, bp+552)
 32179  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 32180  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 32181  	}
 32182  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 32183  		return TCL_ERROR
 32184  	}
 32185  	return TCL_OK
 32186  }
 32187  
 32188  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32189  	bp := tls.Alloc(40)
 32190  	defer tls.Free(40)
 32191  
 32192  	if argc != 2 {
 32193  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32194  			ts+15001, 0))
 32195  		return TCL_ERROR
 32196  	}
 32197  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32198  		return TCL_ERROR
 32199  	}
 32200  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32201  	return TCL_OK
 32202  }
 32203  
 32204  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32205  	bp := tls.Alloc(40)
 32206  	defer tls.Free(40)
 32207  
 32208  	if argc != 2 {
 32209  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32210  			ts+15001, 0))
 32211  		return TCL_ERROR
 32212  	}
 32213  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32214  		return TCL_ERROR
 32215  	}
 32216  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32217  	return TCL_OK
 32218  }
 32219  
 32220  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32221  	bp := tls.Alloc(310)
 32222  	defer tls.Free(310)
 32223  
 32224  	var rc int32
 32225  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 32226  	var zSql uintptr
 32227  	var i int32
 32228  	var j int32
 32229  
 32230  	if argc != 3 {
 32231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32232  			ts+15005, 0))
 32233  		return TCL_ERROR
 32234  	}
 32235  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 32236  		return TCL_ERROR
 32237  	}
 32238  	tcl.XTcl_DStringInit(tls, bp+56)
 32239  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 32240  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 32241  		if int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 32242  			*(*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))))))
 32243  			i = i + 3
 32244  		} else {
 32245  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 32246  		}
 32247  	}
 32248  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 32249  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32250  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32251  	}{exec_printf_cb})), bp+56, bp+272)
 32252  	sqlite3.Xsqlite3_free(tls, zSql)
 32253  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 32254  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 32255  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32256  		if rc == SQLITE_OK {
 32257  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 32258  		}
 32259  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 32260  	}())
 32261  	tcl.XTcl_DStringFree(tls, bp+56)
 32262  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 32263  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 32264  	}
 32265  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32266  		return TCL_ERROR
 32267  	}
 32268  	return TCL_OK
 32269  }
 32270  
 32271  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32272  	bp := tls.Alloc(48)
 32273  	defer tls.Free(48)
 32274  
 32275  	var rc int32
 32276  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 32277  	if argc != 3 {
 32278  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32279  			ts+15005, 0))
 32280  		return TCL_ERROR
 32281  	}
 32282  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32283  		return TCL_ERROR
 32284  	}
 32285  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 32286  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32287  		return TCL_ERROR
 32288  	}
 32289  	return TCL_OK
 32290  }
 32291  
 32292  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32293  	bp := tls.Alloc(40)
 32294  	defer tls.Free(40)
 32295  
 32296  	var zResult uintptr = uintptr(0)
 32297  	var i int32
 32298  
 32299  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 32300  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 32301  	}
 32302  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 32303  	sqlite3.Xsqlite3_free(tls, zResult)
 32304  	return TCL_OK
 32305  }
 32306  
 32307  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32308  	bp := tls.Alloc(20)
 32309  	defer tls.Free(20)
 32310  
 32311  	var zStr uintptr
 32312  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 32313  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 32314  	sqlite3.Xsqlite3_free(tls, zStr)
 32315  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 32316  	return TCL_OK
 32317  }
 32318  
 32319  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32320  	bp := tls.Alloc(124)
 32321  	defer tls.Free(124)
 32322  
 32323  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32324  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 32325  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32326  	if uint64(n) > uint64(unsafe.Sizeof([100]int8{})) {
 32327  		n = int32(unsafe.Sizeof([100]int8{}))
 32328  	}
 32329  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+15025, 0)
 32330  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 32331  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 32332  	return TCL_OK
 32333  }
 32334  
 32335  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32336  	bp := tls.Alloc(350)
 32337  	defer tls.Free(350)
 32338  
 32339  	var rc int32
 32340  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 32341  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 32342  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 32343  
 32344  	var i int32
 32345  
 32346  	var zSql uintptr
 32347  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 32348  	if argc == 5 {
 32349  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 32350  			return TCL_ERROR
 32351  		}
 32352  	}
 32353  	if argc != 4 && argc != 5 {
 32354  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32355  			ts+15052, 0))
 32356  		return TCL_ERROR
 32357  	}
 32358  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 32359  		return TCL_ERROR
 32360  	}
 32361  	tcl.XTcl_DStringInit(tls, bp+80)
 32362  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 32363  	if argc == 5 {
 32364  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 32365  	} else {
 32366  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 32367  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 32368  	}
 32369  	sqlite3.Xsqlite3_free(tls, zSql)
 32370  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 32371  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 32372  	if rc == SQLITE_OK {
 32373  		if argc == 4 {
 32374  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 32375  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32376  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 32377  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 32378  		}
 32379  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 32380  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32381  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 32382  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 32383  				}
 32384  				return ts + 5846
 32385  			}())
 32386  		}
 32387  	} else {
 32388  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32389  	}
 32390  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 32391  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 32392  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 32393  	}
 32394  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 32395  		return TCL_ERROR
 32396  	}
 32397  	return TCL_OK
 32398  }
 32399  
 32400  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32401  	bp := tls.Alloc(94)
 32402  	defer tls.Free(94)
 32403  
 32404  	if argc != 2 {
 32405  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 32406  		return TCL_ERROR
 32407  	}
 32408  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 32409  		return TCL_ERROR
 32410  	}
 32411  	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)))))
 32412  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 32413  	return SQLITE_OK
 32414  }
 32415  
 32416  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32417  	return TCL_OK
 32418  }
 32419  
 32420  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32421  	return TCL_OK
 32422  }
 32423  
 32424  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32425  	bp := tls.Alloc(40)
 32426  	defer tls.Free(40)
 32427  
 32428  	var rc int32
 32429  	if argc != 2 {
 32430  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32431  			ts+15083, 0))
 32432  		return TCL_ERROR
 32433  	}
 32434  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32435  		return TCL_ERROR
 32436  	}
 32437  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32438  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32439  	return TCL_OK
 32440  }
 32441  
 32442  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32443  	bp := tls.Alloc(40)
 32444  	defer tls.Free(40)
 32445  
 32446  	var rc int32
 32447  	if argc != 2 {
 32448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32449  			ts+15083, 0))
 32450  		return TCL_ERROR
 32451  	}
 32452  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32453  		return TCL_ERROR
 32454  	}
 32455  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32456  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32457  	return TCL_OK
 32458  }
 32459  
 32460  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32461  	var i int32
 32462  	for i = 0; i < argc; i++ {
 32463  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 32464  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 32465  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 32466  				n, libc.UintptrFromInt32(-1))
 32467  			break
 32468  		}
 32469  	}
 32470  }
 32471  
 32472  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32473  	bp := tls.Alloc(208)
 32474  	defer tls.Free(208)
 32475  
 32476  	var z uintptr
 32477  	var i int32
 32478  
 32479  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32480  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]int8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 32481  		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))))))
 32482  	}
 32483  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = int8(0)
 32484  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32485  }
 32486  
 32487  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32488  	bp := tls.Alloc(408)
 32489  	defer tls.Free(408)
 32490  
 32491  	var z uintptr
 32492  	var i int32
 32493  
 32494  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32495  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]int8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 32496  		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))
 32497  	}
 32498  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = int8(0)
 32499  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32500  }
 32501  
 32502  type dstr = struct {
 32503  	FnAlloc int32
 32504  	FnUsed  int32
 32505  	Fz      uintptr
 32506  }
 32507  
 32508  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 32509  	var n int32 = int32(libc.Xstrlen(tls, z))
 32510  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 32511  		var zNew uintptr
 32512  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 32513  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 32514  		if zNew == uintptr(0) {
 32515  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 32516  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(dstr{})))
 32517  			return
 32518  		}
 32519  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 32520  	}
 32521  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 32522  		*(*int8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = int8(divider)
 32523  	}
 32524  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1))
 32525  	*(*int32)(unsafe.Pointer(p + 4)) += n
 32526  }
 32527  
 32528  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 32529  	var p uintptr = pData
 32530  	var i int32
 32531  	for i = 0; i < argc; i++ {
 32532  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 32533  			dstrAppend(tls, p, ts+5846, ' ')
 32534  		} else {
 32535  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 32536  		}
 32537  	}
 32538  	return 0
 32539  }
 32540  
 32541  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32542  	bp := tls.Alloc(16)
 32543  	defer tls.Free(16)
 32544  
 32545  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})))
 32546  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 32547  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 32548  		*(*uintptr)(unsafe.Pointer(&struct {
 32549  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32550  		}{execFuncCallback})), bp, uintptr(0))
 32551  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 32552  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 32553  }
 32554  
 32555  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32556  	var nText int32
 32557  	var zText1 uintptr
 32558  	var zText2 uintptr
 32559  	var zText3 uintptr
 32560  
 32561  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32562  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32563  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32564  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32565  
 32566  	if zText1 != zText2 || zText2 != zText3 {
 32567  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 32568  	} else {
 32569  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 32570  		libc.Xmemcpy(tls, zCopy, zText1, uint64(nText))
 32571  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 32572  	}
 32573  }
 32574  
 32575  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32576  	var p1 uintptr
 32577  	var p2 uintptr
 32578  	var zCmd uintptr
 32579  	if argc != 4 {
 32580  		return
 32581  	}
 32582  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32583  	if zCmd == uintptr(0) {
 32584  		return
 32585  	}
 32586  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32587  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32588  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32589  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32590  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32591  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32592  	} else {
 32593  		return
 32594  	}
 32595  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 32596  	if zCmd == uintptr(0) {
 32597  		return
 32598  	}
 32599  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 32600  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32601  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 32602  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32603  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 32604  	} else {
 32605  		return
 32606  	}
 32607  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32608  	if zCmd == uintptr(0) {
 32609  		return
 32610  	}
 32611  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32612  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32613  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32614  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32615  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32616  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32617  	} else {
 32618  		return
 32619  	}
 32620  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 32621  }
 32622  
 32623  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32624  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 32625  }
 32626  
 32627  var cnt int32 = 0
 32628  
 32629  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32630  	bp := tls.Alloc(8)
 32631  	defer tls.Free(8)
 32632  
 32633  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32634  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 32635  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 32636  }
 32637  
 32638  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32639  	bp := tls.Alloc(40)
 32640  	defer tls.Free(40)
 32641  
 32642  	var rc int32
 32643  
 32644  	if argc != 2 {
 32645  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32646  			ts+15078, 0))
 32647  		return TCL_ERROR
 32648  	}
 32649  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32650  		return TCL_ERROR
 32651  	}
 32652  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 32653  		*(*uintptr)(unsafe.Pointer(&struct {
 32654  			f func(*libc.TLS, uintptr, int32, uintptr)
 32655  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 32656  	if rc == SQLITE_OK {
 32657  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32658  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32659  				f func(*libc.TLS, uintptr, int32, uintptr)
 32660  			}{hex8Func})), uintptr(0), uintptr(0))
 32661  	}
 32662  	if rc == SQLITE_OK {
 32663  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 32664  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32665  				f func(*libc.TLS, uintptr, int32, uintptr)
 32666  			}{hex16Func})), uintptr(0), uintptr(0))
 32667  	}
 32668  	if rc == SQLITE_OK {
 32669  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 32670  			*(*uintptr)(unsafe.Pointer(&struct {
 32671  				f func(*libc.TLS, uintptr, int32, uintptr)
 32672  			}{tkt2213Function})), uintptr(0), uintptr(0))
 32673  	}
 32674  	if rc == SQLITE_OK {
 32675  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 32676  			*(*uintptr)(unsafe.Pointer(&struct {
 32677  				f func(*libc.TLS, uintptr, int32, uintptr)
 32678  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 32679  	}
 32680  
 32681  	if rc == SQLITE_OK {
 32682  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 32683  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32684  				f func(*libc.TLS, uintptr, int32, uintptr)
 32685  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32686  	}
 32687  	if rc == SQLITE_OK {
 32688  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32689  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32690  				f func(*libc.TLS, uintptr, int32, uintptr)
 32691  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32692  	}
 32693  
 32694  	if rc == SQLITE_OK {
 32695  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 32696  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32697  				f func(*libc.TLS, uintptr, int32, uintptr)
 32698  			}{intrealFunction})), uintptr(0), uintptr(0))
 32699  	}
 32700  
 32701  	if rc == SQLITE_OK {
 32702  		var zUtf16 uintptr
 32703  		var pVal uintptr
 32704  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32705  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32706  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 32707  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 32708  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 32709  			rc = SQLITE_NOMEM
 32710  		} else {
 32711  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 32712  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 32713  					f func(*libc.TLS, uintptr, int32, uintptr)
 32714  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 32715  		}
 32716  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 32717  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32718  	}
 32719  
 32720  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32721  		return TCL_ERROR
 32722  	}
 32723  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32724  	return TCL_OK
 32725  }
 32726  
 32727  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32728  	bp := tls.Alloc(40)
 32729  	defer tls.Free(40)
 32730  
 32731  	if argc < 2 {
 32732  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32733  			ts+15078, 0))
 32734  		return TCL_ERROR
 32735  	}
 32736  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32737  		return TCL_ERROR
 32738  	}
 32739  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 32740  		if argc > 2 {
 32741  			return argv + uintptr(2)*8
 32742  		}
 32743  		return uintptr(0)
 32744  	}())
 32745  	return TCL_OK
 32746  }
 32747  
 32748  type t1CountCtx1 = struct{ Fn int32 }
 32749  
 32750  type t1CountCtx = t1CountCtx1
 32751  
 32752  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32753  	bp := tls.Alloc(9)
 32754  	defer tls.Free(9)
 32755  
 32756  	var p uintptr
 32757  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32758  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 32759  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 32760  	}
 32761  	if argc > 0 {
 32762  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32763  		if v == 40 {
 32764  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 32765  		} else if v == 41 {
 32766  			*(*[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)}
 32767  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 32768  		}
 32769  	}
 32770  }
 32771  
 32772  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 32773  	var p uintptr
 32774  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32775  	if p != 0 {
 32776  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 32777  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 32778  		} else {
 32779  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 32780  				if p != 0 {
 32781  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 32782  				}
 32783  				return 0
 32784  			}())
 32785  		}
 32786  	}
 32787  }
 32788  
 32789  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32790  }
 32791  
 32792  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 32793  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 32794  }
 32795  
 32796  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32797  	bp := tls.Alloc(40)
 32798  	defer tls.Free(40)
 32799  
 32800  	var rc int32
 32801  	if argc != 2 {
 32802  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32803  			ts+15083, 0))
 32804  		return TCL_ERROR
 32805  	}
 32806  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32807  		return TCL_ERROR
 32808  	}
 32809  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 32810  		*(*uintptr)(unsafe.Pointer(&struct {
 32811  			f func(*libc.TLS, uintptr, int32, uintptr)
 32812  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32813  	if rc == SQLITE_OK {
 32814  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 32815  			*(*uintptr)(unsafe.Pointer(&struct {
 32816  				f func(*libc.TLS, uintptr, int32, uintptr)
 32817  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32818  	}
 32819  	if rc == SQLITE_OK {
 32820  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 32821  			*(*uintptr)(unsafe.Pointer(&struct {
 32822  				f func(*libc.TLS, uintptr, int32, uintptr)
 32823  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 32824  	}
 32825  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32826  		return TCL_ERROR
 32827  	}
 32828  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32829  	return TCL_OK
 32830  }
 32831  
 32832  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32833  	bp := tls.Alloc(40)
 32834  	defer tls.Free(40)
 32835  
 32836  	if argc != 2 {
 32837  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32838  			ts+15307, 0))
 32839  		return TCL_ERROR
 32840  	}
 32841  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 32842  	return TCL_OK
 32843  }
 32844  
 32845  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32846  	bp := tls.Alloc(84)
 32847  	defer tls.Free(84)
 32848  
 32849  	var i int32
 32850  	var z uintptr
 32851  	if argc != 5 {
 32852  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32853  			ts+15314, 0))
 32854  		return TCL_ERROR
 32855  	}
 32856  	for i = 2; i < 5; i++ {
 32857  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32858  			return TCL_ERROR
 32859  		}
 32860  	}
 32861  	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))))
 32862  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32863  	sqlite3.Xsqlite3_free(tls, z)
 32864  	return TCL_OK
 32865  }
 32866  
 32867  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32868  	bp := tls.Alloc(112)
 32869  	defer tls.Free(112)
 32870  
 32871  	var i int32
 32872  
 32873  	var z uintptr
 32874  	if argc != 5 {
 32875  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32876  			ts+15314, 0))
 32877  		return TCL_ERROR
 32878  	}
 32879  	for i = 2; i < 5; i++ {
 32880  		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 {
 32881  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 32882  			return TCL_ERROR
 32883  		}
 32884  	}
 32885  	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))))
 32886  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32887  	sqlite3.Xsqlite3_free(tls, z)
 32888  	return TCL_OK
 32889  }
 32890  
 32891  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32892  	bp := tls.Alloc(112)
 32893  	defer tls.Free(112)
 32894  
 32895  	var i int32
 32896  
 32897  	var z uintptr
 32898  	if argc != 5 {
 32899  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32900  			ts+15314, 0))
 32901  		return TCL_ERROR
 32902  	}
 32903  	for i = 2; i < 5; i++ {
 32904  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32905  			return TCL_ERROR
 32906  		}
 32907  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 32908  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 32909  	}
 32910  	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))))
 32911  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32912  	sqlite3.Xsqlite3_free(tls, z)
 32913  	return TCL_OK
 32914  }
 32915  
 32916  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32917  	bp := tls.Alloc(84)
 32918  	defer tls.Free(84)
 32919  
 32920  	var i int32
 32921  	var z uintptr
 32922  	if argc < 4 || argc > 5 {
 32923  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32924  			ts+15374, 0))
 32925  		return TCL_ERROR
 32926  	}
 32927  	for i = 2; i < 4; i++ {
 32928  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32929  			return TCL_ERROR
 32930  		}
 32931  	}
 32932  	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 {
 32933  		if argc > 4 {
 32934  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 32935  		}
 32936  		return uintptr(0)
 32937  	}()))
 32938  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32939  	sqlite3.Xsqlite3_free(tls, z)
 32940  	return TCL_OK
 32941  }
 32942  
 32943  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32944  	bp := tls.Alloc(104)
 32945  	defer tls.Free(104)
 32946  
 32947  	var i int32
 32948  
 32949  	var z uintptr
 32950  	if argc < 5 || argc > 6 {
 32951  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32952  			ts+15400, 0))
 32953  		return TCL_ERROR
 32954  	}
 32955  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 32956  		return TCL_ERROR
 32957  	}
 32958  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 32959  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 32960  		return TCL_ERROR
 32961  	}
 32962  	for i = 3; i < 5; i++ {
 32963  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 32964  			return TCL_ERROR
 32965  		}
 32966  	}
 32967  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 32968  	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 {
 32969  		if argc > 4 {
 32970  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 32971  		}
 32972  		return uintptr(0)
 32973  	}()))
 32974  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32975  	sqlite3.Xsqlite3_free(tls, z)
 32976  	return TCL_OK
 32977  }
 32978  
 32979  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32980  	bp := tls.Alloc(96)
 32981  	defer tls.Free(96)
 32982  
 32983  	var i int32
 32984  
 32985  	var z uintptr
 32986  	if argc != 5 {
 32987  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32988  			ts+15453, 0))
 32989  		return TCL_ERROR
 32990  	}
 32991  	for i = 2; i < 4; i++ {
 32992  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32993  			return TCL_ERROR
 32994  		}
 32995  	}
 32996  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 32997  		return TCL_ERROR
 32998  	}
 32999  	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))))
 33000  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33001  	sqlite3.Xsqlite3_free(tls, z)
 33002  	return TCL_OK
 33003  }
 33004  
 33005  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33006  	bp := tls.Alloc(72)
 33007  	defer tls.Free(72)
 33008  
 33009  	var i int32
 33010  
 33011  	var z uintptr
 33012  	if argc != 4 {
 33013  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33014  			ts+15477, 0))
 33015  		return TCL_ERROR
 33016  	}
 33017  	for i = 2; i < 4; i++ {
 33018  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 33019  			return TCL_ERROR
 33020  		}
 33021  	}
 33022  	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))))
 33023  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33024  	sqlite3.Xsqlite3_free(tls, z)
 33025  	return TCL_OK
 33026  }
 33027  
 33028  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33029  	bp := tls.Alloc(56)
 33030  	defer tls.Free(56)
 33031  
 33032  	var z uintptr
 33033  	if argc != 3 {
 33034  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33035  			ts+15500, 0))
 33036  		return TCL_ERROR
 33037  	}
 33038  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 33039  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33040  	sqlite3.Xsqlite3_free(tls, z)
 33041  	return TCL_OK
 33042  }
 33043  
 33044  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33045  	bp := tls.Alloc(112)
 33046  	defer tls.Free(112)
 33047  
 33048  	var z uintptr
 33049  
 33050  	if argc != 3 {
 33051  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33052  			ts+15500, 0))
 33053  		return TCL_ERROR
 33054  	}
 33055  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 33056  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 33057  		return TCL_ERROR
 33058  	}
 33059  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 33060  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 33061  	libc.Xmemcpy(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))))
 33062  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 33063  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33064  	sqlite3.Xsqlite3_free(tls, z)
 33065  	return TCL_OK
 33066  }
 33067  
 33068  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33069  	bp := tls.Alloc(4)
 33070  	defer tls.Free(4)
 33071  
 33072  	var rc int32
 33073  
 33074  	var ret int32 = 0
 33075  
 33076  	if objc != 2 && objc != 1 {
 33077  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 33078  		return TCL_ERROR
 33079  	}
 33080  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 33081  
 33082  	if objc == 2 {
 33083  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33084  			return TCL_ERROR
 33085  		}
 33086  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 33087  		if rc != SQLITE_OK {
 33088  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 33089  			return TCL_ERROR
 33090  		}
 33091  	}
 33092  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 33093  	return TCL_OK
 33094  }
 33095  
 33096  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33097  	bp := tls.Alloc(12)
 33098  	defer tls.Free(12)
 33099  
 33100  	if objc != 3 {
 33101  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 33102  		return TCL_ERROR
 33103  	}
 33104  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33105  		return TCL_ERROR
 33106  	}
 33107  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33108  		return TCL_ERROR
 33109  	}
 33110  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 33111  	return TCL_OK
 33112  }
 33113  
 33114  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33115  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 33116  	return TCL_OK
 33117  }
 33118  
 33119  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33120  	bp := tls.Alloc(52)
 33121  	defer tls.Free(52)
 33122  
 33123  	var zDb uintptr
 33124  	var zTbl uintptr
 33125  	var zCol uintptr
 33126  	var rc int32
 33127  	var pRet uintptr
 33128  
 33129  	if objc != 5 && objc != 4 {
 33130  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 33131  		return TCL_ERROR
 33132  	}
 33133  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33134  		return TCL_ERROR
 33135  	}
 33136  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33137  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33138  	if objc == 5 {
 33139  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 33140  	} else {
 33141  		zCol = uintptr(0)
 33142  	}
 33143  
 33144  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 33145  		zDb = uintptr(0)
 33146  	}
 33147  
 33148  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 33149  		bp+24, bp+32, bp+40, bp+44, bp+48)
 33150  
 33151  	if rc != SQLITE_OK {
 33152  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33153  		return TCL_ERROR
 33154  	}
 33155  
 33156  	pRet = tcl.XTcl_NewObj(tls)
 33157  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 33158  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 33159  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 33160  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 33161  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 33162  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 33163  
 33164  	return TCL_OK
 33165  }
 33166  
 33167  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 33168  	bp := tls.Alloc(8)
 33169  	defer tls.Free(8)
 33170  
 33171  	var z uintptr
 33172  
 33173  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 33174  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 33175  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 33176  	} else {
 33177  		var channel Tcl_Channel
 33178  		var instanceData ClientData
 33179  
 33180  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 33181  		if !(channel != 0) {
 33182  			return TCL_ERROR
 33183  		}
 33184  
 33185  		tcl.XTcl_Flush(tls, channel)
 33186  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 33187  
 33188  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 33189  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 33190  	}
 33191  
 33192  	return TCL_OK
 33193  }
 33194  
 33195  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33196  	bp := tls.Alloc(16)
 33197  	defer tls.Free(16)
 33198  
 33199  	var rc int32
 33200  
 33201  	if objc != 3 {
 33202  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 33203  		return TCL_ERROR
 33204  	}
 33205  
 33206  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 33207  		return TCL_ERROR
 33208  	}
 33209  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33210  		return TCL_ERROR
 33211  	}
 33212  
 33213  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 33214  	if rc != SQLITE_OK {
 33215  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 33216  	}
 33217  
 33218  	return func() int32 {
 33219  		if rc == SQLITE_OK {
 33220  			return TCL_OK
 33221  		}
 33222  		return TCL_ERROR
 33223  	}()
 33224  }
 33225  
 33226  type TestCollationX1 = struct {
 33227  	Finterp uintptr
 33228  	FpCmp   uintptr
 33229  	FpDel   uintptr
 33230  }
 33231  
 33232  type TestCollationX = TestCollationX1
 33233  
 33234  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 33235  	var p uintptr = pCtx
 33236  
 33237  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 33238  	if rc != TCL_OK {
 33239  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33240  	}
 33241  
 33242  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33243  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 33244  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33245  			tcl.XTclFreeObj(tls, _objPtr)
 33246  		}
 33247  	}
 33248  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33249  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 33250  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33251  			tcl.XTclFreeObj(tls, _objPtr)
 33252  		}
 33253  	}
 33254  	sqlite3.Xsqlite3_free(tls, p)
 33255  }
 33256  
 33257  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 33258  	bp := tls.Alloc(4)
 33259  	defer tls.Free(4)
 33260  
 33261  	var p uintptr = pCtx
 33262  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 33263  	*(*int32)(unsafe.Pointer(bp)) = 0
 33264  
 33265  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 33266  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 33267  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 33268  
 33269  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 33270  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 33271  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33272  	}
 33273  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33274  		var _objPtr uintptr = pScript
 33275  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33276  			tcl.XTclFreeObj(tls, _objPtr)
 33277  		}
 33278  	}
 33279  
 33280  	return *(*int32)(unsafe.Pointer(bp))
 33281  }
 33282  
 33283  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33284  	bp := tls.Alloc(24)
 33285  	defer tls.Free(24)
 33286  
 33287  	var p uintptr
 33288  
 33289  	var rc int32
 33290  
 33291  	if objc != 5 {
 33292  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 33293  		return TCL_ERROR
 33294  	}
 33295  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33296  		return TCL_ERROR
 33297  	}
 33298  
 33299  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 33300  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 33301  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 33302  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 33303  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 33304  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 33305  
 33306  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 33307  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33308  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33309  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33310  	if rc != SQLITE_MISUSE {
 33311  		tcl.XTcl_AppendResult(tls, interp,
 33312  			libc.VaList(bp, ts+15663, uintptr(0)))
 33313  		return TCL_ERROR
 33314  	}
 33315  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 33316  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33317  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33318  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33319  	return TCL_OK
 33320  }
 33321  
 33322  type CreateFunctionV21 = struct {
 33323  	Finterp   uintptr
 33324  	FpFunc    uintptr
 33325  	FpStep    uintptr
 33326  	FpFinal   uintptr
 33327  	FpDestroy uintptr
 33328  }
 33329  
 33330  type CreateFunctionV2 = CreateFunctionV21
 33331  
 33332  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33333  }
 33334  
 33335  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33336  }
 33337  
 33338  func cf2Final(tls *libc.TLS, ctx uintptr) {
 33339  }
 33340  
 33341  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 33342  	var p uintptr = pUser
 33343  
 33344  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33345  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 33346  		if rc != TCL_OK {
 33347  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 33348  		}
 33349  	}
 33350  
 33351  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33352  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33353  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 33354  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33355  				tcl.XTclFreeObj(tls, _objPtr)
 33356  			}
 33357  		}
 33358  	}
 33359  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33360  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33361  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 33362  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33363  				tcl.XTclFreeObj(tls, _objPtr)
 33364  			}
 33365  		}
 33366  	}
 33367  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33368  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 33369  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 33370  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33371  				tcl.XTclFreeObj(tls, _objPtr)
 33372  			}
 33373  		}
 33374  	}
 33375  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33376  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 33377  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 33378  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33379  				tcl.XTclFreeObj(tls, _objPtr)
 33380  			}
 33381  		}
 33382  	}
 33383  	sqlite3.Xsqlite3_free(tls, p)
 33384  }
 33385  
 33386  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33387  	bp := tls.Alloc(180)
 33388  	defer tls.Free(180)
 33389  
 33390  	var zFunc uintptr
 33391  
 33392  	var p uintptr
 33393  	var i int32
 33394  	var rc int32
 33395  
 33396  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 33397  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 33398  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 33399  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 33400  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 33401  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 33402  		{FzEnc: ts + 14193},
 33403  	}
 33404  
 33405  	if objc < 5 || objc%2 == 0 {
 33406  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 33407  		return TCL_ERROR
 33408  	}
 33409  
 33410  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33411  		return TCL_ERROR
 33412  	}
 33413  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33414  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 33415  		return TCL_ERROR
 33416  	}
 33417  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 33418  		ts+15784, 0, bp+128) != 0 {
 33419  		return TCL_ERROR
 33420  	}
 33421  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 33422  
 33423  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 33424  
 33425  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})))
 33426  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 33427  
 33428  	for i = 5; i < objc; i = i + 2 {
 33429  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 33430  		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 {
 33431  			sqlite3.Xsqlite3_free(tls, p)
 33432  			return TCL_ERROR
 33433  		}
 33434  
 33435  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 33436  		case 0:
 33437  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33438  			break
 33439  		case 1:
 33440  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33441  			break
 33442  		case 2:
 33443  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33444  			break
 33445  		case 3:
 33446  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 33447  			break
 33448  		}
 33449  	}
 33450  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33451  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 33452  	}
 33453  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33454  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 33455  	}
 33456  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33457  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 33458  	}
 33459  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33460  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 33461  	}
 33462  
 33463  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33464  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 33465  	}
 33466  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33467  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 33468  	}
 33469  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33470  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 33471  	}
 33472  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33473  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 33474  	}
 33475  
 33476  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 33477  		func() uintptr {
 33478  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33479  				return *(*uintptr)(unsafe.Pointer(&struct {
 33480  					f func(*libc.TLS, uintptr, int32, uintptr)
 33481  				}{cf2Func}))
 33482  			}
 33483  			return uintptr(0)
 33484  		}(),
 33485  		func() uintptr {
 33486  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33487  				return *(*uintptr)(unsafe.Pointer(&struct {
 33488  					f func(*libc.TLS, uintptr, int32, uintptr)
 33489  				}{cf2Step}))
 33490  			}
 33491  			return uintptr(0)
 33492  		}(),
 33493  		func() uintptr {
 33494  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33495  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 33496  			}
 33497  			return uintptr(0)
 33498  		}(),
 33499  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 33500  	if rc != SQLITE_OK {
 33501  		tcl.XTcl_ResetResult(tls, interp)
 33502  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 33503  		return TCL_ERROR
 33504  	}
 33505  	return TCL_OK
 33506  }
 33507  
 33508  type EncTable = struct {
 33509  	FzEnc        uintptr
 33510  	Fenc         int32
 33511  	F__ccgo_pad1 [4]byte
 33512  }
 33513  
 33514  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33515  	bp := tls.Alloc(88)
 33516  	defer tls.Free(88)
 33517  
 33518  	var db uintptr
 33519  	_ = db
 33520  	var rc int32
 33521  	var zDb uintptr
 33522  	var zFile uintptr
 33523  	_ = zFile
 33524  	var zProc uintptr = uintptr(0)
 33525  	_ = zProc
 33526  	var zErr uintptr = uintptr(0)
 33527  
 33528  	if objc != 4 && objc != 3 {
 33529  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 33530  		return TCL_ERROR
 33531  	}
 33532  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33533  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33534  	if objc == 4 {
 33535  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33536  	}
 33537  
 33538  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 33539  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33540  		return TCL_ERROR
 33541  	}
 33542  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 33543  
 33544  	rc = SQLITE_ERROR
 33545  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 33546  	_ = zProc
 33547  	_ = zFile
 33548  	if rc != SQLITE_OK {
 33549  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 33550  			if zErr != 0 {
 33551  				return zErr
 33552  			}
 33553  			return ts + 584
 33554  		}(), uintptr(1))
 33555  		rc = TCL_ERROR
 33556  	} else {
 33557  		rc = TCL_OK
 33558  	}
 33559  	sqlite3.Xsqlite3_free(tls, zErr)
 33560  
 33561  	return rc
 33562  }
 33563  
 33564  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33565  	bp := tls.Alloc(100)
 33566  	defer tls.Free(100)
 33567  
 33568  	var db uintptr
 33569  	_ = db
 33570  	var zDb uintptr
 33571  
 33572  	if objc != 3 {
 33573  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 33574  		return TCL_ERROR
 33575  	}
 33576  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33577  
 33578  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 33579  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33580  		return TCL_ERROR
 33581  	}
 33582  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 33583  
 33584  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 33585  		return TCL_ERROR
 33586  	}
 33587  
 33588  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 33589  	return TCL_ERROR
 33590  }
 33591  
 33592  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33593  	libc.Xexit(tls, 255)
 33594  
 33595  	return TCL_OK
 33596  }
 33597  
 33598  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33599  	var zArg0 uintptr
 33600  __1:
 33601  	if !(argc >= 2) {
 33602  		goto __2
 33603  	}
 33604  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33605  	if !(zArg0 != 0) {
 33606  		goto __3
 33607  	}
 33608  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 33609  		goto __5
 33610  	}
 33611  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33612  	goto __6
 33613  __5:
 33614  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 33615  		goto __7
 33616  	}
 33617  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33618  	goto __8
 33619  __7:
 33620  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 33621  		goto __9
 33622  	}
 33623  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 33624  		libc.UintptrFromInt32(-1))
 33625  	goto __10
 33626  __9:
 33627  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 33628  		goto __11
 33629  	}
 33630  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33631  	goto __12
 33632  __11:
 33633  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 33634  		goto __13
 33635  	}
 33636  	sqlite3.Xsqlite3_result_null(tls, context)
 33637  	goto __14
 33638  __13:
 33639  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 33640  		goto __15
 33641  	}
 33642  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 33643  	goto __16
 33644  __15:
 33645  	goto error_out
 33646  __16:
 33647  	;
 33648  __14:
 33649  	;
 33650  __12:
 33651  	;
 33652  __10:
 33653  	;
 33654  __8:
 33655  	;
 33656  __6:
 33657  	;
 33658  	goto __4
 33659  __3:
 33660  	goto error_out
 33661  __4:
 33662  	;
 33663  	argc = argc - 2
 33664  	argv += 8 * uintptr(2)
 33665  	goto __1
 33666  __2:
 33667  	;
 33668  	return
 33669  
 33670  error_out:
 33671  	sqlite3.Xsqlite3_result_error(tls, context,
 33672  		ts+15915, -1)
 33673  }
 33674  
 33675  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33676  	bp := tls.Alloc(56)
 33677  	defer tls.Free(56)
 33678  
 33679  	var rc int32
 33680  	if argc != 3 {
 33681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33682  			ts+15983, 0))
 33683  		return TCL_ERROR
 33684  	}
 33685  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 33686  		return TCL_ERROR
 33687  	}
 33688  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 33689  		*(*uintptr)(unsafe.Pointer(&struct {
 33690  			f func(*libc.TLS, uintptr, int32, uintptr)
 33691  		}{testFunc})), uintptr(0), uintptr(0))
 33692  	if rc != 0 {
 33693  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33694  		return TCL_ERROR
 33695  	}
 33696  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 33697  		return TCL_ERROR
 33698  	}
 33699  	return TCL_OK
 33700  }
 33701  
 33702  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33703  	bp := tls.Alloc(40)
 33704  	defer tls.Free(40)
 33705  
 33706  	var rc int32
 33707  	var db uintptr = uintptr(0)
 33708  
 33709  	if objc != 2 {
 33710  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33711  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33712  		return TCL_ERROR
 33713  	}
 33714  
 33715  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33716  		return TCL_ERROR
 33717  	}
 33718  
 33719  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 33720  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33721  	}
 33722  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33723  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33724  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 33725  		return TCL_ERROR
 33726  	}
 33727  	return TCL_OK
 33728  }
 33729  
 33730  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33731  	bp := tls.Alloc(16)
 33732  	defer tls.Free(16)
 33733  
 33734  	var iValue int32
 33735  	var i int32
 33736  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 33737  
 33738  	var zOpName uintptr
 33739  
 33740  	if objc != 4 {
 33741  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 33742  		return TCL_ERROR
 33743  	}
 33744  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33745  		return TCL_ERROR
 33746  	}
 33747  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33748  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33749  		FzName       uintptr
 33750  		Fop          int32
 33751  		F__ccgo_pad1 [4]byte
 33752  	}{}))); i++ {
 33753  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 33754  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 33755  			break
 33756  		}
 33757  	}
 33758  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33759  		FzName       uintptr
 33760  		Fop          int32
 33761  		F__ccgo_pad1 [4]byte
 33762  	}{}))) {
 33763  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33764  			return TCL_ERROR
 33765  		}
 33766  	}
 33767  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 33768  		return TCL_ERROR
 33769  	}
 33770  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 33771  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 33772  	return TCL_OK
 33773  }
 33774  
 33775  var aOp = [7]struct {
 33776  	FzName       uintptr
 33777  	Fop          int32
 33778  	F__ccgo_pad1 [4]byte
 33779  }{
 33780  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 33781  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 33782  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 33783  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 33784  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 33785  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 33786  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 33787  }
 33788  
 33789  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33790  	bp := tls.Alloc(12)
 33791  	defer tls.Free(12)
 33792  
 33793  	if objc != 2 {
 33794  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 33795  		return TCL_ERROR
 33796  	}
 33797  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 33798  		return TCL_ERROR
 33799  	}
 33800  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 33801  	return TCL_OK
 33802  }
 33803  
 33804  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33805  	bp := tls.Alloc(8)
 33806  	defer tls.Free(8)
 33807  
 33808  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 33809  	if objc != 1 {
 33810  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 33811  		return TCL_ERROR
 33812  	}
 33813  	(*struct {
 33814  		f func(*libc.TLS, uintptr, uintptr) int32
 33815  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 33816  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 33817  	return TCL_OK
 33818  }
 33819  
 33820  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33821  	bp := tls.Alloc(116)
 33822  	defer tls.Free(116)
 33823  
 33824  	var rc int32
 33825  
 33826  	var zName uintptr
 33827  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33828  
 33829  	if objc != 3 {
 33830  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33831  		return TCL_ERROR
 33832  	}
 33833  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33834  		return TCL_ERROR
 33835  	}
 33836  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33837  
 33838  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33839  	if rc != SQLITE_OK {
 33840  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33841  		return TCL_ERROR
 33842  	} else {
 33843  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 33844  			return TCL_ERROR
 33845  		}
 33846  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 33847  	}
 33848  	return TCL_OK
 33849  }
 33850  
 33851  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33852  	bp := tls.Alloc(8)
 33853  	defer tls.Free(8)
 33854  
 33855  	var rc int32
 33856  
 33857  	var zName uintptr
 33858  
 33859  	if objc != 3 {
 33860  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33861  		return TCL_ERROR
 33862  	}
 33863  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33864  		return TCL_ERROR
 33865  	}
 33866  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33867  
 33868  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 33869  	if rc != SQLITE_OK {
 33870  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33871  		return TCL_ERROR
 33872  	} else {
 33873  		tcl.XTcl_ResetResult(tls, interp)
 33874  	}
 33875  	return TCL_OK
 33876  }
 33877  
 33878  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33879  	bp := tls.Alloc(8)
 33880  	defer tls.Free(8)
 33881  
 33882  	var rc int32
 33883  
 33884  	var zName uintptr
 33885  	var pSnapshot uintptr
 33886  
 33887  	if objc != 4 {
 33888  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33889  		return TCL_ERROR
 33890  	}
 33891  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33892  		return TCL_ERROR
 33893  	}
 33894  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33895  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 33896  
 33897  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 33898  	if rc != SQLITE_OK {
 33899  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33900  		return TCL_ERROR
 33901  	} else {
 33902  		tcl.XTcl_ResetResult(tls, interp)
 33903  	}
 33904  	return TCL_OK
 33905  }
 33906  
 33907  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33908  	var pSnapshot uintptr
 33909  	if objc != 2 {
 33910  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 33911  		return TCL_ERROR
 33912  	}
 33913  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33914  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 33915  	return TCL_OK
 33916  }
 33917  
 33918  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33919  	var res int32
 33920  	var p1 uintptr
 33921  	var p2 uintptr
 33922  	if objc != 3 {
 33923  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 33924  		return TCL_ERROR
 33925  	}
 33926  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33927  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 33928  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 33929  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 33930  	return TCL_OK
 33931  }
 33932  
 33933  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33934  	bp := tls.Alloc(16)
 33935  	defer tls.Free(16)
 33936  
 33937  	var rc int32
 33938  
 33939  	var zName uintptr
 33940  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33941  
 33942  	if objc != 3 {
 33943  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33944  		return TCL_ERROR
 33945  	}
 33946  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33947  		return TCL_ERROR
 33948  	}
 33949  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33950  
 33951  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33952  	if rc != SQLITE_OK {
 33953  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33954  		return TCL_ERROR
 33955  	} else {
 33956  		tcl.XTcl_SetObjResult(tls, interp,
 33957  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 33958  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 33959  	}
 33960  	return TCL_OK
 33961  }
 33962  
 33963  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33964  	bp := tls.Alloc(28)
 33965  	defer tls.Free(28)
 33966  
 33967  	var rc int32
 33968  
 33969  	var zName uintptr
 33970  	var pBlob uintptr
 33971  
 33972  	if objc != 4 {
 33973  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33974  		return TCL_ERROR
 33975  	}
 33976  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33977  		return TCL_ERROR
 33978  	}
 33979  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33980  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 33981  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 33982  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 33983  		return TCL_ERROR
 33984  	}
 33985  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 33986  	if rc != SQLITE_OK {
 33987  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33988  		return TCL_ERROR
 33989  	}
 33990  	return TCL_OK
 33991  }
 33992  
 33993  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33994  	bp := tls.Alloc(24)
 33995  	defer tls.Free(24)
 33996  
 33997  	var res int32
 33998  	var p1 uintptr
 33999  	var p2 uintptr
 34000  
 34001  	if objc != 3 {
 34002  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34003  		return TCL_ERROR
 34004  	}
 34005  
 34006  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 34007  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 34008  
 34009  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 34010  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34011  		return TCL_ERROR
 34012  	}
 34013  
 34014  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34015  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34016  	return TCL_OK
 34017  }
 34018  
 34019  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34020  	var rc int32
 34021  	var zFile uintptr
 34022  	if objc != 2 {
 34023  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 34024  		return TCL_ERROR
 34025  	}
 34026  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34027  	rc = sqlite3_delete_database(tls, zFile)
 34028  
 34029  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34030  	return TCL_OK
 34031  }
 34032  
 34033  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34034  	bp := tls.Alloc(32)
 34035  	defer tls.Free(32)
 34036  
 34037  	var zFile uintptr = uintptr(0)
 34038  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 34039  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 34040  	var bRes int32 = 0
 34041  	var dc int32 = 0
 34042  	var rc int32
 34043  
 34044  	if objc != 2 {
 34045  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 34046  		return TCL_ERROR
 34047  	}
 34048  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34049  
 34050  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 34051  	if rc != SQLITE_OK {
 34052  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 34053  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34054  		return TCL_ERROR
 34055  	}
 34056  
 34057  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 34058  	dc = (*struct {
 34059  		f func(*libc.TLS, uintptr) int32
 34060  	})(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)))
 34061  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 34062  		bRes = 1
 34063  	}
 34064  
 34065  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 34066  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34067  	return TCL_OK
 34068  }
 34069  
 34070  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34071  	bp := tls.Alloc(114)
 34072  	defer tls.Free(114)
 34073  
 34074  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 34075  
 34076  	if objc != 3 {
 34077  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34078  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 34079  		return TCL_ERROR
 34080  	}
 34081  
 34082  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 34083  		return TCL_ERROR
 34084  	}
 34085  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 34086  		return TCL_ERROR
 34087  	}
 34088  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 34089  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 34090  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 34091  			return TCL_ERROR
 34092  		}
 34093  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 34094  	}
 34095  	return TCL_OK
 34096  }
 34097  
 34098  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34099  	bp := tls.Alloc(40)
 34100  	defer tls.Free(40)
 34101  
 34102  	var rc int32
 34103  
 34104  	if objc != 2 {
 34105  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34106  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34107  		return TCL_ERROR
 34108  	}
 34109  
 34110  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34111  		return TCL_ERROR
 34112  	}
 34113  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34114  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34115  	return TCL_OK
 34116  }
 34117  
 34118  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34119  	bp := tls.Alloc(40)
 34120  	defer tls.Free(40)
 34121  
 34122  	var rc int32
 34123  
 34124  	if objc != 2 {
 34125  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34126  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34127  		return TCL_ERROR
 34128  	}
 34129  
 34130  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34131  		return TCL_ERROR
 34132  	}
 34133  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34134  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 34135  	return TCL_OK
 34136  }
 34137  
 34138  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34139  	bp := tls.Alloc(40)
 34140  	defer tls.Free(40)
 34141  
 34142  	var rc int32
 34143  
 34144  	if objc != 2 {
 34145  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34146  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34147  		return TCL_ERROR
 34148  	}
 34149  
 34150  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34151  		return TCL_ERROR
 34152  	}
 34153  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34154  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34155  	return TCL_OK
 34156  }
 34157  
 34158  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34159  	bp := tls.Alloc(40)
 34160  	defer tls.Free(40)
 34161  
 34162  	if objc != 2 {
 34163  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34164  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34165  		return TCL_ERROR
 34166  	}
 34167  
 34168  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34169  		return TCL_ERROR
 34170  	}
 34171  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34172  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5) != 0)))
 34173  	return TCL_OK
 34174  }
 34175  
 34176  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34177  	bp := tls.Alloc(40)
 34178  	defer tls.Free(40)
 34179  
 34180  	var rc int32
 34181  
 34182  	if objc != 2 {
 34183  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34184  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34185  		return TCL_ERROR
 34186  	}
 34187  
 34188  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34189  		return TCL_ERROR
 34190  	}
 34191  
 34192  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34193  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34194  		return TCL_ERROR
 34195  	}
 34196  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34197  
 34198  	return TCL_OK
 34199  }
 34200  
 34201  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34202  	bp := tls.Alloc(40)
 34203  	defer tls.Free(40)
 34204  
 34205  	if objc != 2 {
 34206  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34207  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34208  		return TCL_ERROR
 34209  	}
 34210  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34211  		return TCL_ERROR
 34212  	}
 34213  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 34214  	return TCL_OK
 34215  }
 34216  
 34217  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34218  	bp := tls.Alloc(48)
 34219  	defer tls.Free(48)
 34220  
 34221  	if objc != 3 {
 34222  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34223  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 34224  		return TCL_ERROR
 34225  	}
 34226  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34227  		return TCL_ERROR
 34228  	}
 34229  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 34230  		return TCL_ERROR
 34231  	}
 34232  	tcl.XTcl_SetObjResult(tls, interp,
 34233  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 34234  	return TCL_OK
 34235  }
 34236  
 34237  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34238  	bp := tls.Alloc(40)
 34239  	defer tls.Free(40)
 34240  
 34241  	if objc != 2 {
 34242  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34243  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 34244  		return TCL_ERROR
 34245  	}
 34246  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34247  		return TCL_ERROR
 34248  	}
 34249  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 34250  	return TCL_OK
 34251  }
 34252  
 34253  var sqlite_static_bind_value uintptr = uintptr(0)
 34254  var sqlite_static_bind_nbyte int32 = 0
 34255  
 34256  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34257  	bp := tls.Alloc(142)
 34258  	defer tls.Free(142)
 34259  
 34260  	var rc int32
 34261  
 34262  	if argc != 5 {
 34263  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34264  			ts+16340, 0))
 34265  		return TCL_ERROR
 34266  	}
 34267  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 34268  		return TCL_ERROR
 34269  	}
 34270  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 34271  		return TCL_ERROR
 34272  	}
 34273  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 34274  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 34275  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 34276  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 34277  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 34278  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 34279  			sqlite_static_bind_nbyte, uintptr(0))
 34280  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 34281  		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))
 34282  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 34283  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 34284  	} else {
 34285  		tcl.XTcl_AppendResult(tls, interp,
 34286  			libc.VaList(bp+32, ts+16422, 0))
 34287  		return TCL_ERROR
 34288  	}
 34289  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 34290  		return TCL_ERROR
 34291  	}
 34292  	if rc != 0 {
 34293  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 34294  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 34295  		return TCL_ERROR
 34296  	}
 34297  	return TCL_OK
 34298  }
 34299  
 34300  var pTestCollateInterp uintptr
 34301  
 34302  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34303  	bp := tls.Alloc(4)
 34304  	defer tls.Free(4)
 34305  
 34306  	var i uintptr = pTestCollateInterp
 34307  	var encin int32 = int32(pCtx)
 34308  
 34309  	var n int32
 34310  	var pVal uintptr
 34311  	var pX uintptr
 34312  
 34313  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 34314  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34315  
 34316  	switch encin {
 34317  	case SQLITE_UTF8:
 34318  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34319  		break
 34320  	case SQLITE_UTF16LE:
 34321  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34322  		break
 34323  	case SQLITE_UTF16BE:
 34324  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34325  		break
 34326  	default:
 34327  	}
 34328  
 34329  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 34330  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34331  	if pVal != 0 {
 34332  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 34333  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34334  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34335  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34336  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 34337  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34338  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34339  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34340  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 34341  	}
 34342  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 34343  
 34344  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 34345  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34346  		var _objPtr uintptr = pX
 34347  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34348  			tcl.XTclFreeObj(tls, _objPtr)
 34349  		}
 34350  	}
 34351  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 34352  	return *(*int32)(unsafe.Pointer(bp))
 34353  }
 34354  
 34355  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34356  	bp := tls.Alloc(60)
 34357  	defer tls.Free(60)
 34358  
 34359  	var pVal uintptr
 34360  	var rc int32
 34361  	var zUtf16 uintptr
 34362  
 34363  	if !(objc != 5) {
 34364  		goto __1
 34365  	}
 34366  	goto bad_args
 34367  __1:
 34368  	;
 34369  	pTestCollateInterp = interp
 34370  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 34371  		goto __2
 34372  	}
 34373  	return TCL_ERROR
 34374  __2:
 34375  	;
 34376  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 34377  		goto __3
 34378  	}
 34379  	return TCL_ERROR
 34380  __3:
 34381  	;
 34382  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 34383  		uintptr(SQLITE_UTF8), func() uintptr {
 34384  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34385  				return *(*uintptr)(unsafe.Pointer(&struct {
 34386  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34387  				}{test_collate_func}))
 34388  			}
 34389  			return uintptr(0)
 34390  		}())
 34391  	if !(rc == SQLITE_OK) {
 34392  		goto __4
 34393  	}
 34394  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 34395  		goto __5
 34396  	}
 34397  	return TCL_ERROR
 34398  __5:
 34399  	;
 34400  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 34401  		uintptr(SQLITE_UTF16LE), func() uintptr {
 34402  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34403  				return *(*uintptr)(unsafe.Pointer(&struct {
 34404  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34405  				}{test_collate_func}))
 34406  			}
 34407  			return uintptr(0)
 34408  		}())
 34409  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 34410  		goto __6
 34411  	}
 34412  	return TCL_ERROR
 34413  __6:
 34414  	;
 34415  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34416  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34417  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 34418  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 34419  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 34420  		goto __7
 34421  	}
 34422  	rc = SQLITE_NOMEM
 34423  	goto __8
 34424  __7:
 34425  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 34426  		uintptr(SQLITE_UTF16BE), func() uintptr {
 34427  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 34428  				return *(*uintptr)(unsafe.Pointer(&struct {
 34429  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34430  				}{test_collate_func}))
 34431  			}
 34432  			return uintptr(0)
 34433  		}())
 34434  __8:
 34435  	;
 34436  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34437  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34438  __4:
 34439  	;
 34440  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 34441  		goto __9
 34442  	}
 34443  	return TCL_ERROR
 34444  __9:
 34445  	;
 34446  	if !(rc != SQLITE_OK) {
 34447  		goto __10
 34448  	}
 34449  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34450  	return TCL_ERROR
 34451  __10:
 34452  	;
 34453  	return TCL_OK
 34454  
 34455  bad_args:
 34456  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 34457  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34458  	return TCL_ERROR
 34459  }
 34460  
 34461  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34462  	var nCmp int32 = func() int32 {
 34463  		if nA > nB {
 34464  			return nB
 34465  		}
 34466  		return nA
 34467  	}()
 34468  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 34469  	if res == 0 {
 34470  		res = nA - nB
 34471  	}
 34472  	return res
 34473  }
 34474  
 34475  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34476  	bp := tls.Alloc(8)
 34477  	defer tls.Free(8)
 34478  
 34479  	var rc int32
 34480  
 34481  	if !(objc != 2) {
 34482  		goto __1
 34483  	}
 34484  	goto bad_args
 34485  __1:
 34486  	;
 34487  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34488  		goto __2
 34489  	}
 34490  	return TCL_ERROR
 34491  __2:
 34492  	;
 34493  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 34494  		*(*uintptr)(unsafe.Pointer(&struct {
 34495  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34496  		}{test_utf16bin_collate_func})))
 34497  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34498  		goto __3
 34499  	}
 34500  	return TCL_ERROR
 34501  __3:
 34502  	;
 34503  	return TCL_OK
 34504  
 34505  bad_args:
 34506  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34507  	return TCL_ERROR
 34508  }
 34509  
 34510  var zNeededCollation [200]int8
 34511  var pzNeededCollation uintptr = 0
 34512  
 34513  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 34514  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 34515  	var i int32
 34516  	var z uintptr
 34517  	z = pName
 34518  	i = 0
 34519  	for ; *(*int8)(unsafe.Pointer(z)) != 0 || *(*int8)(unsafe.Pointer(z + 1)) != 0; z++ {
 34520  		if *(*int8)(unsafe.Pointer(z)) != 0 {
 34521  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*int8)(unsafe.Pointer(z))
 34522  		}
 34523  	}
 34524  	zNeededCollation[i] = int8(0)
 34525  	sqlite3.Xsqlite3_create_collation(tls,
 34526  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 34527  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34528  		}{test_collate_func})))
 34529  }
 34530  
 34531  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34532  	bp := tls.Alloc(8)
 34533  	defer tls.Free(8)
 34534  
 34535  	var rc int32
 34536  
 34537  	if !(objc != 2) {
 34538  		goto __1
 34539  	}
 34540  	goto bad_args
 34541  __1:
 34542  	;
 34543  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34544  		goto __2
 34545  	}
 34546  	return TCL_ERROR
 34547  __2:
 34548  	;
 34549  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34550  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 34551  	}{test_collate_needed_cb})))
 34552  	zNeededCollation[0] = int8(0)
 34553  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34554  		goto __3
 34555  	}
 34556  	return TCL_ERROR
 34557  __3:
 34558  	;
 34559  	return TCL_OK
 34560  
 34561  bad_args:
 34562  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34563  	return TCL_ERROR
 34564  }
 34565  
 34566  var unaligned_string_counter int32 = 0
 34567  
 34568  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 34569  	var rc int32
 34570  	var n int32
 34571  	if nKey1 < nKey2 {
 34572  		n = nKey1
 34573  	} else {
 34574  		n = nKey2
 34575  	}
 34576  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 34577  		unaligned_string_counter++
 34578  	}
 34579  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 34580  		unaligned_string_counter++
 34581  	}
 34582  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 34583  	if rc == 0 {
 34584  		rc = nKey1 - nKey2
 34585  	}
 34586  	return rc
 34587  }
 34588  
 34589  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34590  	bp := tls.Alloc(8)
 34591  	defer tls.Free(8)
 34592  
 34593  	if objc >= 2 {
 34594  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34595  			return TCL_ERROR
 34596  		}
 34597  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 34598  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34599  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34600  			}{alignmentCollFunc})))
 34601  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 34602  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34603  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34604  			}{alignmentCollFunc})))
 34605  	}
 34606  	return SQLITE_OK
 34607  }
 34608  
 34609  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34610  	var interp uintptr
 34611  	var pX uintptr
 34612  	var pVal uintptr
 34613  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34614  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34615  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34616  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34617  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34618  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34619  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34620  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34621  		var _objPtr uintptr = pX
 34622  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34623  			tcl.XTclFreeObj(tls, _objPtr)
 34624  		}
 34625  	}
 34626  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 34627  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34628  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34629  		uint8(SQLITE_UTF8), uintptr(0))
 34630  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 34631  		-1, libc.UintptrFromInt32(-1))
 34632  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34633  }
 34634  
 34635  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34636  	var interp uintptr
 34637  	var pX uintptr
 34638  	var pVal uintptr
 34639  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34640  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34641  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34642  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34643  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34644  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34645  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34646  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34647  		var _objPtr uintptr = pX
 34648  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34649  			tcl.XTclFreeObj(tls, _objPtr)
 34650  		}
 34651  	}
 34652  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34653  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34654  		uint8(SQLITE_UTF8), uintptr(0))
 34655  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 34656  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34657  }
 34658  
 34659  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34660  	var interp uintptr
 34661  	var pX uintptr
 34662  	var pVal uintptr
 34663  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34664  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34665  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34666  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34667  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34668  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34669  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34670  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34671  		var _objPtr uintptr = pX
 34672  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34673  			tcl.XTclFreeObj(tls, _objPtr)
 34674  		}
 34675  	}
 34676  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34677  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34678  		uint8(SQLITE_UTF8), uintptr(0))
 34679  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34680  		-1, libc.UintptrFromInt32(-1))
 34681  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34682  		-1, libc.UintptrFromInt32(-1))
 34683  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34684  		-1, libc.UintptrFromInt32(-1))
 34685  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34686  }
 34687  
 34688  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34689  	bp := tls.Alloc(44)
 34690  	defer tls.Free(44)
 34691  
 34692  	if !(objc != 5) {
 34693  		goto __1
 34694  	}
 34695  	goto bad_args
 34696  __1:
 34697  	;
 34698  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 34699  		goto __2
 34700  	}
 34701  	return TCL_ERROR
 34702  __2:
 34703  	;
 34704  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 34705  		goto __3
 34706  	}
 34707  	return TCL_ERROR
 34708  __3:
 34709  	;
 34710  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34711  		goto __4
 34712  	}
 34713  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 34714  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34715  			f func(*libc.TLS, uintptr, int32, uintptr)
 34716  		}{test_function_utf8})), uintptr(0), uintptr(0))
 34717  __4:
 34718  	;
 34719  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 34720  		goto __5
 34721  	}
 34722  	return TCL_ERROR
 34723  __5:
 34724  	;
 34725  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34726  		goto __6
 34727  	}
 34728  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 34729  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34730  			f func(*libc.TLS, uintptr, int32, uintptr)
 34731  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 34732  __6:
 34733  	;
 34734  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 34735  		goto __7
 34736  	}
 34737  	return TCL_ERROR
 34738  __7:
 34739  	;
 34740  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34741  		goto __8
 34742  	}
 34743  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 34744  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34745  			f func(*libc.TLS, uintptr, int32, uintptr)
 34746  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 34747  __8:
 34748  	;
 34749  	return TCL_OK
 34750  bad_args:
 34751  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34752  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34753  	return TCL_ERROR
 34754  }
 34755  
 34756  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34757  	var zCode uintptr
 34758  	var i int32
 34759  	if objc != 1 {
 34760  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 34761  	}
 34762  
 34763  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34764  	for i = 0; i < 200; i++ {
 34765  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 34766  			break
 34767  		}
 34768  	}
 34769  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 34770  	return TCL_OK
 34771  }
 34772  
 34773  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34774  	return TCL_OK
 34775  }
 34776  
 34777  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34778  	bp := tls.Alloc(16)
 34779  	defer tls.Free(16)
 34780  
 34781  	var rc int32
 34782  
 34783  	if objc != 4 {
 34784  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34785  		return TCL_ERROR
 34786  	}
 34787  
 34788  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34789  		return TCL_ERROR
 34790  	}
 34791  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 34792  		return TCL_ERROR
 34793  	}
 34794  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 34795  		return TCL_ERROR
 34796  	}
 34797  
 34798  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 34799  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 34800  		return TCL_ERROR
 34801  	}
 34802  	if rc != SQLITE_OK {
 34803  		return TCL_ERROR
 34804  	}
 34805  
 34806  	return TCL_OK
 34807  }
 34808  
 34809  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34810  	bp := tls.Alloc(40)
 34811  	defer tls.Free(40)
 34812  
 34813  	var rc int32
 34814  
 34815  	if objc != 4 {
 34816  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34817  		return TCL_ERROR
 34818  	}
 34819  
 34820  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 34821  		return TCL_ERROR
 34822  	}
 34823  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 34824  		return TCL_ERROR
 34825  	}
 34826  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 34827  		return TCL_ERROR
 34828  	}
 34829  
 34830  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 34831  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 34832  		return TCL_ERROR
 34833  	}
 34834  	if rc != SQLITE_OK {
 34835  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34836  		return TCL_ERROR
 34837  	}
 34838  
 34839  	return TCL_OK
 34840  }
 34841  
 34842  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34843  	bp := tls.Alloc(48)
 34844  	defer tls.Free(48)
 34845  
 34846  	var rc int32
 34847  
 34848  	if objc != 4 {
 34849  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34850  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34851  		return TCL_ERROR
 34852  	}
 34853  
 34854  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34855  		return TCL_ERROR
 34856  	}
 34857  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34858  		return TCL_ERROR
 34859  	}
 34860  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 34861  		return TCL_ERROR
 34862  	}
 34863  
 34864  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 34865  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34866  		return TCL_ERROR
 34867  	}
 34868  	if rc != SQLITE_OK {
 34869  		return TCL_ERROR
 34870  	}
 34871  
 34872  	return TCL_OK
 34873  }
 34874  
 34875  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34876  	var i int32
 34877  
 34878  	sqlite3.Xsqlite3_free(tls, p)
 34879  	p = uintptr(0)
 34880  	if objc > 1 {
 34881  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 34882  		if p == uintptr(0) {
 34883  			return TCL_ERROR
 34884  		}
 34885  		for i = 0; i < objc-1; i++ {
 34886  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 34887  				sqlite3.Xsqlite3_free(tls, p)
 34888  				p = uintptr(0)
 34889  				return TCL_ERROR
 34890  			}
 34891  		}
 34892  	}
 34893  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 34894  	return TCL_OK
 34895  }
 34896  
 34897  var p uintptr = uintptr(0)
 34898  
 34899  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34900  	bp := tls.Alloc(8)
 34901  	defer tls.Free(8)
 34902  
 34903  	var i int32
 34904  
 34905  	sqlite3.Xsqlite3_free(tls, p1)
 34906  	p1 = uintptr(0)
 34907  	if objc > 1 {
 34908  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 34909  		if p1 == uintptr(0) {
 34910  			return TCL_ERROR
 34911  		}
 34912  		for i = 0; i < objc-1; i++ {
 34913  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 34914  				sqlite3.Xsqlite3_free(tls, p1)
 34915  				p1 = uintptr(0)
 34916  				return TCL_ERROR
 34917  			}
 34918  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 34919  		}
 34920  	}
 34921  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 34922  	return TCL_OK
 34923  }
 34924  
 34925  var p1 uintptr = uintptr(0)
 34926  
 34927  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34928  	var i int32
 34929  
 34930  	sqlite3.Xsqlite3_free(tls, p2)
 34931  	p2 = uintptr(0)
 34932  	if objc > 1 {
 34933  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 34934  		if p2 == uintptr(0) {
 34935  			return TCL_ERROR
 34936  		}
 34937  		for i = 0; i < objc-1; i++ {
 34938  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 34939  				sqlite3.Xsqlite3_free(tls, p2)
 34940  				p2 = uintptr(0)
 34941  				return TCL_ERROR
 34942  			}
 34943  		}
 34944  	}
 34945  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 34946  	return TCL_OK
 34947  }
 34948  
 34949  var p2 uintptr = uintptr(0)
 34950  
 34951  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34952  	bp := tls.Alloc(8)
 34953  	defer tls.Free(8)
 34954  
 34955  	var i int32
 34956  
 34957  	for i = 0; i < n; i++ {
 34958  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 34959  	}
 34960  	sqlite3.Xsqlite3_free(tls, p3)
 34961  	p3 = uintptr(0)
 34962  	if objc > 1 {
 34963  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 34964  		if p3 == uintptr(0) {
 34965  			return TCL_ERROR
 34966  		}
 34967  		for i = 0; i < objc-1; i++ {
 34968  			*(*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)))))
 34969  		}
 34970  	}
 34971  	n = objc - 1
 34972  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 34973  	return TCL_OK
 34974  }
 34975  
 34976  var n int32 = 0
 34977  var p3 uintptr = uintptr(0)
 34978  
 34979  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34980  	bp := tls.Alloc(56)
 34981  	defer tls.Free(56)
 34982  
 34983  	var rc int32
 34984  
 34985  	if objc != 4 {
 34986  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34987  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34988  		return TCL_ERROR
 34989  	}
 34990  
 34991  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34992  		return TCL_ERROR
 34993  	}
 34994  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34995  		return TCL_ERROR
 34996  	}
 34997  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 34998  		return TCL_ERROR
 34999  	}
 35000  
 35001  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 35002  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35003  		return TCL_ERROR
 35004  	}
 35005  	if rc != SQLITE_OK {
 35006  		return TCL_ERROR
 35007  	}
 35008  
 35009  	return TCL_OK
 35010  }
 35011  
 35012  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35013  	bp := tls.Alloc(64)
 35014  	defer tls.Free(64)
 35015  
 35016  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 35017  	var rc int32
 35018  	var zVal uintptr
 35019  	var i int32
 35020  
 35021  	if objc != 4 {
 35022  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35023  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35024  		return TCL_ERROR
 35025  	}
 35026  
 35027  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35028  		return TCL_ERROR
 35029  	}
 35030  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35031  		return TCL_ERROR
 35032  	}
 35033  
 35034  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35035  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35036  		FzName  uintptr
 35037  		FiUpper uint32
 35038  		FiLower uint32
 35039  	}{})); i++ {
 35040  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 35041  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 35042  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 35043  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 35044  
 35045  			libc.Xmemcpy(tls, bp+48, bp+56, uint64(8))
 35046  			break
 35047  		}
 35048  	}
 35049  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 35050  		FzName  uintptr
 35051  		FiUpper uint32
 35052  		FiLower uint32
 35053  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 35054  		return TCL_ERROR
 35055  	}
 35056  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 35057  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35058  		return TCL_ERROR
 35059  	}
 35060  	if rc != SQLITE_OK {
 35061  		return TCL_ERROR
 35062  	}
 35063  
 35064  	return TCL_OK
 35065  }
 35066  
 35067  var aSpecialFp = [10]struct {
 35068  	FzName  uintptr
 35069  	FiUpper uint32
 35070  	FiLower uint32
 35071  }{
 35072  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 35073  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 35074  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 35075  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 35076  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 35077  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 35078  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 35079  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 35080  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 35081  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 35082  }
 35083  
 35084  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35085  	bp := tls.Alloc(44)
 35086  	defer tls.Free(44)
 35087  
 35088  	var rc int32
 35089  
 35090  	if objc != 3 {
 35091  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35092  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 35093  		return TCL_ERROR
 35094  	}
 35095  
 35096  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35097  		return TCL_ERROR
 35098  	}
 35099  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35100  		return TCL_ERROR
 35101  	}
 35102  
 35103  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 35104  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35105  		return TCL_ERROR
 35106  	}
 35107  	if rc != SQLITE_OK {
 35108  		return TCL_ERROR
 35109  	}
 35110  
 35111  	return TCL_OK
 35112  }
 35113  
 35114  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35115  	bp := tls.Alloc(84)
 35116  	defer tls.Free(84)
 35117  
 35118  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35119  
 35120  	var value uintptr
 35121  	var rc int32
 35122  	var toFree uintptr = uintptr(0)
 35123  
 35124  	if objc != 5 {
 35125  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35126  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35127  		return TCL_ERROR
 35128  	}
 35129  
 35130  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35131  		return TCL_ERROR
 35132  	}
 35133  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35134  		return TCL_ERROR
 35135  	}
 35136  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35137  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35138  		return TCL_ERROR
 35139  	}
 35140  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 35141  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 35142  		if toFree == uintptr(0) {
 35143  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35144  			return TCL_ERROR
 35145  		}
 35146  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35147  		*(*int8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = int8(0)
 35148  		value = toFree
 35149  	}
 35150  	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))
 35151  	libc.Xfree(tls, toFree)
 35152  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35153  		return TCL_ERROR
 35154  	}
 35155  	if rc != SQLITE_OK {
 35156  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 35157  		return TCL_ERROR
 35158  	}
 35159  
 35160  	return TCL_OK
 35161  }
 35162  
 35163  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35164  	bp := tls.Alloc(84)
 35165  	defer tls.Free(84)
 35166  
 35167  	var value uintptr
 35168  	var toFree uintptr = uintptr(0)
 35169  	var rc int32
 35170  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 35171  
 35172  	var xDel uintptr = func() uintptr {
 35173  		if objc == 6 {
 35174  			return uintptr(0)
 35175  		}
 35176  		return libc.UintptrFromInt32(-1)
 35177  	}()
 35178  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 35179  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 35180  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 35181  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 35182  
 35183  	if objc != 5 && objc != 6 {
 35184  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35185  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35186  		return TCL_ERROR
 35187  	}
 35188  
 35189  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 35190  		return TCL_ERROR
 35191  	}
 35192  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 35193  		return TCL_ERROR
 35194  	}
 35195  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 35196  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 35197  		return TCL_ERROR
 35198  	}
 35199  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 35200  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 35201  		if toFree == uintptr(0) {
 35202  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35203  			return TCL_ERROR
 35204  		}
 35205  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 35206  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3))
 35207  		value = toFree
 35208  	}
 35209  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 35210  	libc.Xfree(tls, toFree)
 35211  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35212  		return TCL_ERROR
 35213  	}
 35214  	if rc != SQLITE_OK {
 35215  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35216  		return TCL_ERROR
 35217  	}
 35218  
 35219  	return TCL_OK
 35220  }
 35221  
 35222  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35223  	bp := tls.Alloc(284)
 35224  	defer tls.Free(284)
 35225  
 35226  	var value uintptr
 35227  	var rc int32
 35228  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 35229  
 35230  	if objc != 5 && objc != 6 {
 35231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35232  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 35233  		return TCL_ERROR
 35234  	}
 35235  
 35236  	if objc == 6 {
 35237  		xDestructor = uintptr(0)
 35238  		objv += 8
 35239  	}
 35240  
 35241  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 35242  		return TCL_ERROR
 35243  	}
 35244  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 35245  		return TCL_ERROR
 35246  	}
 35247  
 35248  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 35249  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 35250  		return TCL_ERROR
 35251  	}
 35252  
 35253  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 35254  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+84,
 35255  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 35256  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 35257  		return TCL_ERROR
 35258  	}
 35259  
 35260  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 35261  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35262  		return TCL_ERROR
 35263  	}
 35264  	if rc != SQLITE_OK {
 35265  		return TCL_ERROR
 35266  	}
 35267  
 35268  	return TCL_OK
 35269  }
 35270  
 35271  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35272  	bp := tls.Alloc(48)
 35273  	defer tls.Free(48)
 35274  
 35275  	var z3 uintptr = uintptr(0)
 35276  	var db uintptr = uintptr(0)
 35277  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 35278  
 35279  	if objc != 5 {
 35280  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 35281  		return TCL_ERROR
 35282  	}
 35283  
 35284  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 35285  		return TCL_ERROR
 35286  	}
 35287  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 35288  		return TCL_ERROR
 35289  	}
 35290  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35291  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 35292  		return TCL_ERROR
 35293  	}
 35294  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 35295  
 35296  	if int32(*(*int8)(unsafe.Pointer(z3))) == 'n' {
 35297  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35298  	} else if int32(*(*int8)(unsafe.Pointer(z3))) == 'o' {
 35299  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 35300  	} else {
 35301  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 35302  		return TCL_ERROR
 35303  	}
 35304  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 35305  
 35306  	return TCL_OK
 35307  }
 35308  
 35309  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35310  	bp := tls.Alloc(72)
 35311  	defer tls.Free(72)
 35312  
 35313  	var zSql uintptr = uintptr(0)
 35314  	var db uintptr = uintptr(0)
 35315  	var rc int32 = SQLITE_OK
 35316  
 35317  	if objc != 4 {
 35318  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 35319  		return TCL_ERROR
 35320  	}
 35321  
 35322  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35323  		return TCL_ERROR
 35324  	}
 35325  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 35326  		return TCL_ERROR
 35327  	}
 35328  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35329  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35330  
 35331  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 35332  	if rc != SQLITE_OK {
 35333  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35334  		return TCL_ERROR
 35335  	}
 35336  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 35337  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 35338  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 35339  	}
 35340  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 35341  	if rc != SQLITE_OK {
 35342  		tcl.XTcl_AppendResult(tls, interp,
 35343  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35344  		return TCL_ERROR
 35345  	}
 35346  
 35347  	return TCL_OK
 35348  }
 35349  
 35350  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35351  	bp := tls.Alloc(112)
 35352  	defer tls.Free(112)
 35353  
 35354  	var eType int32
 35355  	var nData int32
 35356  	var aData uintptr
 35357  	var isTransient int32
 35358  	var isStatic int32
 35359  
 35360  	var i int32
 35361  	var j int32
 35362  	var rc int32
 35363  	var xDel uintptr
 35364  	var z uintptr
 35365  
 35366  	var a uintptr
 35367  
 35368  	var a1 uintptr
 35369  
 35370  	var a2 uintptr
 35371  	var v3 uintptr
 35372  	var a3 uintptr
 35373  	eType = 0
 35374  	nData = 0
 35375  	aData = uintptr(0)
 35376  	isTransient = 0
 35377  	isStatic = 0
 35378  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 35379  
 35380  	if !(aStaticData != 0) {
 35381  		goto __1
 35382  	}
 35383  
 35384  	if !(eStaticType == 3) {
 35385  		goto __2
 35386  	}
 35387  	i = 0
 35388  __3:
 35389  	if !(i < nStaticData) {
 35390  		goto __5
 35391  	}
 35392  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 35393  	goto __4
 35394  __4:
 35395  	i++
 35396  	goto __3
 35397  	goto __5
 35398  __5:
 35399  	;
 35400  __2:
 35401  	;
 35402  	sqlite3.Xsqlite3_free(tls, aStaticData)
 35403  	aStaticData = uintptr(0)
 35404  	nStaticData = 0
 35405  	eStaticType = 0
 35406  __1:
 35407  	;
 35408  	if !(objc == 1) {
 35409  		goto __6
 35410  	}
 35411  	return TCL_OK
 35412  __6:
 35413  	;
 35414  	i = 1
 35415  __7:
 35416  	if !(i < objc && int32(*(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 35417  		goto __9
 35418  	}
 35419  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 35420  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 35421  		goto __10
 35422  	}
 35423  	isTransient = 1
 35424  	xDel = libc.UintptrFromInt32(-1)
 35425  	goto __11
 35426  __10:
 35427  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 35428  		goto __12
 35429  	}
 35430  	isStatic = 1
 35431  	xDel = uintptr(0)
 35432  	goto __13
 35433  __12:
 35434  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 35435  		goto __14
 35436  	}
 35437  	eType = 0
 35438  	goto __15
 35439  __14:
 35440  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 35441  		goto __16
 35442  	}
 35443  	eType = 1
 35444  	goto __17
 35445  __16:
 35446  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 35447  		goto __18
 35448  	}
 35449  	eType = 2
 35450  	goto __19
 35451  __18:
 35452  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 35453  		goto __20
 35454  	}
 35455  	eType = 3
 35456  	goto __21
 35457  __20:
 35458  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 35459  		goto __22
 35460  	}
 35461  	goto __9
 35462  	goto __23
 35463  __22:
 35464  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 35465  	return TCL_ERROR
 35466  __23:
 35467  	;
 35468  __21:
 35469  	;
 35470  __19:
 35471  	;
 35472  __17:
 35473  	;
 35474  __15:
 35475  	;
 35476  __13:
 35477  	;
 35478  __11:
 35479  	;
 35480  	goto __8
 35481  __8:
 35482  	i++
 35483  	goto __7
 35484  	goto __9
 35485  __9:
 35486  	;
 35487  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 35488  		goto __24
 35489  	}
 35490  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 35491  		uintptr(0)))
 35492  	return TCL_ERROR
 35493  __24:
 35494  	;
 35495  	if !(isStatic != 0 && isTransient != 0) {
 35496  		goto __25
 35497  	}
 35498  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 35499  		uintptr(0)))
 35500  	return TCL_ERROR
 35501  __25:
 35502  	;
 35503  	if !(objc-i < 2) {
 35504  		goto __26
 35505  	}
 35506  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 35507  	return TCL_ERROR
 35508  __26:
 35509  	;
 35510  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 35511  		goto __27
 35512  	}
 35513  	return TCL_ERROR
 35514  __27:
 35515  	;
 35516  	i++
 35517  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 35518  		goto __28
 35519  	}
 35520  	return TCL_ERROR
 35521  __28:
 35522  	;
 35523  	i++
 35524  	nData = objc - i
 35525  	switch eType + 4*libc.Bool32(nData <= 0) {
 35526  	case 0:
 35527  		goto __30
 35528  	case 1:
 35529  		goto __31
 35530  	case 2:
 35531  		goto __32
 35532  	case 3:
 35533  		goto __33
 35534  	case 4:
 35535  		goto __34
 35536  	}
 35537  	goto __29
 35538  __30:
 35539  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 35540  	if !(a == uintptr(0)) {
 35541  		goto __35
 35542  	}
 35543  	rc = SQLITE_NOMEM
 35544  	goto carray_bind_done
 35545  __35:
 35546  	;
 35547  	j = 0
 35548  __36:
 35549  	if !(j < nData) {
 35550  		goto __38
 35551  	}
 35552  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 35553  		goto __39
 35554  	}
 35555  	sqlite3.Xsqlite3_free(tls, a)
 35556  	return TCL_ERROR
 35557  __39:
 35558  	;
 35559  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 35560  	goto __37
 35561  __37:
 35562  	j++
 35563  	goto __36
 35564  	goto __38
 35565  __38:
 35566  	;
 35567  	aData = a
 35568  	goto __29
 35569  
 35570  __31:
 35571  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 35572  	if !(a1 == uintptr(0)) {
 35573  		goto __40
 35574  	}
 35575  	rc = SQLITE_NOMEM
 35576  	goto carray_bind_done
 35577  __40:
 35578  	;
 35579  	j = 0
 35580  __41:
 35581  	if !(j < nData) {
 35582  		goto __43
 35583  	}
 35584  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 35585  		goto __44
 35586  	}
 35587  	sqlite3.Xsqlite3_free(tls, a1)
 35588  	return TCL_ERROR
 35589  __44:
 35590  	;
 35591  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 35592  	goto __42
 35593  __42:
 35594  	j++
 35595  	goto __41
 35596  	goto __43
 35597  __43:
 35598  	;
 35599  	aData = a1
 35600  	goto __29
 35601  
 35602  __32:
 35603  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 35604  	if !(a2 == uintptr(0)) {
 35605  		goto __45
 35606  	}
 35607  	rc = SQLITE_NOMEM
 35608  	goto carray_bind_done
 35609  __45:
 35610  	;
 35611  	j = 0
 35612  __46:
 35613  	if !(j < nData) {
 35614  		goto __48
 35615  	}
 35616  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 35617  		goto __49
 35618  	}
 35619  	sqlite3.Xsqlite3_free(tls, a2)
 35620  	return TCL_ERROR
 35621  __49:
 35622  	;
 35623  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 35624  	goto __47
 35625  __47:
 35626  	j++
 35627  	goto __46
 35628  	goto __48
 35629  __48:
 35630  	;
 35631  	aData = a2
 35632  	goto __29
 35633  
 35634  __33:
 35635  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 35636  	if !(a3 == uintptr(0)) {
 35637  		goto __50
 35638  	}
 35639  	rc = SQLITE_NOMEM
 35640  	goto carray_bind_done
 35641  __50:
 35642  	;
 35643  	j = 0
 35644  __51:
 35645  	if !(j < nData) {
 35646  		goto __53
 35647  	}
 35648  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 35649  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 35650  	goto __52
 35651  __52:
 35652  	j++
 35653  	goto __51
 35654  	goto __53
 35655  __53:
 35656  	;
 35657  	aData = a3
 35658  	goto __29
 35659  
 35660  __34:
 35661  	aData = ts + 584
 35662  	xDel = uintptr(0)
 35663  	isTransient = 0
 35664  	isStatic = 0
 35665  	goto __29
 35666  
 35667  __29:
 35668  	;
 35669  	if !(isStatic != 0) {
 35670  		goto __54
 35671  	}
 35672  	aStaticData = aData
 35673  	nStaticData = nData
 35674  	eStaticType = eType
 35675  __54:
 35676  	;
 35677  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 35678  	if !(isTransient != 0) {
 35679  		goto __55
 35680  	}
 35681  	if !(eType == 3) {
 35682  		goto __56
 35683  	}
 35684  	i = 0
 35685  __57:
 35686  	if !(i < nData) {
 35687  		goto __59
 35688  	}
 35689  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 35690  	goto __58
 35691  __58:
 35692  	i++
 35693  	goto __57
 35694  	goto __59
 35695  __59:
 35696  	;
 35697  __56:
 35698  	;
 35699  	sqlite3.Xsqlite3_free(tls, aData)
 35700  __55:
 35701  	;
 35702  carray_bind_done:
 35703  	if !(rc != 0) {
 35704  		goto __60
 35705  	}
 35706  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 35707  	return TCL_ERROR
 35708  __60:
 35709  	;
 35710  	return TCL_OK
 35711  }
 35712  
 35713  var aStaticData uintptr = uintptr(0)
 35714  var nStaticData int32 = 0
 35715  var eStaticType int32 = 0
 35716  
 35717  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35718  	bp := tls.Alloc(8)
 35719  	defer tls.Free(8)
 35720  
 35721  	if objc != 2 {
 35722  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35723  		return TCL_ERROR
 35724  	}
 35725  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35726  		return TCL_ERROR
 35727  	}
 35728  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35729  	return TCL_OK
 35730  }
 35731  
 35732  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35733  	bp := tls.Alloc(12)
 35734  	defer tls.Free(12)
 35735  
 35736  	if objc != 3 {
 35737  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 35738  		return TCL_ERROR
 35739  	}
 35740  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35741  		return TCL_ERROR
 35742  	}
 35743  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35744  		return TCL_ERROR
 35745  	}
 35746  	tcl.XTcl_SetObjResult(tls, interp,
 35747  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 35748  	return TCL_OK
 35749  }
 35750  
 35751  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35752  	bp := tls.Alloc(8)
 35753  	defer tls.Free(8)
 35754  
 35755  	if objc != 3 {
 35756  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 35757  		return TCL_ERROR
 35758  	}
 35759  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35760  		return TCL_ERROR
 35761  	}
 35762  	tcl.XTcl_SetObjResult(tls, interp,
 35763  		tcl.XTcl_NewIntObj(tls,
 35764  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 35765  	return TCL_OK
 35766  }
 35767  
 35768  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35769  	bp := tls.Alloc(8)
 35770  	defer tls.Free(8)
 35771  
 35772  	if objc != 2 {
 35773  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35774  		return TCL_ERROR
 35775  	}
 35776  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35777  		return TCL_ERROR
 35778  	}
 35779  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35780  	return TCL_OK
 35781  }
 35782  
 35783  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35784  	bp := tls.Alloc(4)
 35785  	defer tls.Free(4)
 35786  
 35787  	if objc != 2 {
 35788  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 35789  		return TCL_ERROR
 35790  	}
 35791  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 35792  		return TCL_ERROR
 35793  	}
 35794  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 35795  	return TCL_OK
 35796  }
 35797  
 35798  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35799  	bp := tls.Alloc(56)
 35800  	defer tls.Free(56)
 35801  
 35802  	var rc int32
 35803  
 35804  	if objc != 2 {
 35805  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35806  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35807  		return TCL_ERROR
 35808  	}
 35809  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35810  		return TCL_ERROR
 35811  	}
 35812  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35813  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35814  	return TCL_OK
 35815  }
 35816  
 35817  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35818  	bp := tls.Alloc(56)
 35819  	defer tls.Free(56)
 35820  
 35821  	var rc int32
 35822  
 35823  	if objc != 2 {
 35824  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35825  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35826  		return TCL_ERROR
 35827  	}
 35828  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35829  		return TCL_ERROR
 35830  	}
 35831  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35832  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35833  	return TCL_OK
 35834  }
 35835  
 35836  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35837  	bp := tls.Alloc(40)
 35838  	defer tls.Free(40)
 35839  
 35840  	var zErr uintptr
 35841  
 35842  	if objc != 2 {
 35843  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35844  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35845  		return TCL_ERROR
 35846  	}
 35847  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35848  		return TCL_ERROR
 35849  	}
 35850  
 35851  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35852  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 35853  	return TCL_OK
 35854  }
 35855  
 35856  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35857  	bp := tls.Alloc(40)
 35858  	defer tls.Free(40)
 35859  
 35860  	var iByteOffset int32
 35861  
 35862  	if objc != 2 {
 35863  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35864  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35865  		return TCL_ERROR
 35866  	}
 35867  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35868  		return TCL_ERROR
 35869  	}
 35870  
 35871  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35872  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 35873  	return TCL_OK
 35874  }
 35875  
 35876  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35877  	bp := tls.Alloc(40)
 35878  	defer tls.Free(40)
 35879  
 35880  	var zErr uintptr
 35881  	var z uintptr
 35882  	var bytes int32 = 0
 35883  
 35884  	if objc != 2 {
 35885  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35886  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35887  		return TCL_ERROR
 35888  	}
 35889  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35890  		return TCL_ERROR
 35891  	}
 35892  
 35893  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35894  	if zErr != 0 {
 35895  		z = zErr
 35896  		for bytes = 0; *(*int8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 35897  		}
 35898  	}
 35899  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 35900  	return TCL_OK
 35901  }
 35902  
 35903  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35904  	bp := tls.Alloc(162)
 35905  	defer tls.Free(162)
 35906  
 35907  	var zSql uintptr
 35908  
 35909  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35910  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35911  
 35912  	var rc int32
 35913  
 35914  	if objc != 5 && objc != 4 {
 35915  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35916  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35917  		return TCL_ERROR
 35918  	}
 35919  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35920  		return TCL_ERROR
 35921  	}
 35922  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35923  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35924  		return TCL_ERROR
 35925  	}
 35926  
 35927  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 35928  		if objc >= 5 {
 35929  			return bp + 104
 35930  		}
 35931  		return uintptr(0)
 35932  	}())
 35933  	tcl.XTcl_ResetResult(tls, interp)
 35934  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35935  		return TCL_ERROR
 35936  	}
 35937  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 35938  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35939  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 35940  		}
 35941  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 35942  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 35943  		}
 35944  		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)
 35945  	}
 35946  	if rc != SQLITE_OK {
 35947  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35948  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35949  		return TCL_ERROR
 35950  	}
 35951  
 35952  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 35953  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 35954  			return TCL_ERROR
 35955  		}
 35956  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35957  	}
 35958  	return TCL_OK
 35959  }
 35960  
 35961  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35962  	bp := tls.Alloc(162)
 35963  	defer tls.Free(162)
 35964  
 35965  	var zSql uintptr
 35966  	var zCopy uintptr = uintptr(0)
 35967  
 35968  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35969  	var pzTail uintptr
 35970  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35971  
 35972  	var rc int32
 35973  
 35974  	if objc != 5 && objc != 4 {
 35975  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35976  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 35977  		return TCL_ERROR
 35978  	}
 35979  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35980  		return TCL_ERROR
 35981  	}
 35982  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35983  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35984  		return TCL_ERROR
 35985  	}
 35986  
 35987  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35988  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35989  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35990  	} else {
 35991  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 35992  		zCopy = libc.Xmalloc(tls, uint64(n))
 35993  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 35994  	}
 35995  	if objc >= 5 {
 35996  		pzTail = bp + 96
 35997  	} else {
 35998  		pzTail = uintptr(0)
 35999  	}
 36000  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 36001  	if objc >= 5 {
 36002  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36003  	}
 36004  	libc.Xfree(tls, zCopy)
 36005  
 36006  	tcl.XTcl_ResetResult(tls, interp)
 36007  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36008  		return TCL_ERROR
 36009  	}
 36010  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36011  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36012  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36013  		}
 36014  		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)
 36015  	}
 36016  	if rc != SQLITE_OK {
 36017  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36018  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36019  		return TCL_ERROR
 36020  	}
 36021  
 36022  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36023  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36024  			return TCL_ERROR
 36025  		}
 36026  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36027  	}
 36028  	return TCL_OK
 36029  }
 36030  
 36031  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36032  	bp := tls.Alloc(162)
 36033  	defer tls.Free(162)
 36034  
 36035  	var zSql uintptr
 36036  	var zCopy uintptr = uintptr(0)
 36037  
 36038  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36039  	var pzTail uintptr
 36040  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 36041  
 36042  	var rc int32
 36043  
 36044  	if objc != 6 && objc != 5 {
 36045  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36046  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 36047  		return TCL_ERROR
 36048  	}
 36049  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36050  		return TCL_ERROR
 36051  	}
 36052  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36053  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 36054  		return TCL_ERROR
 36055  	}
 36056  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 36057  		return TCL_ERROR
 36058  	}
 36059  
 36060  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36061  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36062  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 36063  	} else {
 36064  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36065  		zCopy = libc.Xmalloc(tls, uint64(n))
 36066  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 36067  	}
 36068  	if objc >= 6 {
 36069  		pzTail = bp + 96
 36070  	} else {
 36071  		pzTail = uintptr(0)
 36072  	}
 36073  	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)
 36074  	libc.Xfree(tls, zCopy)
 36075  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 36076  
 36077  	tcl.XTcl_ResetResult(tls, interp)
 36078  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36079  		return TCL_ERROR
 36080  	}
 36081  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 36082  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 36083  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 36084  		}
 36085  		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)
 36086  	}
 36087  	if rc != SQLITE_OK {
 36088  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 36089  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36090  		return TCL_ERROR
 36091  	}
 36092  
 36093  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 36094  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 36095  			return TCL_ERROR
 36096  		}
 36097  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 36098  	}
 36099  	return TCL_OK
 36100  }
 36101  
 36102  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36103  	bp := tls.Alloc(146)
 36104  	defer tls.Free(146)
 36105  
 36106  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 36107  
 36108  	var rc int32
 36109  
 36110  	if objc != 2 {
 36111  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36112  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36113  		return TCL_ERROR
 36114  	}
 36115  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 36116  		return TCL_ERROR
 36117  	}
 36118  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 36119  
 36120  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36121  		return TCL_ERROR
 36122  	}
 36123  	if rc != SQLITE_OK {
 36124  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 36125  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36126  		return TCL_ERROR
 36127  	}
 36128  
 36129  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 36130  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 36131  			return TCL_ERROR
 36132  		}
 36133  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 36134  	}
 36135  	return TCL_OK
 36136  }
 36137  
 36138  var zSql = *(*[10]int8)(unsafe.Pointer(ts + 17138))
 36139  
 36140  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36141  	bp := tls.Alloc(130)
 36142  	defer tls.Free(130)
 36143  
 36144  	var zSql uintptr
 36145  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36146  	var pTail uintptr = uintptr(0)
 36147  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36148  
 36149  	var rc int32
 36150  
 36151  	if objc != 5 && objc != 4 {
 36152  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36153  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36154  		return TCL_ERROR
 36155  	}
 36156  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36157  		return TCL_ERROR
 36158  	}
 36159  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36160  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36161  		return TCL_ERROR
 36162  	}
 36163  
 36164  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36165  		if objc >= 5 {
 36166  			return bp + 72
 36167  		}
 36168  		return uintptr(0)
 36169  	}())
 36170  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36171  		return TCL_ERROR
 36172  	}
 36173  	if rc != 0 {
 36174  		return TCL_ERROR
 36175  	}
 36176  
 36177  	if objc >= 5 {
 36178  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36179  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36180  		} else {
 36181  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36182  		}
 36183  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36184  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36185  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36186  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36187  			var _objPtr uintptr = pTail
 36188  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36189  				tcl.XTclFreeObj(tls, _objPtr)
 36190  			}
 36191  		}
 36192  	}
 36193  
 36194  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36195  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36196  			return TCL_ERROR
 36197  		}
 36198  	}
 36199  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36200  	return TCL_OK
 36201  }
 36202  
 36203  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36204  	bp := tls.Alloc(130)
 36205  	defer tls.Free(130)
 36206  
 36207  	var zSql uintptr
 36208  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 36209  	var pTail uintptr = uintptr(0)
 36210  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36211  
 36212  	var rc int32
 36213  
 36214  	if objc != 5 && objc != 4 {
 36215  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36216  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36217  		return TCL_ERROR
 36218  	}
 36219  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36220  		return TCL_ERROR
 36221  	}
 36222  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 36223  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 36224  		return TCL_ERROR
 36225  	}
 36226  
 36227  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 36228  		if objc >= 5 {
 36229  			return bp + 72
 36230  		}
 36231  		return uintptr(0)
 36232  	}())
 36233  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36234  		return TCL_ERROR
 36235  	}
 36236  	if rc != 0 {
 36237  		return TCL_ERROR
 36238  	}
 36239  
 36240  	if objc >= 5 {
 36241  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 36242  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 36243  		} else {
 36244  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 36245  		}
 36246  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 36247  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36248  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 36249  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36250  			var _objPtr uintptr = pTail
 36251  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36252  				tcl.XTclFreeObj(tls, _objPtr)
 36253  			}
 36254  		}
 36255  	}
 36256  
 36257  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36258  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 36259  			return TCL_ERROR
 36260  		}
 36261  	}
 36262  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 36263  	return TCL_OK
 36264  }
 36265  
 36266  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36267  	bp := tls.Alloc(156)
 36268  	defer tls.Free(156)
 36269  
 36270  	var zFilename uintptr
 36271  
 36272  	if objc != 3 && objc != 2 && objc != 1 {
 36273  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36274  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36275  		return TCL_ERROR
 36276  	}
 36277  
 36278  	if objc > 1 {
 36279  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36280  	} else {
 36281  		zFilename = uintptr(0)
 36282  	}
 36283  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 36284  
 36285  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36286  		return TCL_ERROR
 36287  	}
 36288  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36289  	return TCL_OK
 36290  }
 36291  
 36292  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36293  	bp := tls.Alloc(484)
 36294  	defer tls.Free(484)
 36295  
 36296  	var zFilename uintptr
 36297  	var zVfs uintptr
 36298  	var flags int32 = 0
 36299  
 36300  	var rc int32
 36301  
 36302  	var i int32
 36303  
 36304  	if objc != 4 {
 36305  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 36306  		return TCL_ERROR
 36307  	}
 36308  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36309  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 36310  	if int32(*(*int8)(unsafe.Pointer(zVfs))) == 0x00 {
 36311  		zVfs = uintptr(0)
 36312  	}
 36313  
 36314  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 36315  	if rc != TCL_OK {
 36316  		return rc
 36317  	}
 36318  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 36319  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 36320  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 36321  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 36322  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 36323  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 36324  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 36325  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 36326  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 36327  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 36328  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 36329  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 36330  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 36331  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 36332  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 36333  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 36334  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 36335  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 36336  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 36337  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 36338  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 36339  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 36340  			{},
 36341  		}
 36342  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 36343  			ts+17631, 0, bp+368)
 36344  		if rc != TCL_OK {
 36345  			return rc
 36346  		}
 36347  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 36348  	}
 36349  
 36350  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 36351  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 36352  		return TCL_ERROR
 36353  	}
 36354  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 36355  	return TCL_OK
 36356  }
 36357  
 36358  type OpenFlag = struct {
 36359  	FzFlag       uintptr
 36360  	Fflag        int32
 36361  	F__ccgo_pad1 [4]byte
 36362  }
 36363  
 36364  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36365  	bp := tls.Alloc(156)
 36366  	defer tls.Free(156)
 36367  
 36368  	var zFilename uintptr
 36369  
 36370  	if objc != 3 {
 36371  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36372  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36373  		return TCL_ERROR
 36374  	}
 36375  
 36376  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36377  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 36378  
 36379  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36380  		return TCL_ERROR
 36381  	}
 36382  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 36383  	return TCL_OK
 36384  }
 36385  
 36386  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36387  	var zBuf uintptr
 36388  
 36389  	if objc != 2 {
 36390  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 36391  		return TCL_ERROR
 36392  	}
 36393  
 36394  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 36395  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 36396  	return TCL_OK
 36397  }
 36398  
 36399  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36400  	var zSql uintptr
 36401  	var zNorm uintptr
 36402  
 36403  	if objc != 2 {
 36404  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 36405  		return TCL_ERROR
 36406  	}
 36407  
 36408  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 36409  	zNorm = sqlite3_normalize(tls, zSql)
 36410  	if zNorm != 0 {
 36411  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 36412  		sqlite3.Xsqlite3_free(tls, zNorm)
 36413  	}
 36414  	return TCL_OK
 36415  }
 36416  
 36417  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36418  	bp := tls.Alloc(40)
 36419  	defer tls.Free(40)
 36420  
 36421  	var rc int32
 36422  
 36423  	if objc != 2 {
 36424  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36425  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 36426  		return TCL_ERROR
 36427  	}
 36428  
 36429  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36430  		return TCL_ERROR
 36431  	}
 36432  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36433  
 36434  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36435  	return TCL_OK
 36436  }
 36437  
 36438  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36439  	bp := tls.Alloc(8)
 36440  	defer tls.Free(8)
 36441  
 36442  	if objc != 2 {
 36443  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36444  		return TCL_ERROR
 36445  	}
 36446  
 36447  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36448  		return TCL_ERROR
 36449  	}
 36450  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 36451  	return TCL_OK
 36452  }
 36453  
 36454  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36455  	bp := tls.Alloc(8)
 36456  	defer tls.Free(8)
 36457  
 36458  	var z uintptr
 36459  
 36460  	if objc != 2 {
 36461  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36462  		return TCL_ERROR
 36463  	}
 36464  
 36465  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36466  		return TCL_ERROR
 36467  	}
 36468  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36469  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 36470  	sqlite3.Xsqlite3_free(tls, z)
 36471  	return TCL_OK
 36472  }
 36473  
 36474  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36475  	bp := tls.Alloc(40)
 36476  	defer tls.Free(40)
 36477  
 36478  	if objc != 2 {
 36479  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36480  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36481  		return TCL_ERROR
 36482  	}
 36483  
 36484  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36485  		return TCL_ERROR
 36486  	}
 36487  
 36488  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36489  	return TCL_OK
 36490  }
 36491  
 36492  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36493  	bp := tls.Alloc(44)
 36494  	defer tls.Free(44)
 36495  
 36496  	var tp int32
 36497  
 36498  	if objc != 3 {
 36499  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36500  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36501  		return TCL_ERROR
 36502  	}
 36503  
 36504  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36505  		return TCL_ERROR
 36506  	}
 36507  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36508  		return TCL_ERROR
 36509  	}
 36510  
 36511  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36512  	switch tp {
 36513  	case SQLITE_INTEGER:
 36514  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 36515  		break
 36516  	case SQLITE_NULL:
 36517  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 36518  		break
 36519  	case SQLITE_FLOAT:
 36520  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 36521  		break
 36522  	case SQLITE_TEXT:
 36523  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 36524  		break
 36525  	case SQLITE_BLOB:
 36526  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 36527  		break
 36528  	default:
 36529  	}
 36530  
 36531  	return TCL_OK
 36532  }
 36533  
 36534  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36535  	bp := tls.Alloc(44)
 36536  	defer tls.Free(44)
 36537  
 36538  	var iVal i64
 36539  
 36540  	if objc != 3 {
 36541  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36542  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36543  		return TCL_ERROR
 36544  	}
 36545  
 36546  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36547  		return TCL_ERROR
 36548  	}
 36549  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36550  		return TCL_ERROR
 36551  	}
 36552  
 36553  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36554  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 36555  	return TCL_OK
 36556  }
 36557  
 36558  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36559  	bp := tls.Alloc(44)
 36560  	defer tls.Free(44)
 36561  
 36562  	var len int32
 36563  	var pBlob uintptr
 36564  
 36565  	if objc != 3 {
 36566  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36567  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36568  		return TCL_ERROR
 36569  	}
 36570  
 36571  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36572  		return TCL_ERROR
 36573  	}
 36574  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36575  		return TCL_ERROR
 36576  	}
 36577  
 36578  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36579  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36580  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 36581  	return TCL_OK
 36582  }
 36583  
 36584  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36585  	bp := tls.Alloc(44)
 36586  	defer tls.Free(44)
 36587  
 36588  	var rVal float64
 36589  
 36590  	if objc != 3 {
 36591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36592  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36593  		return TCL_ERROR
 36594  	}
 36595  
 36596  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36597  		return TCL_ERROR
 36598  	}
 36599  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36600  		return TCL_ERROR
 36601  	}
 36602  
 36603  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36604  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 36605  	return TCL_OK
 36606  }
 36607  
 36608  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36609  	bp := tls.Alloc(40)
 36610  	defer tls.Free(40)
 36611  
 36612  	if objc != 2 {
 36613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36614  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36615  		return TCL_ERROR
 36616  	}
 36617  
 36618  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36619  		return TCL_ERROR
 36620  	}
 36621  
 36622  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36623  	return TCL_OK
 36624  }
 36625  
 36626  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36627  	bp := tls.Alloc(44)
 36628  	defer tls.Free(44)
 36629  
 36630  	var xFunc uintptr
 36631  	var zRet uintptr
 36632  
 36633  	xFunc = clientData
 36634  	if objc != 3 {
 36635  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36636  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36637  		return TCL_ERROR
 36638  	}
 36639  
 36640  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36641  		return TCL_ERROR
 36642  	}
 36643  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36644  		return TCL_ERROR
 36645  	}
 36646  	zRet = (*struct {
 36647  		f func(*libc.TLS, uintptr, int32) uintptr
 36648  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36649  	if zRet != 0 {
 36650  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 36651  	}
 36652  	return TCL_OK
 36653  }
 36654  
 36655  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36656  	var rc int32
 36657  	if objc != 1 {
 36658  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36659  		return TCL_ERROR
 36660  	}
 36661  	rc = sqlite3.Xsqlite3_global_recover(tls)
 36662  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36663  	return TCL_OK
 36664  }
 36665  
 36666  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36667  	bp := tls.Alloc(44)
 36668  	defer tls.Free(44)
 36669  
 36670  	var pRet uintptr
 36671  	var zName16 uintptr
 36672  	var xFunc uintptr
 36673  
 36674  	xFunc = clientData
 36675  	if objc != 3 {
 36676  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36677  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36678  		return TCL_ERROR
 36679  	}
 36680  
 36681  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36682  		return TCL_ERROR
 36683  	}
 36684  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36685  		return TCL_ERROR
 36686  	}
 36687  
 36688  	zName16 = (*struct {
 36689  		f func(*libc.TLS, uintptr, int32) uintptr
 36690  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36691  	if zName16 != 0 {
 36692  		var n int32
 36693  		var z uintptr = zName16
 36694  		for n = 0; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 36695  		}
 36696  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 36697  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 36698  	}
 36699  
 36700  	return TCL_OK
 36701  }
 36702  
 36703  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36704  	bp := tls.Alloc(44)
 36705  	defer tls.Free(44)
 36706  
 36707  	var xFunc uintptr
 36708  
 36709  	xFunc = clientData
 36710  	if objc != 3 {
 36711  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36712  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36713  		return TCL_ERROR
 36714  	}
 36715  
 36716  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36717  		return TCL_ERROR
 36718  	}
 36719  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36720  		return TCL_ERROR
 36721  	}
 36722  
 36723  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 36724  		f func(*libc.TLS, uintptr, int32) int32
 36725  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 36726  	return TCL_OK
 36727  }
 36728  
 36729  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36730  	bp := tls.Alloc(40)
 36731  	defer tls.Free(40)
 36732  
 36733  	if argc != 2 {
 36734  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 36735  		return TCL_ERROR
 36736  	}
 36737  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36738  		return TCL_ERROR
 36739  	}
 36740  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36741  	return TCL_OK
 36742  }
 36743  
 36744  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36745  	bp := tls.Alloc(40)
 36746  	defer tls.Free(40)
 36747  
 36748  	var rc int32
 36749  
 36750  	if argc != 3 {
 36751  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36752  			ts+17678, 0))
 36753  		return TCL_ERROR
 36754  	}
 36755  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36756  		return TCL_ERROR
 36757  	}
 36758  	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))
 36759  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36760  	return TCL_OK
 36761  }
 36762  
 36763  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36764  	bp := tls.Alloc(40)
 36765  	defer tls.Free(40)
 36766  
 36767  	var rc int32
 36768  
 36769  	if argc != 3 {
 36770  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36771  			ts+17678, 0))
 36772  		return TCL_ERROR
 36773  	}
 36774  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36775  		return TCL_ERROR
 36776  	}
 36777  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 36778  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36779  	return TCL_OK
 36780  }
 36781  
 36782  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36783  	bp := tls.Alloc(94)
 36784  	defer tls.Free(94)
 36785  
 36786  	if argc != 2 {
 36787  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36788  			ts+15001, 0))
 36789  		return TCL_ERROR
 36790  	}
 36791  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 36792  		return TCL_ERROR
 36793  	}
 36794  	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)))))
 36795  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 36796  	return TCL_OK
 36797  }
 36798  
 36799  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36800  	bp := tls.Alloc(60)
 36801  	defer tls.Free(60)
 36802  
 36803  	var rc int32
 36804  
 36805  	if argc != 3 {
 36806  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36807  			ts+15001, 0))
 36808  		return TCL_ERROR
 36809  	}
 36810  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 36811  		return TCL_ERROR
 36812  	}
 36813  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 36814  		return TCL_ERROR
 36815  	}
 36816  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 36817  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36818  	return TCL_OK
 36819  }
 36820  
 36821  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36822  	var pVar uintptr
 36823  	if objc != 2 {
 36824  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 36825  		return TCL_ERROR
 36826  	}
 36827  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 36828  	if pVar == uintptr(0) {
 36829  		return TCL_ERROR
 36830  	}
 36831  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 36832  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 36833  	}
 36834  	return TCL_OK
 36835  }
 36836  
 36837  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36838  	bp := tls.Alloc(4)
 36839  	defer tls.Free(4)
 36840  
 36841  	var amt int32
 36842  	if objc != 1 && objc != 2 {
 36843  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36844  		return TCL_ERROR
 36845  	}
 36846  	if objc == 2 {
 36847  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36848  			return TCL_ERROR
 36849  		}
 36850  	} else {
 36851  		*(*int32)(unsafe.Pointer(bp)) = -1
 36852  	}
 36853  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 36854  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 36855  	return TCL_OK
 36856  }
 36857  
 36858  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36859  	bp := tls.Alloc(8)
 36860  	defer tls.Free(8)
 36861  
 36862  	var rc int32
 36863  	if objc != 2 {
 36864  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36865  		return TCL_ERROR
 36866  	}
 36867  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36868  		return TCL_ERROR
 36869  	}
 36870  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36871  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36872  	return TCL_OK
 36873  }
 36874  
 36875  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36876  	bp := tls.Alloc(8)
 36877  	defer tls.Free(8)
 36878  
 36879  	var rc int32
 36880  	if objc != 2 {
 36881  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36882  		return TCL_ERROR
 36883  	}
 36884  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36885  		return TCL_ERROR
 36886  	}
 36887  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36888  	if rc != 0 {
 36889  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 36890  		return TCL_ERROR
 36891  	}
 36892  
 36893  	tcl.XTcl_ResetResult(tls, interp)
 36894  	return TCL_OK
 36895  }
 36896  
 36897  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36898  	bp := tls.Alloc(8)
 36899  	defer tls.Free(8)
 36900  
 36901  	var iErrno int32
 36902  	if objc != 2 {
 36903  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36904  		return TCL_ERROR
 36905  	}
 36906  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36907  		return TCL_ERROR
 36908  	}
 36909  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36910  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 36911  	return TCL_OK
 36912  }
 36913  
 36914  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36915  	bp := tls.Alloc(24)
 36916  	defer tls.Free(24)
 36917  
 36918  	var zDbName uintptr
 36919  	if objc != 3 {
 36920  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36921  		return TCL_ERROR
 36922  	}
 36923  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 36924  		return TCL_ERROR
 36925  	}
 36926  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36927  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 36928  	return TCL_OK
 36929  }
 36930  
 36931  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36932  	bp := tls.Alloc(8)
 36933  	defer tls.Free(8)
 36934  
 36935  	var zDbName uintptr
 36936  	if objc != 3 {
 36937  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36938  		return TCL_ERROR
 36939  	}
 36940  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36941  		return TCL_ERROR
 36942  	}
 36943  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36944  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 36945  	return TCL_OK
 36946  }
 36947  
 36948  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36949  	bp := tls.Alloc(8)
 36950  	defer tls.Free(8)
 36951  
 36952  	var amt sqlite3_int64
 36953  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36954  	if objc != 1 && objc != 2 {
 36955  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36956  		return TCL_ERROR
 36957  	}
 36958  	if objc == 2 {
 36959  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36960  			return TCL_ERROR
 36961  		}
 36962  	}
 36963  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36964  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36965  	return TCL_OK
 36966  }
 36967  
 36968  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36969  	bp := tls.Alloc(8)
 36970  	defer tls.Free(8)
 36971  
 36972  	var amt sqlite3_int64
 36973  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36974  	if objc != 1 && objc != 2 {
 36975  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36976  		return TCL_ERROR
 36977  	}
 36978  	if objc == 2 {
 36979  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36980  			return TCL_ERROR
 36981  		}
 36982  	}
 36983  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36984  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36985  	return TCL_OK
 36986  }
 36987  
 36988  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36989  	sqlite3.Xsqlite3_thread_cleanup(tls)
 36990  	return TCL_OK
 36991  }
 36992  
 36993  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36994  	bp := tls.Alloc(40)
 36995  	defer tls.Free(40)
 36996  
 36997  	var i int32
 36998  	var v int32
 36999  	var a uintptr
 37000  	var pResult uintptr
 37001  
 37002  	if objc != 2 {
 37003  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37004  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37005  		return TCL_ERROR
 37006  	}
 37007  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37008  		return TCL_ERROR
 37009  	}
 37010  	pResult = tcl.XTcl_NewObj(tls)
 37011  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 37012  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 37013  			v = -1
 37014  		} else {
 37015  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37016  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 37017  			v = *(*int32)(unsafe.Pointer(a))
 37018  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37019  		}
 37020  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 37021  	}
 37022  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 37023  	return TCL_OK
 37024  }
 37025  
 37026  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37027  	var pTestObj uintptr
 37028  	var working int32 = 0
 37029  
 37030  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 37031  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 37032  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37033  		var _objPtr uintptr = pTestObj
 37034  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37035  			tcl.XTclFreeObj(tls, _objPtr)
 37036  		}
 37037  	}
 37038  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 37039  	return TCL_OK
 37040  }
 37041  
 37042  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37043  	bp := tls.Alloc(496)
 37044  	defer tls.Free(496)
 37045  
 37046  	var i int32
 37047  	var pMain uintptr
 37048  
 37049  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 37050  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37051  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 37052  
 37053  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37054  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37055  
 37056  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 37057  
 37058  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37059  
 37060  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 37061  
 37062  	if pMain != 0 {
 37063  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 37064  
 37065  	}
 37066  
 37067  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 37068  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37069  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37070  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 37071  
 37072  		}
 37073  	}
 37074  
 37075  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 37076  
 37077  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 37078  
 37079  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 37080  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 37081  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 37082  
 37083  		}
 37084  	}
 37085  
 37086  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37087  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37088  
 37089  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37090  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 37091  
 37092  	return TCL_OK
 37093  }
 37094  
 37095  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37096  	bp := tls.Alloc(168)
 37097  	defer tls.Free(168)
 37098  
 37099  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37100  
 37101  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37102  		return TCL_ERROR
 37103  	}
 37104  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37105  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37106  		return TCL_ERROR
 37107  	}
 37108  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37109  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37110  		return TCL_ERROR
 37111  	}
 37112  	return TCL_OK
 37113  }
 37114  
 37115  var apVfs [20]uintptr
 37116  var nVfs int32 = 0
 37117  
 37118  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37119  	var i int32
 37120  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 37121  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37122  		if apVfs[i] == uintptr(0) {
 37123  			break
 37124  		}
 37125  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 37126  	}
 37127  	nVfs = i
 37128  	return TCL_OK
 37129  }
 37130  
 37131  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37132  	var i int32
 37133  	for i = nVfs - 1; i >= 0; i-- {
 37134  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 37135  	}
 37136  	return TCL_OK
 37137  }
 37138  
 37139  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37140  	bp := tls.Alloc(44)
 37141  	defer tls.Free(44)
 37142  
 37143  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 37144  
 37145  	var rc int32
 37146  	_ = rc
 37147  
 37148  	if objc != 2 {
 37149  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37150  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37151  		return TCL_ERROR
 37152  	}
 37153  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37154  		return TCL_ERROR
 37155  	}
 37156  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 37157  
 37158  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 37159  
 37160  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 37161  
 37162  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 37163  
 37164  	return TCL_OK
 37165  }
 37166  
 37167  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37168  	bp := tls.Alloc(76)
 37169  	defer tls.Free(76)
 37170  
 37171  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 37172  
 37173  	var rc int32
 37174  
 37175  	if objc != 2 {
 37176  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37177  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37178  		return TCL_ERROR
 37179  	}
 37180  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37181  		return TCL_ERROR
 37182  	}
 37183  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 37184  	if rc != 0 {
 37185  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37186  		return TCL_ERROR
 37187  	}
 37188  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 37189  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 37190  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 37191  		return TCL_ERROR
 37192  	}
 37193  	return TCL_OK
 37194  }
 37195  
 37196  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37197  	bp := tls.Alloc(120)
 37198  	defer tls.Free(120)
 37199  
 37200  	var zDb uintptr
 37201  
 37202  	var rc int32
 37203  
 37204  	if objc != 3 && objc != 2 {
 37205  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 37206  		return TCL_ERROR
 37207  	}
 37208  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 37209  		return TCL_ERROR
 37210  	}
 37211  	if objc == 3 {
 37212  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37213  	} else {
 37214  		zDb = uintptr(0)
 37215  	}
 37216  
 37217  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 37218  	if rc != 0 {
 37219  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37220  		return TCL_ERROR
 37221  	} else {
 37222  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 37223  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 37224  		return TCL_OK
 37225  	}
 37226  	return int32(0)
 37227  }
 37228  
 37229  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37230  	bp := tls.Alloc(12)
 37231  	defer tls.Free(12)
 37232  
 37233  	var zDb uintptr
 37234  
 37235  	var rc int32
 37236  
 37237  	if objc != 4 {
 37238  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37239  		return TCL_ERROR
 37240  	}
 37241  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37242  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37243  		return TCL_ERROR
 37244  	}
 37245  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37246  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 37247  		zDb = uintptr(0)
 37248  	}
 37249  
 37250  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 37251  	if rc != 0 {
 37252  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37253  		return TCL_ERROR
 37254  	}
 37255  	return TCL_OK
 37256  }
 37257  
 37258  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37259  	bp := tls.Alloc(16)
 37260  	defer tls.Free(16)
 37261  
 37262  	var zDb uintptr
 37263  
 37264  	var rc int32
 37265  
 37266  	if objc != 4 {
 37267  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37268  		return TCL_ERROR
 37269  	}
 37270  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37271  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 37272  		return TCL_ERROR
 37273  	}
 37274  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37275  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 37276  		zDb = uintptr(0)
 37277  	}
 37278  
 37279  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 37280  	if rc != 0 {
 37281  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37282  		return TCL_ERROR
 37283  	}
 37284  	return TCL_OK
 37285  }
 37286  
 37287  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37288  	bp := tls.Alloc(40)
 37289  	defer tls.Free(40)
 37290  
 37291  	if objc != 3 {
 37292  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37293  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 37294  		return TCL_ERROR
 37295  	}
 37296  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37297  		return TCL_ERROR
 37298  	}
 37299  
 37300  	return TCL_OK
 37301  }
 37302  
 37303  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37304  	bp := tls.Alloc(176)
 37305  	defer tls.Free(176)
 37306  
 37307  	var rc int32
 37308  
 37309  	if objc != 3 {
 37310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37311  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37312  		return TCL_ERROR
 37313  	}
 37314  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37315  		return TCL_ERROR
 37316  	}
 37317  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37318  		return TCL_ERROR
 37319  	}
 37320  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 37321  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37322  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37323  	return TCL_OK
 37324  }
 37325  
 37326  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37327  	bp := tls.Alloc(176)
 37328  	defer tls.Free(176)
 37329  
 37330  	var rc int32
 37331  
 37332  	if objc != 3 {
 37333  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37334  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37335  		return TCL_ERROR
 37336  	}
 37337  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37338  		return TCL_ERROR
 37339  	}
 37340  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 37341  		return TCL_ERROR
 37342  	}
 37343  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 37344  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 37345  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 37346  	return TCL_OK
 37347  }
 37348  
 37349  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37350  	bp := tls.Alloc(64)
 37351  	defer tls.Free(64)
 37352  
 37353  	var zDbName uintptr = ts + 85
 37354  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37355  
 37356  	if objc != 2 && objc != 3 {
 37357  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37358  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37359  		return TCL_ERROR
 37360  	}
 37361  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37362  		return TCL_ERROR
 37363  	}
 37364  	if objc == 3 {
 37365  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37366  	}
 37367  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 37368  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37369  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37370  	return TCL_OK
 37371  }
 37372  
 37373  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37374  	bp := tls.Alloc(12)
 37375  	defer tls.Free(12)
 37376  
 37377  	var zDbName uintptr = ts + 85
 37378  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37379  	var rc int32
 37380  
 37381  	if objc != 3 {
 37382  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 37383  		return TCL_ERROR
 37384  	}
 37385  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37386  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37387  		return TCL_ERROR
 37388  	}
 37389  
 37390  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 37391  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 37392  	return TCL_OK
 37393  }
 37394  
 37395  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37396  	bp := tls.Alloc(64)
 37397  	defer tls.Free(64)
 37398  
 37399  	var zDbName uintptr = ts + 85
 37400  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 37401  
 37402  	if objc != 2 && objc != 3 {
 37403  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37404  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37405  		return TCL_ERROR
 37406  	}
 37407  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 37408  		return TCL_ERROR
 37409  	}
 37410  	if objc == 3 {
 37411  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37412  	}
 37413  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 37414  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 37415  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 37416  	return TCL_OK
 37417  }
 37418  
 37419  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37420  	bp := tls.Alloc(44)
 37421  	defer tls.Free(44)
 37422  
 37423  	var zName uintptr = ts + 85
 37424  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 37425  	var rc int32 = SQLITE_OK
 37426  
 37427  	if objc != 2 && objc != 3 {
 37428  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37429  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37430  		return TCL_ERROR
 37431  	}
 37432  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 37433  		return TCL_ERROR
 37434  	}
 37435  	if objc == 3 {
 37436  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37437  	}
 37438  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 37439  	if rc != SQLITE_OK {
 37440  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37441  		return TCL_ERROR
 37442  	}
 37443  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 37444  	return TCL_OK
 37445  }
 37446  
 37447  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37448  	var pVfs uintptr
 37449  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 37450  	if objc != 1 {
 37451  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 37452  		return TCL_ERROR
 37453  	}
 37454  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 37455  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 37456  	}
 37457  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37458  	return TCL_OK
 37459  }
 37460  
 37461  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37462  	bp := tls.Alloc(68)
 37463  	defer tls.Free(68)
 37464  
 37465  	var rc int32
 37466  	var i int32
 37467  	var id int32 = 0
 37468  
 37469  	var zId uintptr
 37470  
 37471  	if objc != 4 {
 37472  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37473  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 37474  		return TCL_ERROR
 37475  	}
 37476  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 37477  		return TCL_ERROR
 37478  	}
 37479  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37480  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 37481  		FzName       uintptr
 37482  		Fid          int32
 37483  		F__ccgo_pad1 [4]byte
 37484  	}{})); i++ {
 37485  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 37486  			id = aId[i].Fid
 37487  			break
 37488  		}
 37489  	}
 37490  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 37491  		FzName       uintptr
 37492  		Fid          int32
 37493  		F__ccgo_pad1 [4]byte
 37494  	}{})) {
 37495  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 37496  		return TCL_ERROR
 37497  	}
 37498  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 37499  		return TCL_ERROR
 37500  	}
 37501  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 37502  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37503  	return TCL_OK
 37504  }
 37505  
 37506  var aId = [14]struct {
 37507  	FzName       uintptr
 37508  	Fid          int32
 37509  	F__ccgo_pad1 [4]byte
 37510  }{
 37511  	{FzName: ts + 17883},
 37512  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 37513  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 37514  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 37515  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 37516  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 37517  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 37518  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 37519  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 37520  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 37521  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 37522  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 37523  	{FzName: ts + 18186, Fid: -1},
 37524  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 37525  }
 37526  
 37527  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37528  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 37529  	_ = rc
 37530  
 37531  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 37532  
 37533  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 37534  	return TCL_OK
 37535  }
 37536  
 37537  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37538  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 37539  	return TCL_OK
 37540  }
 37541  
 37542  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37543  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 37544  	return TCL_OK
 37545  }
 37546  
 37547  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37548  	bp := tls.Alloc(32)
 37549  	defer tls.Free(32)
 37550  
 37551  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 37552  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 37553  	if objc != 2 && objc != 3 {
 37554  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 37555  		return TCL_ERROR
 37556  	}
 37557  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 37558  		return TCL_ERROR
 37559  	}
 37560  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 37561  		return TCL_ERROR
 37562  	}
 37563  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 37564  	return TCL_OK
 37565  }
 37566  
 37567  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37568  	bp := tls.Alloc(12)
 37569  	defer tls.Free(12)
 37570  
 37571  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37572  	if objc != 2 {
 37573  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 37574  		return TCL_ERROR
 37575  	}
 37576  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 37577  		return TCL_ERROR
 37578  	}
 37579  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 37580  	return TCL_OK
 37581  }
 37582  
 37583  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37584  	bp := tls.Alloc(8)
 37585  	defer tls.Free(8)
 37586  
 37587  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 37588  	return TCL_OK
 37589  }
 37590  
 37591  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37592  	bp := tls.Alloc(8)
 37593  	defer tls.Free(8)
 37594  
 37595  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 37596  	return TCL_OK
 37597  }
 37598  
 37599  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37600  	bp := tls.Alloc(16)
 37601  	defer tls.Free(16)
 37602  
 37603  	var pRet uintptr
 37604  
 37605  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 37606  
 37607  	pRet = tcl.XTcl_NewObj(tls)
 37608  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 37609  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 37610  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 37611  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 37612  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 37613  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 37614  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 37615  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 37616  
 37617  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37618  
 37619  	return TCL_OK
 37620  }
 37621  
 37622  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 37623  	var ii int32
 37624  	for ii = 0; ii < nArg; ii++ {
 37625  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 37626  	}
 37627  }
 37628  
 37629  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37630  	bp := tls.Alloc(8)
 37631  	defer tls.Free(8)
 37632  
 37633  	var rc int32
 37634  
 37635  	if objc != 2 {
 37636  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37637  		return TCL_ERROR
 37638  	}
 37639  
 37640  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37641  		return TCL_ERROR
 37642  	}
 37643  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 37644  		f func(*libc.TLS, uintptr, int32)
 37645  	}{test_unlock_notify_cb})), interp)
 37646  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37647  	return TCL_OK
 37648  }
 37649  
 37650  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37651  	bp := tls.Alloc(8)
 37652  	defer tls.Free(8)
 37653  
 37654  	var zDb uintptr = uintptr(0)
 37655  
 37656  	var rc int32
 37657  
 37658  	if objc != 3 && objc != 2 {
 37659  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 37660  		return TCL_ERROR
 37661  	}
 37662  
 37663  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37664  		return TCL_ERROR
 37665  	}
 37666  	if objc == 3 {
 37667  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37668  	}
 37669  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 37670  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37671  	return TCL_OK
 37672  }
 37673  
 37674  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37675  	bp := tls.Alloc(96)
 37676  	defer tls.Free(96)
 37677  
 37678  	var zDb uintptr = uintptr(0)
 37679  
 37680  	var rc int32
 37681  
 37682  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 37683  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 37684  	var pRet uintptr
 37685  
 37686  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 37687  
 37688  	if objc != 3 && objc != 4 {
 37689  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 37690  		return TCL_ERROR
 37691  	}
 37692  
 37693  	if objc == 4 {
 37694  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37695  	}
 37696  	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) &&
 37697  		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) {
 37698  		return TCL_ERROR
 37699  	}
 37700  
 37701  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 37702  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 37703  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37704  		tcl.XTcl_ResetResult(tls, interp)
 37705  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 37706  		return TCL_ERROR
 37707  	}
 37708  
 37709  	pRet = tcl.XTcl_NewObj(tls)
 37710  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 37711  		if rc == SQLITE_BUSY {
 37712  			return 1
 37713  		}
 37714  		return 0
 37715  	}()))
 37716  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 37717  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 37718  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37719  
 37720  	return TCL_OK
 37721  }
 37722  
 37723  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37724  	bp := tls.Alloc(12)
 37725  	defer tls.Free(12)
 37726  
 37727  	var rc int32
 37728  
 37729  	if objc != 3 {
 37730  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 37731  		return TCL_ERROR
 37732  	}
 37733  
 37734  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37735  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37736  		return TCL_ERROR
 37737  	}
 37738  
 37739  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 37740  	tcl.XTcl_ResetResult(tls, interp)
 37741  	if rc != SQLITE_OK {
 37742  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37743  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 37744  		return TCL_ERROR
 37745  	}
 37746  
 37747  	return TCL_OK
 37748  }
 37749  
 37750  type LogCallback = struct {
 37751  	FpInterp uintptr
 37752  	FpObj    uintptr
 37753  }
 37754  
 37755  var logcallback = LogCallback{}
 37756  
 37757  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 37758  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 37759  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 37760  	tcl.XTcl_ListObjAppendElement(tls,
 37761  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 37762  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 37763  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 37764  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37765  		var _objPtr uintptr = pNew
 37766  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37767  			tcl.XTclFreeObj(tls, _objPtr)
 37768  		}
 37769  	}
 37770  }
 37771  
 37772  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37773  	bp := tls.Alloc(32)
 37774  	defer tls.Free(32)
 37775  
 37776  	if objc > 2 {
 37777  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 37778  		return TCL_ERROR
 37779  	}
 37780  	if logcallback.FpObj != 0 {
 37781  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37782  			var _objPtr uintptr = logcallback.FpObj
 37783  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37784  				tcl.XTclFreeObj(tls, _objPtr)
 37785  			}
 37786  		}
 37787  		logcallback.FpObj = uintptr(0)
 37788  		logcallback.FpInterp = uintptr(0)
 37789  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 37790  	}
 37791  	if objc > 1 {
 37792  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 37793  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 37794  		logcallback.FpInterp = interp
 37795  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 37796  			f func(*libc.TLS, uintptr, int32, uintptr)
 37797  		}{xLogcallback})), uintptr(0)))
 37798  	}
 37799  	return TCL_OK
 37800  }
 37801  
 37802  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37803  	bp := tls.Alloc(112)
 37804  	defer tls.Free(112)
 37805  
 37806  	if objc < 2 {
 37807  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 37808  		return TCL_ERROR
 37809  	}
 37810  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 37811  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 37812  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37813  		return TCL_ERROR
 37814  	}
 37815  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 37816  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 37817  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37818  		return TCL_ERROR
 37819  	}
 37820  	return (*struct {
 37821  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 37822  	})(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)
 37823  }
 37824  
 37825  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 37826  	bp := tls.Alloc(48)
 37827  	defer tls.Free(48)
 37828  
 37829  	var zSql uintptr
 37830  	var zExplain uintptr
 37831  
 37832  	var rc int32
 37833  
 37834  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 37835  	if zSql == uintptr(0) {
 37836  		return SQLITE_ERROR
 37837  	}
 37838  
 37839  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 37840  	if zExplain == uintptr(0) {
 37841  		return SQLITE_NOMEM
 37842  	}
 37843  
 37844  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 37845  	sqlite3.Xsqlite3_free(tls, zExplain)
 37846  	if rc != SQLITE_OK {
 37847  		return rc
 37848  	}
 37849  
 37850  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 37851  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 37852  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 37853  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 37854  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 37855  
 37856  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 37857  	}
 37858  
 37859  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 37860  }
 37861  
 37862  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37863  	bp := tls.Alloc(8)
 37864  	defer tls.Free(8)
 37865  
 37866  	var rc int32
 37867  
 37868  	if objc != 2 {
 37869  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37870  		return TCL_ERROR
 37871  	}
 37872  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37873  		return TCL_ERROR
 37874  	}
 37875  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37876  
 37877  	libc.Xfflush(tls, libc.X__stdoutp)
 37878  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37879  	return TCL_OK
 37880  }
 37881  
 37882  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 37883  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 37884  	var pTm uintptr = aliasTM
 37885  	var altT time_t
 37886  	var iJD sqlite3_int64
 37887  	var Z int32
 37888  	var A int32
 37889  	var B int32
 37890  	var C int32
 37891  	var D int32
 37892  	var E int32
 37893  	var X1 int32
 37894  	var S int32
 37895  
 37896  	if t/int64(86400)&int64(1) != 0 {
 37897  		altT = t + int64(1800)
 37898  	} else {
 37899  		altT = t - int64(1800)
 37900  	}
 37901  	iJD = altT + 210866760000
 37902  	Z = int32((iJD + int64(43200)) / int64(86400))
 37903  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 37904  	A = Z + 1 + A - A/4
 37905  	B = A + 1524
 37906  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 37907  	D = 36525 * (C & 32767) / 100
 37908  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 37909  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 37910  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 37911  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 37912  		if E < 14 {
 37913  			return E - 2
 37914  		}
 37915  		return E - 14
 37916  	}()
 37917  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 37918  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 37919  			return C - 4716
 37920  		}
 37921  		return C - 4715
 37922  	}() - 1900
 37923  	S = int32((iJD + int64(43200)) % int64(86400))
 37924  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 37925  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 37926  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 37927  	return libc.Bool32(t == int64(959609760))
 37928  }
 37929  
 37930  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37931  	bp := tls.Alloc(192)
 37932  	defer tls.Free(192)
 37933  
 37934  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 37935  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 37936  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 37937  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 37938  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 37939  	}
 37940  
 37941  	var iFlag int32
 37942  	var rc int32
 37943  
 37944  	if objc < 2 {
 37945  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 37946  		return TCL_ERROR
 37947  	}
 37948  
 37949  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 37950  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+136)
 37951  	if rc != TCL_OK {
 37952  		return rc
 37953  	}
 37954  
 37955  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 37956  	switch iFlag {
 37957  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 37958  		{
 37959  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 37960  			if objc != 3 {
 37961  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 37962  				return TCL_ERROR
 37963  			}
 37964  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 37965  				return TCL_ERROR
 37966  			}
 37967  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 37968  			break
 37969  
 37970  		}
 37971  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 37972  		{
 37973  			if objc != 3 {
 37974  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 37975  				return TCL_ERROR
 37976  			}
 37977  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 37978  				return TCL_ERROR
 37979  			}
 37980  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 37981  				f func(*libc.TLS, uintptr, uintptr) int32
 37982  			}{testLocaltime}))))
 37983  			break
 37984  
 37985  		}
 37986  
 37987  	case SQLITE_TESTCTRL_SORTER_MMAP:
 37988  		{
 37989  			if objc != 4 {
 37990  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 37991  				return TCL_ERROR
 37992  			}
 37993  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 37994  				return TCL_ERROR
 37995  			}
 37996  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 37997  				return TCL_ERROR
 37998  			}
 37999  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 38000  			break
 38001  
 38002  		}
 38003  
 38004  	case SQLITE_TESTCTRL_IMPOSTER:
 38005  		{
 38006  			var zDbName uintptr
 38007  
 38008  			if objc != 6 {
 38009  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 38010  				return TCL_ERROR
 38011  			}
 38012  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 38013  				return TCL_ERROR
 38014  			}
 38015  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 38016  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 38017  				return TCL_ERROR
 38018  			}
 38019  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 38020  				return TCL_ERROR
 38021  			}
 38022  			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))))
 38023  			break
 38024  
 38025  		}
 38026  	}
 38027  
 38028  	tcl.XTcl_ResetResult(tls, interp)
 38029  	return TCL_OK
 38030  }
 38031  
 38032  type Verb = struct {
 38033  	FzName       uintptr
 38034  	Fi           int32
 38035  	F__ccgo_pad1 [4]byte
 38036  }
 38037  
 38038  type rusage = struct {
 38039  	Fru_utime struct {
 38040  		Ftv_sec  time_t
 38041  		Ftv_usec suseconds_t
 38042  	}
 38043  	Fru_stime struct {
 38044  		Ftv_sec  time_t
 38045  		Ftv_usec suseconds_t
 38046  	}
 38047  	Fru_maxrss   int64
 38048  	Fru_ixrss    int64
 38049  	Fru_idrss    int64
 38050  	Fru_isrss    int64
 38051  	Fru_minflt   int64
 38052  	Fru_majflt   int64
 38053  	Fru_nswap    int64
 38054  	Fru_inblock  int64
 38055  	Fru_oublock  int64
 38056  	Fru_msgsnd   int64
 38057  	Fru_msgrcv   int64
 38058  	Fru_nsignals int64
 38059  	Fru_nvcsw    int64
 38060  	Fru_nivcsw   int64
 38061  }
 38062  
 38063  type __wrusage = struct {
 38064  	Fwru_self struct {
 38065  		Fru_utime struct {
 38066  			Ftv_sec  time_t
 38067  			Ftv_usec suseconds_t
 38068  		}
 38069  		Fru_stime struct {
 38070  			Ftv_sec  time_t
 38071  			Ftv_usec suseconds_t
 38072  		}
 38073  		Fru_maxrss   int64
 38074  		Fru_ixrss    int64
 38075  		Fru_idrss    int64
 38076  		Fru_isrss    int64
 38077  		Fru_minflt   int64
 38078  		Fru_majflt   int64
 38079  		Fru_nswap    int64
 38080  		Fru_inblock  int64
 38081  		Fru_oublock  int64
 38082  		Fru_msgsnd   int64
 38083  		Fru_msgrcv   int64
 38084  		Fru_nsignals int64
 38085  		Fru_nvcsw    int64
 38086  		Fru_nivcsw   int64
 38087  	}
 38088  	Fwru_children struct {
 38089  		Fru_utime struct {
 38090  			Ftv_sec  time_t
 38091  			Ftv_usec suseconds_t
 38092  		}
 38093  		Fru_stime struct {
 38094  			Ftv_sec  time_t
 38095  			Ftv_usec suseconds_t
 38096  		}
 38097  		Fru_maxrss   int64
 38098  		Fru_ixrss    int64
 38099  		Fru_idrss    int64
 38100  		Fru_isrss    int64
 38101  		Fru_minflt   int64
 38102  		Fru_majflt   int64
 38103  		Fru_nswap    int64
 38104  		Fru_inblock  int64
 38105  		Fru_oublock  int64
 38106  		Fru_msgsnd   int64
 38107  		Fru_msgrcv   int64
 38108  		Fru_nsignals int64
 38109  		Fru_nvcsw    int64
 38110  		Fru_nivcsw   int64
 38111  	}
 38112  }
 38113  
 38114  type rlimit = struct {
 38115  	Frlim_cur rlim_t
 38116  	Frlim_max rlim_t
 38117  }
 38118  
 38119  type orlimit = struct {
 38120  	Frlim_cur int32
 38121  	Frlim_max int32
 38122  }
 38123  
 38124  type loadavg = struct {
 38125  	Fldavg       [3]uint32
 38126  	F__ccgo_pad1 [4]byte
 38127  	Ffscale      int64
 38128  }
 38129  
 38130  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38131  	bp := tls.Alloc(1216)
 38132  	defer tls.Free(1216)
 38133  
 38134  	libc.Xmemset(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})))
 38135  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 38136  
 38137  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]int8{})), bp+192,
 38138  		ts+18566,
 38139  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec),
 38140  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec),
 38141  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_minflt), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_majflt)))
 38142  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 38143  	return TCL_OK
 38144  }
 38145  
 38146  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38147  	bp := tls.Alloc(68)
 38148  	defer tls.Free(68)
 38149  
 38150  	var i int32
 38151  
 38152  	var zOpt uintptr
 38153  
 38154  	var mask int32 = 0
 38155  
 38156  	if objc != 4 {
 38157  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 38158  		return TCL_ERROR
 38159  	}
 38160  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 38161  		return TCL_ERROR
 38162  	}
 38163  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 38164  		return TCL_ERROR
 38165  	}
 38166  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38167  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38168  		FzOptName    uintptr
 38169  		Fmask        int32
 38170  		F__ccgo_pad1 [4]byte
 38171  	}{})); i++ {
 38172  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 38173  			mask = aOpt[i].Fmask
 38174  			break
 38175  		}
 38176  	}
 38177  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 38178  		mask = ^mask
 38179  	}
 38180  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38181  		FzOptName    uintptr
 38182  		Fmask        int32
 38183  		F__ccgo_pad1 [4]byte
 38184  	}{})) {
 38185  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 38186  			uintptr(0)))
 38187  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 38188  			FzOptName    uintptr
 38189  			Fmask        int32
 38190  			F__ccgo_pad1 [4]byte
 38191  		}{})); i++ {
 38192  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 38193  		}
 38194  		return TCL_ERROR
 38195  	}
 38196  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 38197  	return TCL_OK
 38198  }
 38199  
 38200  var aOpt = [14]struct {
 38201  	FzOptName    uintptr
 38202  	Fmask        int32
 38203  	F__ccgo_pad1 [4]byte
 38204  }{
 38205  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 38206  	{FzOptName: ts + 18686},
 38207  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 38208  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 38209  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 38210  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 38211  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 38212  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 38213  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 38214  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 38215  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 38216  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 38217  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 38218  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 38219  }
 38220  
 38221  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38222  	bp := tls.Alloc(80)
 38223  	defer tls.Free(80)
 38224  
 38225  	var zName uintptr
 38226  	var i int32
 38227  	var j int32
 38228  	var rc int32
 38229  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 38230  	if objc < 3 {
 38231  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 38232  		return TCL_ERROR
 38233  	}
 38234  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 38235  		return TCL_ERROR
 38236  	}
 38237  	for j = 2; j < objc; j++ {
 38238  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 38239  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38240  			FzExtName uintptr
 38241  			FpInit    uintptr
 38242  		}{}))); i++ {
 38243  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 38244  				break
 38245  			}
 38246  		}
 38247  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 38248  			FzExtName uintptr
 38249  			FpInit    uintptr
 38250  		}{}))) {
 38251  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 38252  			return TCL_ERROR
 38253  		}
 38254  		if aExtension[i].FpInit != 0 {
 38255  			rc = (*struct {
 38256  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 38257  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 38258  		} else {
 38259  			rc = SQLITE_OK
 38260  		}
 38261  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 38262  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 72)),
 38263  				uintptr(0)))
 38264  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38265  			return TCL_ERROR
 38266  		}
 38267  	}
 38268  	return TCL_OK
 38269  }
 38270  
 38271  var aExtension = [22]struct {
 38272  	FzExtName uintptr
 38273  	FpInit    uintptr
 38274  }{
 38275  	{FzExtName: ts + 18912, FpInit: 0},
 38276  	{FzExtName: ts + 18919, FpInit: 0},
 38277  	{FzExtName: ts + 4060, FpInit: 0},
 38278  	{FzExtName: ts + 18929, FpInit: 0},
 38279  	{FzExtName: ts + 4815, FpInit: 0},
 38280  	{FzExtName: ts + 4838, FpInit: 0},
 38281  	{FzExtName: ts + 4896, FpInit: 0},
 38282  	{FzExtName: ts + 4974, FpInit: 0},
 38283  	{FzExtName: ts + 18937, FpInit: 0},
 38284  	{FzExtName: ts + 5483, FpInit: 0},
 38285  	{FzExtName: ts + 5507, FpInit: 0},
 38286  	{FzExtName: ts + 18944, FpInit: 0},
 38287  	{FzExtName: ts + 6087, FpInit: 0},
 38288  	{FzExtName: ts + 6162, FpInit: 0},
 38289  	{FzExtName: ts + 6535, FpInit: 0},
 38290  	{FzExtName: ts + 6831, FpInit: 0},
 38291  	{FzExtName: ts + 6846, FpInit: 0},
 38292  	{FzExtName: ts + 18953, FpInit: 0},
 38293  	{FzExtName: ts + 18960, FpInit: 0},
 38294  	{FzExtName: ts + 18969, FpInit: 0},
 38295  	{FzExtName: ts + 8921, FpInit: 0},
 38296  	{FzExtName: ts + 9463, FpInit: 0},
 38297  }
 38298  
 38299  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38300  	bp := tls.Alloc(4)
 38301  	defer tls.Free(4)
 38302  
 38303  	if objc != 2 {
 38304  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 38305  		return TCL_ERROR
 38306  	}
 38307  
 38308  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38309  		return TCL_ERROR
 38310  	}
 38311  
 38312  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 38313  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 38314  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 38315  		}
 38316  	} else {
 38317  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 38318  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 38319  		}
 38320  	}
 38321  
 38322  	tcl.XTcl_ResetResult(tls, interp)
 38323  	return TCL_OK
 38324  }
 38325  
 38326  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38327  	bp := tls.Alloc(80)
 38328  	defer tls.Free(80)
 38329  
 38330  	var zSql1 uintptr
 38331  	var zSql2 uintptr
 38332  
 38333  	var iStep int32
 38334  	var iCksum1 uint32
 38335  	var iCksum2 uint32
 38336  	var rc int32
 38337  	var iB int32
 38338  
 38339  	var a int32
 38340  	var a1 int32
 38341  	iCksum1 = uint32(0)
 38342  	iCksum2 = uint32(0)
 38343  
 38344  	if !(objc != 5) {
 38345  		goto __1
 38346  	}
 38347  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 38348  	return TCL_ERROR
 38349  __1:
 38350  	;
 38351  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 38352  		goto __2
 38353  	}
 38354  	return TCL_ERROR
 38355  __2:
 38356  	;
 38357  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38358  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 38359  		goto __3
 38360  	}
 38361  	return TCL_ERROR
 38362  __3:
 38363  	;
 38364  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 38365  
 38366  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 38367  	if !(rc != SQLITE_OK) {
 38368  		goto __4
 38369  	}
 38370  	goto sql_error
 38371  __4:
 38372  	;
 38373  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 38374  	iStep = 0
 38375  __5:
 38376  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38377  		goto __7
 38378  	}
 38379  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38380  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 38381  		goto __8
 38382  	}
 38383  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 38384  	return TCL_ERROR
 38385  __8:
 38386  	;
 38387  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 38388  	goto __6
 38389  __6:
 38390  	iStep++
 38391  	goto __5
 38392  	goto __7
 38393  __7:
 38394  	;
 38395  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38396  	if !(rc != SQLITE_OK) {
 38397  		goto __9
 38398  	}
 38399  	goto sql_error
 38400  __9:
 38401  	;
 38402  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 38403  	if !(rc != SQLITE_OK) {
 38404  		goto __10
 38405  	}
 38406  	goto sql_error
 38407  __10:
 38408  	;
 38409  	iStep = 0
 38410  __11:
 38411  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 38412  		goto __13
 38413  	}
 38414  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 38415  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 38416  	goto __12
 38417  __12:
 38418  	iStep++
 38419  	goto __11
 38420  	goto __13
 38421  __13:
 38422  	;
 38423  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 38424  	if !(rc != SQLITE_OK) {
 38425  		goto __14
 38426  	}
 38427  	goto sql_error
 38428  __14:
 38429  	;
 38430  	if !(iCksum1 != iCksum2) {
 38431  		goto __15
 38432  	}
 38433  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 38434  	return TCL_ERROR
 38435  __15:
 38436  	;
 38437  	return TCL_OK
 38438  sql_error:
 38439  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 38440  	return TCL_ERROR
 38441  }
 38442  
 38443  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38444  	bp := tls.Alloc(44)
 38445  	defer tls.Free(44)
 38446  
 38447  	var xyz int32
 38448  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 38449  	var j int32
 38450  
 38451  	var a uintptr
 38452  	if objc != 2 {
 38453  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 38454  		return TCL_ERROR
 38455  	}
 38456  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 38457  		return TCL_ERROR
 38458  	}
 38459  	switch *(*int32)(unsafe.Pointer(bp)) {
 38460  	case 1:
 38461  		{
 38462  			xyz = 0x7fffff00 - i
 38463  			xyz = xyz + 0x100
 38464  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 38465  			break
 38466  
 38467  		}
 38468  	case 2:
 38469  		{
 38470  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 38471  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 38472  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 38473  			}
 38474  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 38475  			break
 38476  
 38477  		}
 38478  	case 3:
 38479  		{
 38480  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 38481  			for j = 0; j < 10; j++ {
 38482  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 38483  			}
 38484  			libc.Xfree(tls, a)
 38485  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 38486  			break
 38487  
 38488  		}
 38489  	case 4:
 38490  		{
 38491  			tcl.XTcl_Panic(tls, ts+19049, 0)
 38492  			break
 38493  
 38494  		}
 38495  	}
 38496  	return TCL_OK
 38497  }
 38498  
 38499  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38500  	bp := tls.Alloc(64)
 38501  	defer tls.Free(64)
 38502  
 38503  	var zDb uintptr
 38504  
 38505  	if objc != 2 {
 38506  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38507  		return TCL_ERROR
 38508  	}
 38509  
 38510  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38511  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 38512  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 38513  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 38514  	}
 38515  	return TCL_OK
 38516  }
 38517  
 38518  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38519  	bp := tls.Alloc(28)
 38520  	defer tls.Free(28)
 38521  
 38522  	var i int32
 38523  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 38524  	var zSetting uintptr
 38525  
 38526  	if objc != 4 && objc != 3 {
 38527  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 38528  		return TCL_ERROR
 38529  	}
 38530  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 38531  		return TCL_ERROR
 38532  	}
 38533  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38534  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 38535  		zSetting += uintptr(7)
 38536  	}
 38537  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 38538  		zSetting += uintptr(9)
 38539  	}
 38540  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 38541  		zSetting += uintptr(7)
 38542  	}
 38543  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 38544  		FzName       uintptr
 38545  		FeVal        int32
 38546  		F__ccgo_pad1 [4]byte
 38547  	}{}))); i++ {
 38548  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 38549  			break
 38550  		}
 38551  	}
 38552  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 38553  		FzName       uintptr
 38554  		FeVal        int32
 38555  		F__ccgo_pad1 [4]byte
 38556  	}{}))) {
 38557  		tcl.XTcl_SetObjResult(tls, interp,
 38558  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 38559  		return TCL_ERROR
 38560  	}
 38561  	if objc == 4 {
 38562  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 38563  			return TCL_ERROR
 38564  		}
 38565  	} else {
 38566  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 38567  	}
 38568  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 38569  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 38570  	return TCL_OK
 38571  }
 38572  
 38573  var aSetting = [14]struct {
 38574  	FzName       uintptr
 38575  	FeVal        int32
 38576  	F__ccgo_pad1 [4]byte
 38577  }{
 38578  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 38579  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 38580  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 38581  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 38582  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 38583  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 38584  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 38585  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 38586  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 38587  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 38588  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 38589  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 38590  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 38591  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 38592  }
 38593  
 38594  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38595  	bp := tls.Alloc(8)
 38596  	defer tls.Free(8)
 38597  
 38598  	var zSchema uintptr
 38599  	var iTxn int32
 38600  
 38601  	if objc != 2 && objc != 3 {
 38602  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 38603  		return TCL_ERROR
 38604  	}
 38605  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38606  		return TCL_ERROR
 38607  	}
 38608  	if objc == 3 {
 38609  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38610  	} else {
 38611  		zSchema = uintptr(0)
 38612  	}
 38613  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 38614  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 38615  	return TCL_OK
 38616  }
 38617  
 38618  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38619  	bp := tls.Alloc(16)
 38620  	defer tls.Free(16)
 38621  
 38622  	var rc int32
 38623  
 38624  	if objc != 2 {
 38625  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38626  		return TCL_ERROR
 38627  	} else {
 38628  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 38629  			return TCL_ERROR
 38630  		}
 38631  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 38632  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38633  		return TCL_OK
 38634  	}
 38635  	return int32(0)
 38636  }
 38637  
 38638  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38639  	bp := tls.Alloc(8)
 38640  	defer tls.Free(8)
 38641  
 38642  	if objc != 2 && objc != 3 {
 38643  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 38644  		return TCL_ERROR
 38645  	} else {
 38646  		var rc int32
 38647  
 38648  		var zDb uintptr = uintptr(0)
 38649  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38650  			return TCL_ERROR
 38651  		}
 38652  		if objc == 3 {
 38653  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38654  		}
 38655  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38656  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 38657  		return TCL_OK
 38658  	}
 38659  	return int32(0)
 38660  }
 38661  
 38662  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38663  	bp := tls.Alloc(32)
 38664  	defer tls.Free(32)
 38665  
 38666  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 38667  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 38668  	var aData uintptr = uintptr(0)
 38669  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 38670  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 38671  	var rc int32
 38672  
 38673  	if objc != 4 {
 38674  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 38675  		return TCL_ERROR
 38676  	}
 38677  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38678  		return TCL_ERROR
 38679  	}
 38680  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38681  		return TCL_ERROR
 38682  	}
 38683  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 38684  
 38685  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 38686  	rc = (*struct {
 38687  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 38688  	})(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)))
 38689  
 38690  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38691  	return TCL_OK
 38692  }
 38693  
 38694  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38695  	if objc != 1 {
 38696  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38697  		return TCL_ERROR
 38698  	} else {
 38699  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 38700  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38701  	}
 38702  	return TCL_OK
 38703  }
 38704  
 38705  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38706  	if objc != 1 {
 38707  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38708  		return TCL_ERROR
 38709  	} else {
 38710  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 38711  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38712  	}
 38713  	return TCL_OK
 38714  }
 38715  
 38716  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38717  	bp := tls.Alloc(296)
 38718  	defer tls.Free(296)
 38719  
 38720  	var zIn uintptr = uintptr(0)
 38721  	var a uintptr = uintptr(0)
 38722  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 38723  	var lineno int32 = 0
 38724  	var i int32
 38725  	var iNext int32
 38726  	var iOffset int32 = 0
 38727  
 38728  	var rc int32
 38729  
 38730  	if objc != 2 {
 38731  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 38732  		return TCL_ERROR
 38733  	}
 38734  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38735  	for i = 0; *(*int8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 38736  		lineno++
 38737  		for iNext = i; *(*int8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 38738  		}
 38739  		if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 38740  			iNext++
 38741  		}
 38742  		for int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 38743  			i++
 38744  		}
 38745  		if a == uintptr(0) {
 38746  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 38747  			if rc != 2 {
 38748  				continue
 38749  			}
 38750  			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 {
 38751  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 38752  				return TCL_ERROR
 38753  			}
 38754  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 38755  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 38756  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 38757  				return TCL_ERROR
 38758  			}
 38759  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38760  			if a == uintptr(0) {
 38761  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 38762  				return TCL_ERROR
 38763  			}
 38764  			libc.Xmemset(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38765  			continue
 38766  		}
 38767  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 38768  		if rc == 2 {
 38769  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 38770  			continue
 38771  		}
 38772  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 38773  			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,
 38774  				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))
 38775  		if rc == 17 {
 38776  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 38777  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 38778  				var ii int32
 38779  				for ii = 0; ii < 16; ii++ {
 38780  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 38781  				}
 38782  			}
 38783  			continue
 38784  		}
 38785  	}
 38786  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 38787  	libc.Xfree(tls, a)
 38788  	return TCL_OK
 38789  }
 38790  
 38791  type AutovacPageData1 = struct {
 38792  	Finterp  uintptr
 38793  	FzScript uintptr
 38794  }
 38795  
 38796  type AutovacPageData = AutovacPageData1
 38797  
 38798  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 38799  	bp := tls.Alloc(344)
 38800  	defer tls.Free(344)
 38801  
 38802  	var pData uintptr = pClientData
 38803  
 38804  	tcl.XTcl_DStringInit(tls, bp+24)
 38805  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 38806  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 38807  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 38808  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38809  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 38810  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38811  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 38812  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38813  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 38814  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 38815  	tcl.XTcl_DStringFree(tls, bp+24)
 38816  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 38817  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 38818  	return *(*uint32)(unsafe.Pointer(bp + 340))
 38819  }
 38820  
 38821  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38822  	bp := tls.Alloc(1048)
 38823  	defer tls.Free(1048)
 38824  
 38825  	var pData uintptr
 38826  
 38827  	var rc int32
 38828  	var zScript uintptr
 38829  	if objc != 2 && objc != 3 {
 38830  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 38831  		return TCL_ERROR
 38832  	}
 38833  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 38834  		return TCL_ERROR
 38835  	}
 38836  	if objc == 3 {
 38837  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38838  	} else {
 38839  		zScript = uintptr(0)
 38840  	}
 38841  	if zScript != 0 {
 38842  		var nScript size_t = libc.Xstrlen(tls, zScript)
 38843  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 38844  		if pData == uintptr(0) {
 38845  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 38846  			return TCL_ERROR
 38847  		}
 38848  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 38849  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 38850  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1))
 38851  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 38852  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 38853  		}{test_autovacuum_pages_callback})),
 38854  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 38855  	} else {
 38856  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 38857  	}
 38858  	if rc != 0 {
 38859  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+48,
 38860  			ts+19513, libc.VaList(bp+16, rc))
 38861  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 38862  		return TCL_ERROR
 38863  	}
 38864  	return TCL_OK
 38865  }
 38866  
 38867  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 38868  	var i int32
 38869  
 38870  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 38871  		FzName uintptr
 38872  		FxProc uintptr
 38873  	}{})); i++ {
 38874  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 38875  	}
 38876  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 38877  		FzName      uintptr
 38878  		FxProc      uintptr
 38879  		FclientData uintptr
 38880  	}{})); i++ {
 38881  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 38882  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 38883  	}
 38884  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 38885  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 38886  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 38887  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 38888  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 38889  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 38890  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 38891  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 38892  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 38893  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 38894  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 38895  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 38896  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 38897  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 38898  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 38899  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 38900  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 38901  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 38902  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 38903  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 38904  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 38905  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 38906  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 38907  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 38908  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 38909  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 38910  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 38911  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38912  	{
 38913  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 38914  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38915  
 38916  	}
 38917  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 38918  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 38919  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 38920  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 38921  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 38922  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 38923  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 38924  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 38925  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 38926  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 38927  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 38928  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38929  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 38930  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38931  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 38932  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 38933  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 38934  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 38935  	return TCL_OK
 38936  }
 38937  
 38938  var iZero int32 = 0
 38939  var aCmd1 = [39]struct {
 38940  	FzName uintptr
 38941  	FxProc uintptr
 38942  }{
 38943  	{FzName: ts + 20074, FxProc: 0},
 38944  	{FzName: ts + 20083, FxProc: 0},
 38945  	{FzName: ts + 20092, FxProc: 0},
 38946  	{FzName: ts + 20112, FxProc: 0},
 38947  	{FzName: ts + 20134, FxProc: 0},
 38948  	{FzName: ts + 20155, FxProc: 0},
 38949  	{FzName: ts + 20175, FxProc: 0},
 38950  	{FzName: ts + 20196, FxProc: 0},
 38951  	{FzName: ts + 20220, FxProc: 0},
 38952  	{FzName: ts + 20243, FxProc: 0},
 38953  	{FzName: ts + 20266, FxProc: 0},
 38954  	{FzName: ts + 20292, FxProc: 0},
 38955  	{FzName: ts + 20315, FxProc: 0},
 38956  	{FzName: ts + 20338, FxProc: 0},
 38957  	{FzName: ts + 20359, FxProc: 0},
 38958  	{FzName: ts + 20385, FxProc: 0},
 38959  	{FzName: ts + 20405, FxProc: 0},
 38960  	{FzName: ts + 20422, FxProc: 0},
 38961  	{FzName: ts + 20435, FxProc: 0},
 38962  	{FzName: ts + 20451, FxProc: 0},
 38963  	{FzName: ts + 20476, FxProc: 0},
 38964  	{FzName: ts + 20490, FxProc: 0},
 38965  	{FzName: ts + 20507, FxProc: 0},
 38966  	{FzName: ts + 20531, FxProc: 0},
 38967  	{FzName: ts + 20556, FxProc: 0},
 38968  	{FzName: ts + 20577, FxProc: 0},
 38969  	{FzName: ts + 20607, FxProc: 0},
 38970  	{FzName: ts + 20620, FxProc: 0},
 38971  	{FzName: ts + 20632, FxProc: 0},
 38972  	{FzName: ts + 20643, FxProc: 0},
 38973  	{FzName: ts + 20655, FxProc: 0},
 38974  	{FzName: ts + 20669, FxProc: 0},
 38975  	{FzName: ts + 20687, FxProc: 0},
 38976  	{FzName: ts + 20710, FxProc: 0},
 38977  	{FzName: ts + 20734, FxProc: 0},
 38978  	{FzName: ts + 20757, FxProc: 0},
 38979  	{FzName: ts + 20778, FxProc: 0},
 38980  	{FzName: ts + 20785, FxProc: 0},
 38981  	{FzName: ts + 20800, FxProc: 0},
 38982  }
 38983  var aObjCmd1 = [165]struct {
 38984  	FzName      uintptr
 38985  	FxProc      uintptr
 38986  	FclientData uintptr
 38987  }{
 38988  	{FzName: ts + 20823, FxProc: 0},
 38989  	{FzName: ts + 20841, FxProc: 0},
 38990  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 38991  	{FzName: ts + 20872, FxProc: 0},
 38992  	{FzName: ts + 20893, FxProc: 0},
 38993  	{FzName: ts + 20920, FxProc: 0},
 38994  	{FzName: ts + 20934, FxProc: 0},
 38995  	{FzName: ts + 20950, FxProc: 0},
 38996  	{FzName: ts + 20967, FxProc: 0},
 38997  	{FzName: ts + 20982, FxProc: 0},
 38998  	{FzName: ts + 20999, FxProc: 0},
 38999  	{FzName: ts + 21021, FxProc: 0},
 39000  	{FzName: ts + 21045, FxProc: 0},
 39001  	{FzName: ts + 21064, FxProc: 0},
 39002  	{FzName: ts + 21084, FxProc: 0},
 39003  	{FzName: ts + 21102, FxProc: 0},
 39004  	{FzName: ts + 21120, FxProc: 0},
 39005  	{FzName: ts + 21140, FxProc: 0},
 39006  	{FzName: ts + 21158, FxProc: 0},
 39007  	{FzName: ts + 21189, FxProc: 0},
 39008  	{FzName: ts + 21223, FxProc: 0},
 39009  	{FzName: ts + 21243, FxProc: 0},
 39010  	{FzName: ts + 21272, FxProc: 0},
 39011  	{FzName: ts + 21300, FxProc: 0},
 39012  	{FzName: ts + 21329, FxProc: 0},
 39013  	{FzName: ts + 21352, FxProc: 0},
 39014  	{FzName: ts + 21366, FxProc: 0},
 39015  	{FzName: ts + 21382, FxProc: 0},
 39016  	{FzName: ts + 21407, FxProc: 0},
 39017  	{FzName: ts + 21422, FxProc: 0},
 39018  	{FzName: ts + 21443, FxProc: 0},
 39019  	{FzName: ts + 21460, FxProc: 0},
 39020  	{FzName: ts + 21473, FxProc: 0},
 39021  	{FzName: ts + 21488, FxProc: 0},
 39022  	{FzName: ts + 21504, FxProc: 0},
 39023  	{FzName: ts + 21523, FxProc: 0},
 39024  	{FzName: ts + 21541, FxProc: 0},
 39025  	{FzName: ts + 21557, FxProc: 0},
 39026  	{FzName: ts + 21575, FxProc: 0},
 39027  	{FzName: ts + 21594, FxProc: 0},
 39028  	{FzName: ts + 21613, FxProc: 0},
 39029  	{FzName: ts + 21637, FxProc: 0},
 39030  	{FzName: ts + 21658, FxProc: 0},
 39031  	{FzName: ts + 21675, FxProc: 0},
 39032  	{FzName: ts + 21695, FxProc: 0},
 39033  	{FzName: ts + 21709, FxProc: 0},
 39034  	{FzName: ts + 21725, FxProc: 0},
 39035  	{FzName: ts + 21751, FxProc: 0},
 39036  	{FzName: ts + 21767, FxProc: 0},
 39037  	{FzName: ts + 21780, FxProc: 0},
 39038  	{FzName: ts + 21792, FxProc: 0},
 39039  	{FzName: ts + 21813, FxProc: 0},
 39040  	{FzName: ts + 21831, FxProc: 0},
 39041  	{FzName: ts + 21853, FxProc: 0},
 39042  	{FzName: ts + 21876, FxProc: 0},
 39043  	{FzName: ts + 21894, FxProc: 0},
 39044  	{FzName: ts + 21912, FxProc: 0},
 39045  	{FzName: ts + 21935, FxProc: 0},
 39046  	{FzName: ts + 21961, FxProc: 0},
 39047  	{FzName: ts + 21983, FxProc: 0},
 39048  	{FzName: ts + 22004, FxProc: 0},
 39049  	{FzName: ts + 22024, FxProc: 0},
 39050  	{FzName: ts + 22044, FxProc: 0},
 39051  	{FzName: ts + 22068, FxProc: 0},
 39052  	{FzName: ts + 22094, FxProc: 0},
 39053  	{FzName: ts + 22120, FxProc: 0},
 39054  	{FzName: ts + 22143, FxProc: 0},
 39055  	{FzName: ts + 22167, FxProc: 0},
 39056  	{FzName: ts + 22190, FxProc: 0},
 39057  	{FzName: ts + 22220, FxProc: 0},
 39058  	{FzName: ts + 22250, FxProc: 0},
 39059  	{FzName: ts + 22264, FxProc: 0},
 39060  	{FzName: ts + 22292, FxProc: 0},
 39061  	{FzName: ts + 22308, FxProc: 0},
 39062  	{FzName: ts + 22327, FxProc: 0},
 39063  	{FzName: ts + 22344, FxProc: 0},
 39064  	{FzName: ts + 22354, FxProc: 0},
 39065  	{FzName: ts + 22374, FxProc: 0},
 39066  	{FzName: ts + 22397, FxProc: 0},
 39067  	{FzName: ts + 22421, FxProc: 0},
 39068  	{FzName: ts + 22442, FxProc: 0},
 39069  	{FzName: ts + 22454, FxProc: 0},
 39070  	{FzName: ts + 22475, FxProc: 0},
 39071  	{FzName: ts + 22494, FxProc: 0},
 39072  	{FzName: ts + 22514, FxProc: 0},
 39073  	{FzName: ts + 22534, FxProc: 0},
 39074  	{FzName: ts + 22556, FxProc: 0},
 39075  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 39076  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 39077  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 39078  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 39079  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 39080  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 39081  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 39082  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 39083  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 39084  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 39085  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 39086  	{FzName: ts + 22830, FxProc: 0},
 39087  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 39088  	{FzName: ts + 22886,
 39089  		FxProc: 0, FclientData: 0},
 39090  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 39091  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 39092  	{FzName: ts + 22974, FxProc: 0},
 39093  	{FzName: ts + 23002, FxProc: 0},
 39094  	{FzName: ts + 23025, FxProc: 0},
 39095  	{FzName: ts + 23043, FxProc: 0},
 39096  	{FzName: ts + 23059, FxProc: 0},
 39097  	{FzName: ts + 23077, FxProc: 0},
 39098  	{FzName: ts + 23096, FxProc: 0},
 39099  	{FzName: ts + 23115, FxProc: 0},
 39100  	{FzName: ts + 23133, FxProc: 0},
 39101  	{FzName: ts + 23161, FxProc: 0},
 39102  	{FzName: ts + 23189, FxProc: 0},
 39103  	{FzName: ts + 23217, FxProc: 0},
 39104  	{FzName: ts + 23244, FxProc: 0},
 39105  	{FzName: ts + 23270, FxProc: 0},
 39106  	{FzName: ts + 23295, FxProc: 0},
 39107  	{FzName: ts + 23328, FxProc: 0},
 39108  	{FzName: ts + 23349, FxProc: 0},
 39109  	{FzName: ts + 23375, FxProc: 0},
 39110  	{FzName: ts + 23401, FxProc: 0},
 39111  	{FzName: ts + 23430, FxProc: 0},
 39112  	{FzName: ts + 23447, FxProc: 0},
 39113  	{FzName: ts + 23474, FxProc: 0},
 39114  	{FzName: ts + 23491, FxProc: 0},
 39115  	{FzName: ts + 23515, FxProc: 0},
 39116  	{FzName: ts + 23533, FxProc: 0},
 39117  	{FzName: ts + 23559, FxProc: 0},
 39118  	{FzName: ts + 23579, FxProc: 0},
 39119  	{FzName: ts + 23597, FxProc: 0},
 39120  	{FzName: ts + 23625, FxProc: 0},
 39121  	{FzName: ts + 23653, FxProc: 0},
 39122  	{FzName: ts + 23679, FxProc: 0},
 39123  	{FzName: ts + 23709, FxProc: 0},
 39124  	{FzName: ts + 23729, FxProc: 0},
 39125  	{FzName: ts + 23742, FxProc: 0},
 39126  	{FzName: ts + 23764, FxProc: 0},
 39127  	{FzName: ts + 23787, FxProc: 0},
 39128  	{FzName: ts + 23813, FxProc: 0},
 39129  	{FzName: ts + 23840, FxProc: 0},
 39130  	{FzName: ts + 23857, FxProc: 0},
 39131  	{FzName: ts + 23882, FxProc: 0},
 39132  	{FzName: ts + 23903, FxProc: 0},
 39133  	{FzName: ts + 23913, FxProc: 0},
 39134  	{FzName: ts + 23935, FxProc: 0},
 39135  	{FzName: ts + 23956, FxProc: 0},
 39136  	{FzName: ts + 23981, FxProc: 0},
 39137  	{FzName: ts + 24004, FxProc: 0},
 39138  	{FzName: ts + 24025, FxProc: 0},
 39139  	{FzName: ts + 24047, FxProc: 0},
 39140  	{FzName: ts + 24069, FxProc: 0},
 39141  	{FzName: ts + 24090, FxProc: 0},
 39142  	{FzName: ts + 24115, FxProc: 0},
 39143  	{FzName: ts + 24141, FxProc: 0},
 39144  	{FzName: ts + 24168, FxProc: 0},
 39145  	{FzName: ts + 24194, FxProc: 0},
 39146  	{FzName: ts + 24218, FxProc: 0},
 39147  	{FzName: ts + 24237, FxProc: 0},
 39148  	{FzName: ts + 24255, FxProc: 0},
 39149  	{FzName: ts + 24280, FxProc: 0},
 39150  	{FzName: ts + 24305, FxProc: 0},
 39151  	{FzName: ts + 24318, FxProc: 0},
 39152  	{FzName: ts + 24332, FxProc: 0},
 39153  	{FzName: ts + 24358, FxProc: 0},
 39154  }
 39155  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 39156  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 39157  var query_plan uintptr = ts + 24386
 39158  
 39159  var test_pagesize int32 = 1024
 39160  
 39161  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 39162  	return
 39163  }
 39164  
 39165  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39166  	bp := tls.Alloc(192)
 39167  	defer tls.Free(192)
 39168  
 39169  	var rc int32
 39170  
 39171  	if argc != 3 {
 39172  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39173  			ts+24412, 0))
 39174  		return TCL_ERROR
 39175  	}
 39176  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39177  		return TCL_ERROR
 39178  	}
 39179  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 39180  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 39181  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 39182  	if rc != SQLITE_OK {
 39183  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39184  		return TCL_ERROR
 39185  	}
 39186  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39187  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 39188  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 39189  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39190  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 39191  	return TCL_OK
 39192  }
 39193  
 39194  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39195  	bp := tls.Alloc(48)
 39196  	defer tls.Free(48)
 39197  
 39198  	var pPager uintptr
 39199  	var rc int32
 39200  	if argc != 2 {
 39201  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39202  			ts+24430, 0))
 39203  		return TCL_ERROR
 39204  	}
 39205  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39206  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 39207  	if rc != SQLITE_OK {
 39208  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39209  		return TCL_ERROR
 39210  	}
 39211  	return TCL_OK
 39212  }
 39213  
 39214  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39215  	bp := tls.Alloc(48)
 39216  	defer tls.Free(48)
 39217  
 39218  	var pPager uintptr
 39219  	var rc int32
 39220  	if argc != 2 {
 39221  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39222  			ts+24430, 0))
 39223  		return TCL_ERROR
 39224  	}
 39225  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39226  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 39227  	if rc != SQLITE_OK {
 39228  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39229  		return TCL_ERROR
 39230  	}
 39231  	return TCL_OK
 39232  }
 39233  
 39234  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39235  	bp := tls.Alloc(64)
 39236  	defer tls.Free(64)
 39237  
 39238  	var pPager uintptr
 39239  	var rc int32
 39240  	if argc != 2 {
 39241  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39242  			ts+24430, 0))
 39243  		return TCL_ERROR
 39244  	}
 39245  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39246  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 39247  	if rc != SQLITE_OK {
 39248  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39249  		return TCL_ERROR
 39250  	}
 39251  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 39252  	if rc != SQLITE_OK {
 39253  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39254  		return TCL_ERROR
 39255  	}
 39256  	return TCL_OK
 39257  }
 39258  
 39259  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39260  	bp := tls.Alloc(48)
 39261  	defer tls.Free(48)
 39262  
 39263  	var pPager uintptr
 39264  	var rc int32
 39265  	if argc != 2 {
 39266  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39267  			ts+24430, 0))
 39268  		return TCL_ERROR
 39269  	}
 39270  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39271  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 39272  	if rc != SQLITE_OK {
 39273  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39274  		return TCL_ERROR
 39275  	}
 39276  	return TCL_OK
 39277  }
 39278  
 39279  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39280  	bp := tls.Alloc(48)
 39281  	defer tls.Free(48)
 39282  
 39283  	var pPager uintptr
 39284  	var rc int32
 39285  	if argc != 2 {
 39286  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39287  			ts+24430, 0))
 39288  		return TCL_ERROR
 39289  	}
 39290  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39291  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 39292  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39293  	if rc != SQLITE_OK {
 39294  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39295  		return TCL_ERROR
 39296  	}
 39297  	return TCL_OK
 39298  }
 39299  
 39300  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39301  	bp := tls.Alloc(48)
 39302  	defer tls.Free(48)
 39303  
 39304  	var pPager uintptr
 39305  	var rc int32
 39306  	if argc != 2 {
 39307  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39308  			ts+24430, 0))
 39309  		return TCL_ERROR
 39310  	}
 39311  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39312  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39313  	if rc != SQLITE_OK {
 39314  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39315  		return TCL_ERROR
 39316  	}
 39317  	return TCL_OK
 39318  }
 39319  
 39320  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39321  	bp := tls.Alloc(140)
 39322  	defer tls.Free(140)
 39323  
 39324  	var pPager uintptr
 39325  	var i int32
 39326  	var a uintptr
 39327  	if argc != 2 {
 39328  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39329  			ts+24430, 0))
 39330  		return TCL_ERROR
 39331  	}
 39332  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39333  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 39334  	for i = 0; i < 9; i++ {
 39335  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 39336  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39337  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39338  	}
 39339  	return TCL_OK
 39340  }
 39341  
 39342  var zName = [9]uintptr{
 39343  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39344  	ts + 24448, ts + 24452, ts + 24457,
 39345  }
 39346  
 39347  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39348  	bp := tls.Alloc(160)
 39349  	defer tls.Free(160)
 39350  
 39351  	var pPager uintptr
 39352  
 39353  	if argc != 2 {
 39354  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39355  			ts+24430, 0))
 39356  		return TCL_ERROR
 39357  	}
 39358  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39359  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 39360  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 39361  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39362  	return TCL_OK
 39363  }
 39364  
 39365  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39366  	bp := tls.Alloc(188)
 39367  	defer tls.Free(188)
 39368  
 39369  	var pPager uintptr
 39370  
 39371  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 39372  
 39373  	var rc int32
 39374  	if argc != 3 {
 39375  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39376  			ts+24462, 0))
 39377  		return TCL_ERROR
 39378  	}
 39379  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39380  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39381  		return TCL_ERROR
 39382  	}
 39383  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 39384  	if rc == SQLITE_OK {
 39385  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 39386  	}
 39387  	if rc != SQLITE_OK {
 39388  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39389  		return TCL_ERROR
 39390  	}
 39391  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39392  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39393  	return TCL_OK
 39394  }
 39395  
 39396  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39397  	bp := tls.Alloc(160)
 39398  	defer tls.Free(160)
 39399  
 39400  	var pPager uintptr
 39401  
 39402  	var pPage uintptr
 39403  
 39404  	if argc != 3 {
 39405  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39406  			ts+24462, 0))
 39407  		return TCL_ERROR
 39408  	}
 39409  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39410  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 39411  		return TCL_ERROR
 39412  	}
 39413  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 39414  	if pPage != 0 {
 39415  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 39416  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39417  	}
 39418  	return TCL_OK
 39419  }
 39420  
 39421  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39422  	bp := tls.Alloc(36)
 39423  	defer tls.Free(36)
 39424  
 39425  	var pPager uintptr
 39426  
 39427  	if argc != 3 {
 39428  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39429  			ts+24462, 0))
 39430  		return TCL_ERROR
 39431  	}
 39432  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39433  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 39434  		return TCL_ERROR
 39435  	}
 39436  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 39437  	return TCL_OK
 39438  }
 39439  
 39440  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39441  	bp := tls.Alloc(32)
 39442  	defer tls.Free(32)
 39443  
 39444  	var pPage uintptr
 39445  	if argc != 2 {
 39446  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39447  			ts+24472, 0))
 39448  		return TCL_ERROR
 39449  	}
 39450  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39451  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 39452  	return TCL_OK
 39453  }
 39454  
 39455  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39456  	bp := tls.Alloc(148)
 39457  	defer tls.Free(148)
 39458  
 39459  	var pPage uintptr
 39460  	if argc != 2 {
 39461  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39462  			ts+24472, 0))
 39463  		return TCL_ERROR
 39464  	}
 39465  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39466  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]int8{})))
 39467  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 39468  	return TCL_OK
 39469  }
 39470  
 39471  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39472  	bp := tls.Alloc(156)
 39473  	defer tls.Free(156)
 39474  
 39475  	var pPage uintptr
 39476  	if argc != 2 {
 39477  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39478  			ts+24472, 0))
 39479  		return TCL_ERROR
 39480  	}
 39481  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39482  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 39483  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39484  	return TCL_OK
 39485  }
 39486  
 39487  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39488  	bp := tls.Alloc(48)
 39489  	defer tls.Free(48)
 39490  
 39491  	var pPage uintptr
 39492  	var pData uintptr
 39493  	var rc int32
 39494  	if argc != 3 {
 39495  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39496  			ts+24479, 0))
 39497  		return TCL_ERROR
 39498  	}
 39499  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39500  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 39501  	if rc != SQLITE_OK {
 39502  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39503  		return TCL_ERROR
 39504  	}
 39505  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 39506  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1))
 39507  	*(*int8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = int8(0)
 39508  	return TCL_OK
 39509  }
 39510  
 39511  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39512  	bp := tls.Alloc(96)
 39513  	defer tls.Free(96)
 39514  
 39515  	var pVfs uintptr
 39516  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 39517  	var rc int32
 39518  
 39519  	var offset i64
 39520  	var zFile uintptr
 39521  	var nFile int32
 39522  	if argc != 3 {
 39523  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39524  			ts+24491, 0))
 39525  		return TCL_ERROR
 39526  	}
 39527  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 39528  		return TCL_ERROR
 39529  	}
 39530  
 39531  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39532  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 39533  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 39534  	if zFile == uintptr(0) {
 39535  		return TCL_ERROR
 39536  	}
 39537  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1))
 39538  	*(*int8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = int8(0)
 39539  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 39540  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 39541  	if rc != 0 {
 39542  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39543  		sqlite3.Xsqlite3_free(tls, zFile)
 39544  		return TCL_ERROR
 39545  	}
 39546  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 39547  	offset = offset * int64(1024*1024)
 39548  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24524, 14, offset)
 39549  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 39550  	sqlite3.Xsqlite3_free(tls, zFile)
 39551  	if rc != 0 {
 39552  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39553  		return TCL_ERROR
 39554  	}
 39555  	return TCL_OK
 39556  }
 39557  
 39558  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39559  	bp := tls.Alloc(44)
 39560  	defer tls.Free(44)
 39561  
 39562  	var rc int32
 39563  	if argc != 2 {
 39564  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39565  			ts+24553, uintptr(0)))
 39566  		return TCL_ERROR
 39567  	}
 39568  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 39569  		return TCL_ERROR
 39570  	}
 39571  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 39572  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39573  	return TCL_OK
 39574  }
 39575  
 39576  var faultSimInterp uintptr = uintptr(0)
 39577  var faultSimScriptSize int32 = 0
 39578  var faultSimScript uintptr
 39579  
 39580  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 39581  	bp := tls.Alloc(38)
 39582  	defer tls.Free(38)
 39583  
 39584  	var i int32
 39585  	var isNeg int32
 39586  	var rc int32
 39587  	if x == 0 {
 39588  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2))
 39589  	} else {
 39590  		if x < 0 {
 39591  			isNeg = 1
 39592  			x = -x
 39593  		} else {
 39594  			isNeg = 0
 39595  		}
 39596  		*(*int8)(unsafe.Pointer(bp + 8 + 29)) = int8(0)
 39597  		i = int32(uint64(unsafe.Sizeof([30]int8{})) - uint64(2))
 39598  	__1:
 39599  		if !(i > 0 && x > 0) {
 39600  			goto __3
 39601  		}
 39602  		{
 39603  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8(x%10 + '0')
 39604  
 39605  		}
 39606  		goto __2
 39607  	__2:
 39608  		i--
 39609  		x = x / 10
 39610  		goto __1
 39611  		goto __3
 39612  	__3:
 39613  		;
 39614  		if isNeg != 0 {
 39615  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = int8('-')
 39616  		}
 39617  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]int8{}))-uint64(i))
 39618  	}
 39619  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 39620  	if rc != 0 {
 39621  		libc.Xfprintf(tls, libc.X__stderrp, ts+24568, libc.VaList(bp, faultSimScript))
 39622  		rc = SQLITE_ERROR
 39623  	} else {
 39624  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 39625  	}
 39626  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 39627  	return rc
 39628  }
 39629  
 39630  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39631  	bp := tls.Alloc(64)
 39632  	defer tls.Free(64)
 39633  
 39634  	var zScript uintptr
 39635  	var nScript int32
 39636  	var rc int32
 39637  	if argc != 1 && argc != 2 {
 39638  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39639  			ts+24604, uintptr(0)))
 39640  	}
 39641  	if argc == 2 {
 39642  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 39643  	} else {
 39644  		zScript = ts + 584
 39645  	}
 39646  	nScript = int32(libc.Xstrlen(tls, zScript))
 39647  	if faultSimScript != 0 {
 39648  		libc.Xfree(tls, faultSimScript)
 39649  		faultSimScript = uintptr(0)
 39650  	}
 39651  	if nScript == 0 {
 39652  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 39653  	} else {
 39654  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 39655  		if faultSimScript == uintptr(0) {
 39656  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 39657  			return SQLITE_ERROR
 39658  		}
 39659  		libc.Xmemcpy(tls, faultSimScript, zScript, uint64(nScript))
 39660  		*(*int8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = int8(' ')
 39661  		faultSimScriptSize = nScript + 1
 39662  		faultSimInterp = interp
 39663  		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}))))
 39664  	}
 39665  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39666  	return SQLITE_OK
 39667  }
 39668  
 39669  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39670  	bp := tls.Alloc(452)
 39671  	defer tls.Free(452)
 39672  
 39673  	var rc int32
 39674  	var nProg int32 = 0
 39675  
 39676  	var z uintptr
 39677  	if argc != 3 {
 39678  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39679  			ts+24613, uintptr(0)))
 39680  	}
 39681  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 39682  		return TCL_ERROR
 39683  	}
 39684  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 39685  	for nProg < 99 && *(*int8)(unsafe.Pointer(z)) != 0 {
 39686  		for *(*int8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0) {
 39687  			z++
 39688  		}
 39689  		if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 39690  			break
 39691  		}
 39692  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 39693  		for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 39694  			z++
 39695  		}
 39696  	}
 39697  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 39698  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 39699  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39700  	return TCL_OK
 39701  }
 39702  
 39703  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 39704  	var i int32
 39705  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 39706  		FzName uintptr
 39707  		FxProc uintptr
 39708  	}{})); i++ {
 39709  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 39710  	}
 39711  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 39712  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 39713  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 39714  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 39715  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 39716  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 39717  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 39718  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 39719  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 39720  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 39721  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 39722  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 39723  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 39724  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39725  	return TCL_OK
 39726  }
 39727  
 39728  var aCmd2 = [20]struct {
 39729  	FzName uintptr
 39730  	FxProc uintptr
 39731  }{
 39732  	{FzName: ts + 24780, FxProc: 0},
 39733  	{FzName: ts + 24791, FxProc: 0},
 39734  	{FzName: ts + 24803, FxProc: 0},
 39735  	{FzName: ts + 24816, FxProc: 0},
 39736  	{FzName: ts + 24831, FxProc: 0},
 39737  	{FzName: ts + 24848, FxProc: 0},
 39738  	{FzName: ts + 24866, FxProc: 0},
 39739  	{FzName: ts + 24886, FxProc: 0},
 39740  	{FzName: ts + 24898, FxProc: 0},
 39741  	{FzName: ts + 24914, FxProc: 0},
 39742  	{FzName: ts + 24923, FxProc: 0},
 39743  	{FzName: ts + 24935, FxProc: 0},
 39744  	{FzName: ts + 24946, FxProc: 0},
 39745  	{FzName: ts + 24956, FxProc: 0},
 39746  	{FzName: ts + 24967, FxProc: 0},
 39747  	{FzName: ts + 24979, FxProc: 0},
 39748  	{FzName: ts + 24994, FxProc: 0},
 39749  	{FzName: ts + 25008, FxProc: 0},
 39750  	{FzName: ts + 25033, FxProc: 0},
 39751  	{FzName: ts + 25067, FxProc: 0},
 39752  }
 39753  
 39754  type Btree = Btree1
 39755  type BtCursor = BtCursor1
 39756  type BtShared = BtShared1
 39757  
 39758  type MemPage1 = struct {
 39759  	FisInit          u8
 39760  	FintKey          u8
 39761  	FintKeyLeaf      u8
 39762  	F__ccgo_pad1     [1]byte
 39763  	Fpgno            Pgno
 39764  	Fleaf            u8
 39765  	FhdrOffset       u8
 39766  	FchildPtrSize    u8
 39767  	Fmax1bytePayload u8
 39768  	FnOverflow       u8
 39769  	F__ccgo_pad2     [1]byte
 39770  	FmaxLocal        u16
 39771  	FminLocal        u16
 39772  	FcellOffset      u16
 39773  	FnFree           int32
 39774  	FnCell           u16
 39775  	FmaskPage        u16
 39776  	FaiOvfl          [4]u16
 39777  	F__ccgo_pad3     [4]byte
 39778  	FapOvfl          [4]uintptr
 39779  	FpBt             uintptr
 39780  	FaData           uintptr
 39781  	FaDataEnd        uintptr
 39782  	FaCellIdx        uintptr
 39783  	FaDataOfst       uintptr
 39784  	FpDbPage         uintptr
 39785  	FxCellSize       uintptr
 39786  	FxParseCell      uintptr
 39787  }
 39788  
 39789  type MemPage = MemPage1
 39790  type BtLock1 = struct {
 39791  	FpBtree      uintptr
 39792  	FiTable      Pgno
 39793  	FeLock       u8
 39794  	F__ccgo_pad1 [3]byte
 39795  	FpNext       uintptr
 39796  }
 39797  
 39798  type BtLock = BtLock1
 39799  type CellInfo1 = struct {
 39800  	FnKey     i64
 39801  	FpPayload uintptr
 39802  	FnPayload u32
 39803  	FnLocal   u16
 39804  	FnSize    u16
 39805  }
 39806  
 39807  type CellInfo = CellInfo1
 39808  
 39809  type IntegrityCk1 = struct {
 39810  	FpBt       uintptr
 39811  	FpPager    uintptr
 39812  	FaPgRef    uintptr
 39813  	FnPage     Pgno
 39814  	FmxErr     int32
 39815  	FnErr      int32
 39816  	FbOomFault int32
 39817  	FzPfx      uintptr
 39818  	Fv1        Pgno
 39819  	Fv2        int32
 39820  	FerrMsg    StrAccum
 39821  	Fheap      uintptr
 39822  	Fdb        uintptr
 39823  }
 39824  
 39825  type IntegrityCk = IntegrityCk1
 39826  
 39827  var sDb sqlite31
 39828  var nRefSqlite3 int32 = 0
 39829  
 39830  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39831  	bp := tls.Alloc(188)
 39832  	defer tls.Free(188)
 39833  
 39834  	var rc int32
 39835  
 39836  	var n int32
 39837  	var zFilename uintptr
 39838  	if argc != 3 {
 39839  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39840  			ts+25102, 0))
 39841  		return TCL_ERROR
 39842  	}
 39843  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39844  		return TCL_ERROR
 39845  	}
 39846  	nRefSqlite3++
 39847  	if nRefSqlite3 == 1 {
 39848  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39849  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 39850  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 39851  	}
 39852  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 39853  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 39854  	if zFilename == uintptr(0) {
 39855  		return TCL_ERROR
 39856  	}
 39857  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1))
 39858  	*(*int8)(unsafe.Pointer(zFilename + uintptr(n+1))) = int8(0)
 39859  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 39860  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 39861  	sqlite3.Xsqlite3_free(tls, zFilename)
 39862  	if rc != SQLITE_OK {
 39863  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39864  		return TCL_ERROR
 39865  	}
 39866  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39867  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39868  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39869  	return TCL_OK
 39870  }
 39871  
 39872  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39873  	bp := tls.Alloc(48)
 39874  	defer tls.Free(48)
 39875  
 39876  	var pBt uintptr
 39877  	var rc int32
 39878  	if argc != 2 {
 39879  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39880  			ts+24430, 0))
 39881  		return TCL_ERROR
 39882  	}
 39883  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39884  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 39885  	if rc != SQLITE_OK {
 39886  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39887  		return TCL_ERROR
 39888  	}
 39889  	nRefSqlite3--
 39890  	if nRefSqlite3 == 0 {
 39891  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 39892  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 39893  		sDb.Fmutex = uintptr(0)
 39894  		sDb.FpVfs = uintptr(0)
 39895  	}
 39896  	return TCL_OK
 39897  }
 39898  
 39899  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39900  	bp := tls.Alloc(48)
 39901  	defer tls.Free(48)
 39902  
 39903  	var pBt uintptr
 39904  	var rc int32
 39905  	if argc != 2 {
 39906  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39907  			ts+24430, 0))
 39908  		return TCL_ERROR
 39909  	}
 39910  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39911  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39912  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 39913  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39914  	if rc != SQLITE_OK {
 39915  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39916  		return TCL_ERROR
 39917  	}
 39918  	return TCL_OK
 39919  }
 39920  
 39921  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39922  	bp := tls.Alloc(140)
 39923  	defer tls.Free(140)
 39924  
 39925  	var pBt uintptr
 39926  	var i int32
 39927  	var a uintptr
 39928  
 39929  	if argc != 2 {
 39930  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39931  			ts+24430, 0))
 39932  		return TCL_ERROR
 39933  	}
 39934  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39935  
 39936  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39937  
 39938  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39939  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 39940  	for i = 0; i < 11; i++ {
 39941  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 39942  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39943  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39944  	}
 39945  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39946  
 39947  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39948  	return TCL_OK
 39949  }
 39950  
 39951  var zName1 = [11]uintptr{
 39952  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39953  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 39954  }
 39955  
 39956  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39957  	bp := tls.Alloc(110)
 39958  	defer tls.Free(110)
 39959  
 39960  	var pBt uintptr
 39961  
 39962  	var pCur uintptr
 39963  	var rc int32 = SQLITE_OK
 39964  
 39965  	if argc != 4 {
 39966  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39967  			ts+25137, 0))
 39968  		return TCL_ERROR
 39969  	}
 39970  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39971  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39972  		return TCL_ERROR
 39973  	}
 39974  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 39975  		return TCL_ERROR
 39976  	}
 39977  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 39978  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 39979  	}
 39980  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39981  	libc.Xmemset(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39982  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39983  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39984  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 39985  	if rc == SQLITE_OK {
 39986  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 39987  	}
 39988  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39989  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39990  	if rc != 0 {
 39991  		tcl.XTcl_Free(tls, pCur)
 39992  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39993  		return TCL_ERROR
 39994  	}
 39995  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 39996  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 39997  	return SQLITE_OK
 39998  }
 39999  
 40000  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40001  	bp := tls.Alloc(48)
 40002  	defer tls.Free(48)
 40003  
 40004  	var pCur uintptr
 40005  	var rc int32
 40006  
 40007  	if argc != 2 {
 40008  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40009  			ts+24430, 0))
 40010  		return TCL_ERROR
 40011  	}
 40012  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40013  	{
 40014  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 40015  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40016  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40017  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 40018  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40019  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40020  
 40021  	}
 40022  	tcl.XTcl_Free(tls, pCur)
 40023  	if rc != 0 {
 40024  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40025  		return TCL_ERROR
 40026  	}
 40027  	return SQLITE_OK
 40028  }
 40029  
 40030  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40031  	bp := tls.Alloc(172)
 40032  	defer tls.Free(172)
 40033  
 40034  	var pCur uintptr
 40035  	var rc int32
 40036  	var res int32 = 0
 40037  
 40038  	if argc != 2 {
 40039  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40040  			ts+24430, 0))
 40041  		return TCL_ERROR
 40042  	}
 40043  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40044  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40045  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 40046  	if rc == SQLITE_DONE {
 40047  		res = 1
 40048  		rc = SQLITE_OK
 40049  	}
 40050  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40051  	if rc != 0 {
 40052  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40053  		return TCL_ERROR
 40054  	}
 40055  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 40056  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40057  	return SQLITE_OK
 40058  }
 40059  
 40060  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40061  	bp := tls.Alloc(176)
 40062  	defer tls.Free(176)
 40063  
 40064  	var pCur uintptr
 40065  	var rc int32
 40066  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 40067  
 40068  	if argc != 2 {
 40069  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40070  			ts+24430, 0))
 40071  		return TCL_ERROR
 40072  	}
 40073  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40074  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40075  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 40076  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40077  	if rc != 0 {
 40078  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40079  		return TCL_ERROR
 40080  	}
 40081  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 40082  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 40083  	return SQLITE_OK
 40084  }
 40085  
 40086  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40087  	bp := tls.Alloc(106)
 40088  	defer tls.Free(106)
 40089  
 40090  	var pCur uintptr
 40091  	var rc int32
 40092  
 40093  	if argc != 2 {
 40094  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40095  			ts+24430, 0))
 40096  		return TCL_ERROR
 40097  	}
 40098  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40099  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40100  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 40101  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40102  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 40103  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40104  	return SQLITE_OK
 40105  }
 40106  
 40107  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40108  	bp := tls.Alloc(106)
 40109  	defer tls.Free(106)
 40110  
 40111  	var pCur uintptr
 40112  	var n u32
 40113  
 40114  	if argc != 2 {
 40115  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40116  			ts+24430, 0))
 40117  		return TCL_ERROR
 40118  	}
 40119  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40120  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40121  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 40122  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40123  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 40124  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40125  	return SQLITE_OK
 40126  }
 40127  
 40128  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40129  	bp := tls.Alloc(516)
 40130  	defer tls.Free(516)
 40131  
 40132  	var in u64
 40133  
 40134  	var n1 int32
 40135  	var n2 int32
 40136  	var i int32
 40137  	var j int32
 40138  
 40139  	if argc != 5 {
 40140  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40141  			ts+25161, 0))
 40142  		return TCL_ERROR
 40143  	}
 40144  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 40145  		return TCL_ERROR
 40146  	}
 40147  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 40148  		return TCL_ERROR
 40149  	}
 40150  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 40151  		return TCL_ERROR
 40152  	}
 40153  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 40154  		return TCL_ERROR
 40155  	}
 40156  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 40157  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 40158  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 40159  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 40160  		if n1 > 9 || n1 < 1 {
 40161  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40162  				ts+25196, libc.VaList(bp+32, n1))
 40163  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 40164  			return TCL_ERROR
 40165  		}
 40166  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 40167  		if n1 != n2 {
 40168  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40169  				ts+25246, libc.VaList(bp+56, n1, n2))
 40170  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 40171  			return TCL_ERROR
 40172  		}
 40173  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40174  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40175  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40176  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 40177  			return TCL_ERROR
 40178  		}
 40179  		if in&uint64(0xffffffff) == in {
 40180  			n2 = int32(func() uint8 {
 40181  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 40182  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 40183  				}
 40184  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 40185  			}())
 40186  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 40187  			if n1 != n2 {
 40188  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40189  					ts+25333,
 40190  					libc.VaList(bp+120, n1, n2))
 40191  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 40192  				return TCL_ERROR
 40193  			}
 40194  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 40195  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40196  					ts+25383,
 40197  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 40198  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 40199  				return TCL_ERROR
 40200  			}
 40201  		}
 40202  
 40203  		for j = 0; j < 19; j++ {
 40204  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 40205  		}
 40206  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 40207  	}
 40208  	return TCL_OK
 40209  }
 40210  
 40211  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40212  	bp := tls.Alloc(236)
 40213  	defer tls.Free(236)
 40214  
 40215  	var db uintptr
 40216  	var pBt uintptr
 40217  	var iDb int32 = 0
 40218  
 40219  	if argc != 2 && argc != 3 {
 40220  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40221  			ts+25439, 0))
 40222  		return TCL_ERROR
 40223  	}
 40224  
 40225  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 40226  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 40227  		return TCL_ERROR
 40228  	}
 40229  	if argc == 3 {
 40230  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40231  	}
 40232  
 40233  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 40234  
 40235  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 40236  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 40237  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 40238  	return TCL_OK
 40239  }
 40240  
 40241  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40242  	bp := tls.Alloc(32)
 40243  	defer tls.Free(32)
 40244  
 40245  	var pBt uintptr
 40246  	var res int32
 40247  	var pFile uintptr
 40248  
 40249  	if argc != 2 {
 40250  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40251  			ts+24430, 0))
 40252  		return TCL_ERROR
 40253  	}
 40254  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40255  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40256  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40257  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40258  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 40259  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40260  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40261  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 40262  	return SQLITE_OK
 40263  }
 40264  
 40265  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40266  	bp := tls.Alloc(36)
 40267  	defer tls.Free(36)
 40268  
 40269  	var pBt uintptr
 40270  
 40271  	if argc != 3 {
 40272  		tcl.XTcl_AppendResult(tls,
 40273  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 40274  		return TCL_ERROR
 40275  	}
 40276  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40277  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 40278  		return TCL_ERROR
 40279  	}
 40280  
 40281  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40282  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40283  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 40284  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40285  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40286  	return TCL_OK
 40287  }
 40288  
 40289  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40290  	bp := tls.Alloc(68)
 40291  	defer tls.Free(68)
 40292  
 40293  	var pCur uintptr
 40294  
 40295  	if objc != 4 && objc != 3 {
 40296  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 40297  		return TCL_ERROR
 40298  	}
 40299  
 40300  	libc.Xmemset(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})))
 40301  	if objc == 4 {
 40302  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 40303  			return TCL_ERROR
 40304  		}
 40305  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40306  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 40307  	} else {
 40308  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 40309  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 40310  	}
 40311  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 40312  
 40313  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40314  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40315  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 40316  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40317  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40318  
 40319  	tcl.XTcl_ResetResult(tls, interp)
 40320  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 40321  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 40322  		return TCL_ERROR
 40323  	}
 40324  	return TCL_OK
 40325  }
 40326  
 40327  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 40328  	var i int32
 40329  
 40330  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 40331  		FzName uintptr
 40332  		FxProc uintptr
 40333  	}{})); i++ {
 40334  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 40335  	}
 40336  
 40337  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 40338  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 40339  	}{btree_insert})), uintptr(0), uintptr(0))
 40340  
 40341  	return TCL_OK
 40342  }
 40343  
 40344  var aCmd3 = [14]struct {
 40345  	FzName uintptr
 40346  	FxProc uintptr
 40347  }{
 40348  	{FzName: ts + 25525, FxProc: 0},
 40349  	{FzName: ts + 25536, FxProc: 0},
 40350  	{FzName: ts + 25548, FxProc: 0},
 40351  	{FzName: ts + 25572, FxProc: 0},
 40352  	{FzName: ts + 25590, FxProc: 0},
 40353  	{FzName: ts + 25603, FxProc: 0},
 40354  	{FzName: ts + 25622, FxProc: 0},
 40355  	{FzName: ts + 25633, FxProc: 0},
 40356  	{FzName: ts + 25643, FxProc: 0},
 40357  	{FzName: ts + 25662, FxProc: 0},
 40358  	{FzName: ts + 25674, FxProc: 0},
 40359  	{FzName: ts + 25692, FxProc: 0},
 40360  	{FzName: ts + 25706, FxProc: 0},
 40361  	{FzName: ts + 25720, FxProc: 0},
 40362  }
 40363  
 40364  type sched_param = struct{ Fsched_priority int32 }
 40365  
 40366  type _cpuset = struct{ F__bits [4]int64 }
 40367  
 40368  type cpuset_t = _cpuset
 40369  type cpu_set_t = _cpuset
 40370  
 40371  type _pthread_cleanup_info = struct{ Fpthread_cleanup_pad [8]uint64 }
 40372  
 40373  type Thread = struct {
 40374  	FzFilename   uintptr
 40375  	FxOp         uintptr
 40376  	FzArg        uintptr
 40377  	Fopnum       int32
 40378  	Fbusy        int32
 40379  	Fcompleted   int32
 40380  	F__ccgo_pad1 [4]byte
 40381  	Fdb          uintptr
 40382  	FpStmt       uintptr
 40383  	FzErr        uintptr
 40384  	FzStaticErr  uintptr
 40385  	Frc          int32
 40386  	Fargc        int32
 40387  	Fargv        [100]uintptr
 40388  	Fcolv        [100]uintptr
 40389  }
 40390  
 40391  var threadset [26]Thread
 40392  
 40393  func test_barrier(tls *libc.TLS) {
 40394  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 40395  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 40396  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 40397  }
 40398  
 40399  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 40400  	var p uintptr = pArg
 40401  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40402  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40403  	}
 40404  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 40405  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 40406  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 40407  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40408  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40409  	}
 40410  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40411  	test_barrier(tls)
 40412  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 40413  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40414  		libc.Xsched_yield(tls)
 40415  	}
 40416  	test_barrier(tls)
 40417  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 40418  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40419  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40420  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40421  		}
 40422  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 40423  		test_barrier(tls)
 40424  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40425  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40426  			libc.Xsched_yield(tls)
 40427  		}
 40428  		test_barrier(tls)
 40429  	}
 40430  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40431  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40432  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40433  	}
 40434  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40435  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40436  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40437  	}
 40438  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40439  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40440  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40441  	}
 40442  	test_barrier(tls)
 40443  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40444  	sqlite3.Xsqlite3_thread_cleanup(tls)
 40445  	return uintptr(0)
 40446  }
 40447  
 40448  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 40449  	bp := tls.Alloc(16)
 40450  	defer tls.Free(16)
 40451  
 40452  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(__sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg)))), uint64(X_CTYPE_U)) != 0) {
 40453  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 40454  		return -1
 40455  	}
 40456  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 40457  }
 40458  
 40459  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40460  	bp := tls.Alloc(96)
 40461  	defer tls.Free(96)
 40462  
 40463  	var i int32
 40464  
 40465  	var rc int32
 40466  
 40467  	if argc != 3 {
 40468  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40469  			ts+25780, 0))
 40470  		return TCL_ERROR
 40471  	}
 40472  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40473  	if i < 0 {
 40474  		return TCL_ERROR
 40475  	}
 40476  	if threadset[i].Fbusy != 0 {
 40477  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 40478  		return TCL_ERROR
 40479  	}
 40480  	threadset[i].Fbusy = 1
 40481  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40482  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40483  	threadset[i].Fopnum = 1
 40484  	threadset[i].Fcompleted = 0
 40485  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 40486  		f func(*libc.TLS, uintptr) uintptr
 40487  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40488  	if rc != 0 {
 40489  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 40490  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40491  		threadset[i].Fbusy = 0
 40492  		return TCL_ERROR
 40493  	}
 40494  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 40495  	return TCL_OK
 40496  }
 40497  
 40498  func test_thread_wait(tls *libc.TLS, p uintptr) {
 40499  	test_barrier(tls)
 40500  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40501  		libc.Xsched_yield(tls)
 40502  	}
 40503  	test_barrier(tls)
 40504  }
 40505  
 40506  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40507  	bp := tls.Alloc(48)
 40508  	defer tls.Free(48)
 40509  
 40510  	var i int32
 40511  
 40512  	if argc != 2 {
 40513  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40514  			ts+25849, 0))
 40515  		return TCL_ERROR
 40516  	}
 40517  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40518  	if i < 0 {
 40519  		return TCL_ERROR
 40520  	}
 40521  	if !(threadset[i].Fbusy != 0) {
 40522  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40523  		return TCL_ERROR
 40524  	}
 40525  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40526  	return TCL_OK
 40527  }
 40528  
 40529  func test_stop_thread(tls *libc.TLS, p uintptr) {
 40530  	test_thread_wait(tls, p)
 40531  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 40532  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 40533  	test_thread_wait(tls, p)
 40534  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 40535  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 40536  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 40537  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 40538  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 40539  }
 40540  
 40541  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40542  	bp := tls.Alloc(48)
 40543  	defer tls.Free(48)
 40544  
 40545  	var i int32
 40546  
 40547  	if argc != 2 {
 40548  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40549  			ts+25849, 0))
 40550  		return TCL_ERROR
 40551  	}
 40552  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 40553  		for i = 0; i < N_THREAD; i++ {
 40554  			if threadset[i].Fbusy != 0 {
 40555  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40556  			}
 40557  		}
 40558  	} else {
 40559  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40560  		if i < 0 {
 40561  			return TCL_ERROR
 40562  		}
 40563  		if !(threadset[i].Fbusy != 0) {
 40564  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40565  			return TCL_ERROR
 40566  		}
 40567  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40568  	}
 40569  	return TCL_OK
 40570  }
 40571  
 40572  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40573  	bp := tls.Alloc(172)
 40574  	defer tls.Free(172)
 40575  
 40576  	var i int32
 40577  
 40578  	if argc != 2 {
 40579  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40580  			ts+25849, 0))
 40581  		return TCL_ERROR
 40582  	}
 40583  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40584  	if i < 0 {
 40585  		return TCL_ERROR
 40586  	}
 40587  	if !(threadset[i].Fbusy != 0) {
 40588  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40589  		return TCL_ERROR
 40590  	}
 40591  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40592  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 40593  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40594  	return TCL_OK
 40595  }
 40596  
 40597  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40598  	bp := tls.Alloc(84)
 40599  	defer tls.Free(84)
 40600  
 40601  	var i int32
 40602  
 40603  	if argc != 3 {
 40604  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40605  			ts+25868, 0))
 40606  		return TCL_ERROR
 40607  	}
 40608  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40609  	if i < 0 {
 40610  		return TCL_ERROR
 40611  	}
 40612  	if !(threadset[i].Fbusy != 0) {
 40613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40614  		return TCL_ERROR
 40615  	}
 40616  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40617  		return TCL_ERROR
 40618  	}
 40619  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40620  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40621  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40622  		return TCL_ERROR
 40623  	}
 40624  	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))
 40625  	return TCL_OK
 40626  }
 40627  
 40628  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40629  	bp := tls.Alloc(84)
 40630  	defer tls.Free(84)
 40631  
 40632  	var i int32
 40633  
 40634  	if argc != 3 {
 40635  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40636  			ts+25868, 0))
 40637  		return TCL_ERROR
 40638  	}
 40639  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40640  	if i < 0 {
 40641  		return TCL_ERROR
 40642  	}
 40643  	if !(threadset[i].Fbusy != 0) {
 40644  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40645  		return TCL_ERROR
 40646  	}
 40647  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40648  		return TCL_ERROR
 40649  	}
 40650  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40651  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40652  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40653  		return TCL_ERROR
 40654  	}
 40655  	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))
 40656  	return TCL_OK
 40657  }
 40658  
 40659  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40660  	bp := tls.Alloc(64)
 40661  	defer tls.Free(64)
 40662  
 40663  	var i int32
 40664  	var zName uintptr
 40665  
 40666  	if argc != 2 {
 40667  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40668  			ts+25849, 0))
 40669  		return TCL_ERROR
 40670  	}
 40671  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40672  	if i < 0 {
 40673  		return TCL_ERROR
 40674  	}
 40675  	if !(threadset[i].Fbusy != 0) {
 40676  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40677  		return TCL_ERROR
 40678  	}
 40679  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40680  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 40681  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 40682  	return TCL_OK
 40683  }
 40684  
 40685  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40686  	bp := tls.Alloc(64)
 40687  	defer tls.Free(64)
 40688  
 40689  	var i int32
 40690  
 40691  	if argc != 2 {
 40692  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40693  			ts+25849, 0))
 40694  		return TCL_ERROR
 40695  	}
 40696  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40697  	if i < 0 {
 40698  		return TCL_ERROR
 40699  	}
 40700  	if !(threadset[i].Fbusy != 0) {
 40701  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40702  		return TCL_ERROR
 40703  	}
 40704  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40705  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 40706  	return TCL_OK
 40707  }
 40708  
 40709  func do_compile(tls *libc.TLS, p uintptr) {
 40710  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 40711  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 40712  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40713  		return
 40714  	}
 40715  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40716  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40717  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40718  	}
 40719  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 40720  }
 40721  
 40722  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40723  	bp := tls.Alloc(56)
 40724  	defer tls.Free(56)
 40725  
 40726  	var i int32
 40727  	if argc != 3 {
 40728  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40729  			ts+25921, 0))
 40730  		return TCL_ERROR
 40731  	}
 40732  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40733  	if i < 0 {
 40734  		return TCL_ERROR
 40735  	}
 40736  	if !(threadset[i].Fbusy != 0) {
 40737  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40738  		return TCL_ERROR
 40739  	}
 40740  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40741  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 40742  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40743  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40744  	test_barrier(tls)
 40745  	threadset[i].Fopnum++
 40746  	return TCL_OK
 40747  }
 40748  
 40749  func do_step(tls *libc.TLS, p uintptr) {
 40750  	var i int32
 40751  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40752  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40753  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40754  		return
 40755  	}
 40756  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40757  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 40758  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40759  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 40760  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40761  		}
 40762  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 40763  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40764  		}
 40765  	}
 40766  }
 40767  
 40768  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40769  	bp := tls.Alloc(48)
 40770  	defer tls.Free(48)
 40771  
 40772  	var i int32
 40773  	if argc != 2 {
 40774  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40775  			ts+25958, 0))
 40776  		return TCL_ERROR
 40777  	}
 40778  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40779  	if i < 0 {
 40780  		return TCL_ERROR
 40781  	}
 40782  	if !(threadset[i].Fbusy != 0) {
 40783  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40784  		return TCL_ERROR
 40785  	}
 40786  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40787  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 40788  	test_barrier(tls)
 40789  	threadset[i].Fopnum++
 40790  	return TCL_OK
 40791  }
 40792  
 40793  func do_finalize(tls *libc.TLS, p uintptr) {
 40794  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40795  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40796  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40797  		return
 40798  	}
 40799  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40800  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40801  }
 40802  
 40803  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40804  	bp := tls.Alloc(48)
 40805  	defer tls.Free(48)
 40806  
 40807  	var i int32
 40808  	if argc != 2 {
 40809  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40810  			ts+25958, 0))
 40811  		return TCL_ERROR
 40812  	}
 40813  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40814  	if i < 0 {
 40815  		return TCL_ERROR
 40816  	}
 40817  	if !(threadset[i].Fbusy != 0) {
 40818  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40819  		return TCL_ERROR
 40820  	}
 40821  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40822  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 40823  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40824  	threadset[i].FzArg = uintptr(0)
 40825  	test_barrier(tls)
 40826  	threadset[i].Fopnum++
 40827  	return TCL_OK
 40828  }
 40829  
 40830  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40831  	bp := tls.Alloc(64)
 40832  	defer tls.Free(64)
 40833  
 40834  	var i int32
 40835  	var j int32
 40836  	var temp uintptr
 40837  	if argc != 3 {
 40838  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40839  			ts+25963, 0))
 40840  		return TCL_ERROR
 40841  	}
 40842  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40843  	if i < 0 {
 40844  		return TCL_ERROR
 40845  	}
 40846  	if !(threadset[i].Fbusy != 0) {
 40847  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40848  		return TCL_ERROR
 40849  	}
 40850  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40851  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40852  	if j < 0 {
 40853  		return TCL_ERROR
 40854  	}
 40855  	if !(threadset[j].Fbusy != 0) {
 40856  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 40857  		return TCL_ERROR
 40858  	}
 40859  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 40860  	temp = threadset[i].Fdb
 40861  	threadset[i].Fdb = threadset[j].Fdb
 40862  	threadset[j].Fdb = temp
 40863  	return TCL_OK
 40864  }
 40865  
 40866  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40867  	bp := tls.Alloc(164)
 40868  	defer tls.Free(164)
 40869  
 40870  	var i int32
 40871  
 40872  	if argc != 2 {
 40873  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40874  			ts+25849, 0))
 40875  		return TCL_ERROR
 40876  	}
 40877  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40878  	if i < 0 {
 40879  		return TCL_ERROR
 40880  	}
 40881  	if !(threadset[i].Fbusy != 0) {
 40882  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40883  		return TCL_ERROR
 40884  	}
 40885  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40886  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 40887  	threadset[i].Fdb = uintptr(0)
 40888  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40889  	return TCL_OK
 40890  }
 40891  
 40892  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40893  	bp := tls.Alloc(48)
 40894  	defer tls.Free(48)
 40895  
 40896  	var i int32
 40897  	if argc != 3 {
 40898  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40899  			ts+25972, 0))
 40900  		return TCL_ERROR
 40901  	}
 40902  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40903  	if i < 0 {
 40904  		return TCL_ERROR
 40905  	}
 40906  	if !(threadset[i].Fbusy != 0) {
 40907  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40908  		return TCL_ERROR
 40909  	}
 40910  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40911  
 40912  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40913  	return TCL_OK
 40914  }
 40915  
 40916  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40917  	bp := tls.Alloc(164)
 40918  	defer tls.Free(164)
 40919  
 40920  	var i int32
 40921  
 40922  	if argc != 2 {
 40923  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40924  			ts+25849, 0))
 40925  		return TCL_ERROR
 40926  	}
 40927  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40928  	if i < 0 {
 40929  		return TCL_ERROR
 40930  	}
 40931  	if !(threadset[i].Fbusy != 0) {
 40932  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40933  		return TCL_ERROR
 40934  	}
 40935  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40936  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 40937  	threadset[i].FpStmt = uintptr(0)
 40938  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40939  	return TCL_OK
 40940  }
 40941  
 40942  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 40943  	var i int32
 40944  
 40945  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 40946  		FzName uintptr
 40947  		FxProc uintptr
 40948  	}{})); i++ {
 40949  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 40950  	}
 40951  	return TCL_OK
 40952  }
 40953  
 40954  var aCmd4 = [15]struct {
 40955  	FzName uintptr
 40956  	FxProc uintptr
 40957  }{
 40958  	{FzName: ts + 25979, FxProc: 0},
 40959  	{FzName: ts + 25993, FxProc: 0},
 40960  	{FzName: ts + 26005, FxProc: 0},
 40961  	{FzName: ts + 26017, FxProc: 0},
 40962  	{FzName: ts + 26029, FxProc: 0},
 40963  	{FzName: ts + 26041, FxProc: 0},
 40964  	{FzName: ts + 26056, FxProc: 0},
 40965  	{FzName: ts + 26070, FxProc: 0},
 40966  	{FzName: ts + 26083, FxProc: 0},
 40967  	{FzName: ts + 26098, FxProc: 0},
 40968  	{FzName: ts + 26110, FxProc: 0},
 40969  	{FzName: ts + 26126, FxProc: 0},
 40970  	{FzName: ts + 26138, FxProc: 0},
 40971  	{FzName: ts + 26152, FxProc: 0},
 40972  	{FzName: ts + 26166, FxProc: 0},
 40973  }
 40974  
 40975  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40976  	bp := tls.Alloc(4)
 40977  	defer tls.Free(4)
 40978  
 40979  	var bytes uintptr
 40980  	var pRet uintptr
 40981  
 40982  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 40983  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 40984  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40985  	return TCL_OK
 40986  }
 40987  
 40988  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40989  	bp := tls.Alloc(96)
 40990  	defer tls.Free(96)
 40991  
 40992  	var i int32
 40993  
 40994  	if objc != 3 {
 40995  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40996  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 40997  		return TCL_ERROR
 40998  	}
 40999  
 41000  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 41001  		return TCL_ERROR
 41002  	}
 41003  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 41004  		return TCL_ERROR
 41005  	}
 41006  
 41007  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 41008  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 41009  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 41010  
 41011  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 41012  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 41013  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 41014  		}
 41015  	}
 41016  
 41017  	return TCL_OK
 41018  }
 41019  
 41020  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 41021  	bp := tls.Alloc(104)
 41022  	defer tls.Free(104)
 41023  
 41024  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 41025  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 41026  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 41027  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 41028  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 41029  		{},
 41030  	}
 41031  	var pEnc uintptr
 41032  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 41033  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 41034  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 41035  			break
 41036  		}
 41037  	}
 41038  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 41039  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 41040  	}
 41041  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 41042  		return u8(SQLITE_UTF16LE)
 41043  	}
 41044  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 41045  }
 41046  
 41047  type EncName = struct {
 41048  	FzName       uintptr
 41049  	Fenc         u8
 41050  	F__ccgo_pad1 [7]byte
 41051  }
 41052  
 41053  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41054  	bp := tls.Alloc(44)
 41055  	defer tls.Free(44)
 41056  
 41057  	var enc_from u8
 41058  	var enc_to u8
 41059  	var pVal uintptr
 41060  	var z uintptr
 41061  
 41062  	var xDel uintptr = uintptr(0)
 41063  
 41064  	if objc != 4 && objc != 5 {
 41065  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41066  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 41067  			ts+26267, 0))
 41068  		return TCL_ERROR
 41069  	}
 41070  	if objc == 5 {
 41071  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 41072  	}
 41073  
 41074  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41075  	if !(enc_from != 0) {
 41076  		return TCL_ERROR
 41077  	}
 41078  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 41079  	if !(enc_to != 0) {
 41080  		return TCL_ERROR
 41081  	}
 41082  
 41083  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 41084  
 41085  	if int32(enc_from) == SQLITE_UTF8 {
 41086  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41087  		if objc == 5 {
 41088  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 41089  		}
 41090  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41091  	} else {
 41092  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 41093  		if objc == 5 {
 41094  			var zTmp uintptr = z
 41095  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 41096  			libc.Xmemcpy(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))))
 41097  		}
 41098  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41099  	}
 41100  
 41101  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 41102  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 41103  		if int32(enc_to) == SQLITE_UTF8 {
 41104  			return 1
 41105  		}
 41106  		return 2
 41107  	}()
 41108  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 41109  
 41110  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 41111  
 41112  	return TCL_OK
 41113  }
 41114  
 41115  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41116  	sqlite3.Xsqlite3UtfSelfTest(tls)
 41117  	return SQLITE_OK
 41118  }
 41119  
 41120  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 41121  	var i int32
 41122  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 41123  		FzName uintptr
 41124  		FxProc uintptr
 41125  	}{})); i++ {
 41126  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 41127  	}
 41128  	return SQLITE_OK
 41129  }
 41130  
 41131  var aCmd5 = [4]struct {
 41132  	FzName uintptr
 41133  	FxProc uintptr
 41134  }{
 41135  	{FzName: ts + 26302, FxProc: 0},
 41136  	{FzName: ts + 26311, FxProc: 0},
 41137  	{FzName: ts + 26331, FxProc: 0},
 41138  	{FzName: ts + 26346, FxProc: 0},
 41139  }
 41140  
 41141  type CrashFile1 = struct {
 41142  	FpMethod     uintptr
 41143  	FpRealFile   uintptr
 41144  	FzName       uintptr
 41145  	Fflags       int32
 41146  	F__ccgo_pad1 [4]byte
 41147  	FzData       uintptr
 41148  	FnData       int32
 41149  	F__ccgo_pad2 [4]byte
 41150  	FiSize       i64
 41151  }
 41152  
 41153  type CrashFile = CrashFile1
 41154  type CrashGlobal1 = struct {
 41155  	FpWriteList             uintptr
 41156  	FpWriteListEnd          uintptr
 41157  	FiSectorSize            int32
 41158  	FiDeviceCharacteristics int32
 41159  	FiCrash                 int32
 41160  	FzCrashFile             [500]int8
 41161  }
 41162  
 41163  type CrashGlobal = CrashGlobal1
 41164  type WriteBuffer1 = struct {
 41165  	FiOffset     i64
 41166  	FnBuf        int32
 41167  	F__ccgo_pad1 [4]byte
 41168  	FzBuf        uintptr
 41169  	FpFile       uintptr
 41170  	FpNext       uintptr
 41171  }
 41172  
 41173  type WriteBuffer = WriteBuffer1
 41174  
 41175  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 41176  
 41177  var sqlite3CrashTestEnable int32 = 0
 41178  
 41179  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 41180  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 41181  }
 41182  
 41183  func crash_free(tls *libc.TLS, p uintptr) {
 41184  	tcl.XTcl_Free(tls, p)
 41185  }
 41186  
 41187  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 41188  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 41189  }
 41190  
 41191  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 41192  	var rc int32 = SQLITE_OK
 41193  	var iSkip int32 = 0
 41194  	if iAmt-i64(iSkip) > int64(0) {
 41195  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 41196  	}
 41197  	return rc
 41198  }
 41199  
 41200  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 41201  	bp := tls.Alloc(16)
 41202  	defer tls.Free(16)
 41203  
 41204  	var rc int32 = SQLITE_OK
 41205  	var iDc int32 = g.FiDeviceCharacteristics
 41206  	var pWrite uintptr
 41207  	var ppPtr uintptr
 41208  
 41209  	var pFinal uintptr = uintptr(0)
 41210  	if !(isCrash != 0) {
 41211  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41212  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 41213  				pFinal = pWrite
 41214  			}
 41215  		}
 41216  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 41217  		var nWrite int32 = 0
 41218  
 41219  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41220  			nWrite++
 41221  		}
 41222  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 41223  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 41224  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 41225  				return -1 * *(*int32)(unsafe.Pointer(bp))
 41226  			}
 41227  			return *(*int32)(unsafe.Pointer(bp))
 41228  		}() % nWrite
 41229  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41230  			*(*int32)(unsafe.Pointer(bp))--
 41231  		}
 41232  		pFinal = pWrite
 41233  	}
 41234  
 41235  	ppPtr = uintptr(unsafe.Pointer(&g))
 41236  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 41237  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 41238  
 41239  		var eAction int32 = 0
 41240  		if !(isCrash != 0) {
 41241  			eAction = 2
 41242  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 41243  				eAction = 1
 41244  			}
 41245  		} else {
 41246  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 41247  
 41248  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 41249  				*(*int8)(unsafe.Pointer(bp + 4)) &= int8(0x01)
 41250  			}
 41251  
 41252  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 41253  				*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 41254  			}
 41255  
 41256  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41257  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 41258  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 41259  					*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 41260  				}
 41261  			}
 41262  
 41263  			if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 41264  				eAction = 3
 41265  			} else {
 41266  				eAction = func() int32 {
 41267  					if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 41268  						return 2
 41269  					}
 41270  					return 1
 41271  				}()
 41272  			}
 41273  		}
 41274  
 41275  		switch eAction {
 41276  		case 1:
 41277  			{
 41278  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41279  					rc = writeDbFile(tls,
 41280  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41281  				} else {
 41282  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41283  				}
 41284  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 41285  				crash_free(tls, pWrite)
 41286  				break
 41287  
 41288  			}
 41289  		case 2:
 41290  			{
 41291  				ppPtr = pWrite + 32
 41292  				break
 41293  
 41294  			}
 41295  		case 3:
 41296  			{
 41297  				var zGarbage uintptr
 41298  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 41299  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 41300  
 41301  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 41302  				if zGarbage != 0 {
 41303  					var i sqlite3_int64
 41304  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 41305  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 41306  						rc = writeDbFile(tls,
 41307  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 41308  					}
 41309  					crash_free(tls, zGarbage)
 41310  				} else {
 41311  					rc = SQLITE_NOMEM
 41312  				}
 41313  
 41314  				ppPtr = pWrite + 32
 41315  				break
 41316  
 41317  			}
 41318  
 41319  		default:
 41320  		}
 41321  
 41322  		if pWrite == pFinal {
 41323  			break
 41324  		}
 41325  	}
 41326  
 41327  	if rc == SQLITE_OK && isCrash != 0 {
 41328  		libc.Xexit(tls, -1)
 41329  	}
 41330  
 41331  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41332  	}
 41333  	g.FpWriteListEnd = pWrite
 41334  
 41335  	return rc
 41336  }
 41337  
 41338  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 41339  	var pNew uintptr
 41340  
 41341  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 41342  	if pNew == uintptr(0) {
 41343  		libc.Xfprintf(tls, libc.X__stderrp, ts+26365, 0)
 41344  	}
 41345  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf))
 41346  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 41347  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 41348  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 41349  	if zBuf != 0 {
 41350  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 41351  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf))
 41352  	}
 41353  
 41354  	if g.FpWriteList != 0 {
 41355  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 41356  	} else {
 41357  		g.FpWriteList = pNew
 41358  	}
 41359  	g.FpWriteListEnd = pNew
 41360  
 41361  	return SQLITE_OK
 41362  }
 41363  
 41364  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 41365  	var pCrash uintptr = pFile
 41366  	writeListSync(tls, pCrash, 0)
 41367  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 41368  	return SQLITE_OK
 41369  }
 41370  
 41371  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41372  	var pCrash uintptr = pFile
 41373  	var nCopy int32 = func() int32 {
 41374  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 41375  			return int32(i64(iAmt))
 41376  		}
 41377  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 41378  	}()
 41379  
 41380  	if nCopy > 0 {
 41381  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy))
 41382  	}
 41383  
 41384  	if nCopy < iAmt {
 41385  		return SQLITE_IOERR | int32(2)<<8
 41386  	}
 41387  
 41388  	return SQLITE_OK
 41389  }
 41390  
 41391  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41392  	var pCrash uintptr = pFile
 41393  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41394  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 41395  	}
 41396  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 41397  		var zNew uintptr
 41398  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 41399  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 41400  		if !(zNew != 0) {
 41401  			return SQLITE_NOMEM
 41402  		}
 41403  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 41404  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 41405  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 41406  	}
 41407  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt))
 41408  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 41409  }
 41410  
 41411  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 41412  	var pCrash uintptr = pFile
 41413  
 41414  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 41415  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 41416  	}
 41417  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 41418  }
 41419  
 41420  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 41421  	var pCrash uintptr = pFile
 41422  	var isCrash int32 = 0
 41423  
 41424  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 41425  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 41426  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 41427  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 41428  
 41429  	if nCrashFile > 0 && int32(*(*int8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 41430  		nCrashFile--
 41431  		if nName > nCrashFile {
 41432  			nName = nCrashFile
 41433  		}
 41434  	}
 41435  
 41436  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 41437  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 41438  			isCrash = 1
 41439  		}
 41440  	}
 41441  
 41442  	return writeListSync(tls, pCrash, isCrash)
 41443  }
 41444  
 41445  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 41446  	var pCrash uintptr = pFile
 41447  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 41448  	return SQLITE_OK
 41449  }
 41450  
 41451  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41452  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41453  }
 41454  
 41455  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41456  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41457  }
 41458  
 41459  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 41460  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 41461  }
 41462  
 41463  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 41464  	if op == SQLITE_FCNTL_SIZE_HINT {
 41465  		var pCrash uintptr = pFile
 41466  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 41467  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41468  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 41469  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 41470  			}
 41471  		}
 41472  		return SQLITE_OK
 41473  	}
 41474  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 41475  }
 41476  
 41477  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 41478  	return g.FiSectorSize
 41479  }
 41480  
 41481  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 41482  	return g.FiDeviceCharacteristics
 41483  }
 41484  
 41485  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 41486  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41487  	return (*struct {
 41488  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 41489  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 41490  }
 41491  
 41492  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 41493  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41494  	(*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)
 41495  }
 41496  
 41497  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 41498  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41499  	return (*struct {
 41500  		f func(*libc.TLS, uintptr, int32) int32
 41501  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 41502  }
 41503  
 41504  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 41505  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41506  	return (*struct {
 41507  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 41508  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 41509  }
 41510  
 41511  var CrashFileVtab = sqlite3_io_methods{
 41512  	FiVersion:               2,
 41513  	FxClose:                 0,
 41514  	FxRead:                  0,
 41515  	FxWrite:                 0,
 41516  	FxTruncate:              0,
 41517  	FxSync:                  0,
 41518  	FxFileSize:              0,
 41519  	FxLock:                  0,
 41520  	FxUnlock:                0,
 41521  	FxCheckReservedLock:     0,
 41522  	FxFileControl:           0,
 41523  	FxSectorSize:            0,
 41524  	FxDeviceCharacteristics: 0,
 41525  	FxShmMap:                0,
 41526  	FxShmLock:               0,
 41527  	FxShmBarrier:            0,
 41528  	FxShmUnmap:              0,
 41529  }
 41530  
 41531  type crashAppData = struct{ FpOrig uintptr }
 41532  
 41533  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 41534  	bp := tls.Alloc(8)
 41535  	defer tls.Free(8)
 41536  
 41537  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41538  	var rc int32
 41539  	var pWrapper uintptr = pFile
 41540  	var pReal uintptr = pWrapper + 1*56
 41541  
 41542  	libc.Xmemset(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})))
 41543  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 41544  
 41545  	if rc == SQLITE_OK {
 41546  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 41547  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 41548  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 41549  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 41550  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 41551  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 41552  	}
 41553  	if rc == SQLITE_OK {
 41554  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 41555  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 41556  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 41557  			var iOff i64
 41558  
 41559  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 41560  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 41561  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 41562  				if nRead > 512 {
 41563  					nRead = 512
 41564  				}
 41565  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 41566  			}
 41567  		} else {
 41568  			rc = SQLITE_NOMEM
 41569  		}
 41570  	}
 41571  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 41572  		sqlite3.Xsqlite3OsClose(tls, pFile)
 41573  	}
 41574  	return rc
 41575  }
 41576  
 41577  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 41578  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41579  	return (*struct {
 41580  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 41581  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 41582  }
 41583  
 41584  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 41585  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41586  	return (*struct {
 41587  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41588  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 41589  }
 41590  
 41591  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 41592  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41593  	return (*struct {
 41594  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41595  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 41596  }
 41597  
 41598  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 41599  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41600  	return (*struct {
 41601  		f func(*libc.TLS, uintptr, uintptr) uintptr
 41602  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 41603  }
 41604  
 41605  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 41606  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41607  	(*struct {
 41608  		f func(*libc.TLS, uintptr, int32, uintptr)
 41609  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 41610  }
 41611  
 41612  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 41613  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41614  	return (*struct {
 41615  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 41616  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 41617  }
 41618  
 41619  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 41620  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41621  	(*struct {
 41622  		f func(*libc.TLS, uintptr, uintptr)
 41623  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 41624  }
 41625  
 41626  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 41627  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41628  	return (*struct {
 41629  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41630  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 41631  }
 41632  
 41633  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 41634  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41635  	return (*struct {
 41636  		f func(*libc.TLS, uintptr, int32) int32
 41637  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 41638  }
 41639  
 41640  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 41641  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41642  	return (*struct {
 41643  		f func(*libc.TLS, uintptr, uintptr) int32
 41644  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 41645  }
 41646  
 41647  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 41648  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41649  	return (*struct {
 41650  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41651  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 41652  }
 41653  
 41654  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 41655  	bp := tls.Alloc(316)
 41656  	defer tls.Free(316)
 41657  
 41658  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 41659  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 41660  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 41661  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 41662  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 41663  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 41664  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 41665  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 41666  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 41667  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 41668  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 41669  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 41670  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 41671  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 41672  		{},
 41673  	}
 41674  	var i int32
 41675  	var iDc int32 = 0
 41676  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 41677  	var setSectorsize int32 = 0
 41678  	var setDeviceChar int32 = 0
 41679  
 41680  	for i = 0; i < objc; i = i + 2 {
 41681  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 41682  
 41683  		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) &&
 41684  			(*(*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) {
 41685  			tcl.XTcl_AppendResult(tls, interp,
 41686  				libc.VaList(bp, ts+26571, zOpt,
 41687  					ts+26585, 0))
 41688  			return TCL_ERROR
 41689  		}
 41690  		if i == objc-1 {
 41691  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 41692  			return TCL_ERROR
 41693  		}
 41694  
 41695  		if int32(*(*int8)(unsafe.Pointer(zOpt + 1))) == 's' {
 41696  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 41697  				return TCL_ERROR
 41698  			}
 41699  			setSectorsize = 1
 41700  		} else {
 41701  			var j int32
 41702  
 41703  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 41704  				return TCL_ERROR
 41705  			}
 41706  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 41707  				var rc int32
 41708  
 41709  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 41710  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 41711  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 41712  
 41713  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 41714  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+312)
 41715  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 41716  					var _objPtr uintptr = pFlag
 41717  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 41718  						tcl.XTclFreeObj(tls, _objPtr)
 41719  					}
 41720  				}
 41721  				if rc != 0 {
 41722  					return TCL_ERROR
 41723  				}
 41724  
 41725  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 41726  			}
 41727  			setDeviceChar = 1
 41728  		}
 41729  	}
 41730  
 41731  	if setDeviceChar != 0 {
 41732  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 41733  	}
 41734  	if setSectorsize != 0 {
 41735  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 41736  	}
 41737  
 41738  	return TCL_OK
 41739  }
 41740  
 41741  type DeviceFlag = struct {
 41742  	FzName       uintptr
 41743  	FiValue      int32
 41744  	F__ccgo_pad1 [4]byte
 41745  }
 41746  
 41747  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41748  	if objc != 1 {
 41749  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41750  		return TCL_ERROR
 41751  	}
 41752  	writeListSync(tls, uintptr(0), 1)
 41753  
 41754  	return TCL_OK
 41755  }
 41756  
 41757  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41758  	bp := tls.Alloc(8)
 41759  	defer tls.Free(8)
 41760  
 41761  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 41762  
 41763  	if objc != 2 && objc != 3 {
 41764  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 41765  		return TCL_ERROR
 41766  	}
 41767  
 41768  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41769  		return TCL_ERROR
 41770  	}
 41771  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 41772  		return TCL_ERROR
 41773  	}
 41774  
 41775  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 41776  		return TCL_OK
 41777  	}
 41778  
 41779  	if crashVfs.FpAppData == uintptr(0) {
 41780  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 41781  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 41782  		crashVfs.FpAppData = pOriginalVfs
 41783  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 41784  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 41785  	} else {
 41786  		crashVfs.FpAppData = uintptr(0)
 41787  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 41788  	}
 41789  
 41790  	return TCL_OK
 41791  }
 41792  
 41793  var crashVfs = sqlite3_vfs{
 41794  	FiVersion:      2,
 41795  	FzName:         ts + 26694,
 41796  	FxOpen:         0,
 41797  	FxDelete:       0,
 41798  	FxAccess:       0,
 41799  	FxFullPathname: 0,
 41800  	FxDlOpen:       0,
 41801  	FxDlError:      0,
 41802  	FxDlSym:        0,
 41803  	FxDlClose:      0,
 41804  	FxRandomness:   0,
 41805  	FxSleep:        0,
 41806  	FxCurrentTime:  0,
 41807  	FxGetLastError: 0,
 41808  }
 41809  
 41810  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41811  	bp := tls.Alloc(48)
 41812  	defer tls.Free(48)
 41813  
 41814  	var zCrashFile uintptr
 41815  
 41816  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 41817  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 41818  
 41819  	if !(objc < 3) {
 41820  		goto __1
 41821  	}
 41822  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 41823  	goto error
 41824  __1:
 41825  	;
 41826  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 41827  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]int8{}))) {
 41828  		goto __2
 41829  	}
 41830  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 41831  	goto error
 41832  __2:
 41833  	;
 41834  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 41835  		goto __3
 41836  	}
 41837  	goto error
 41838  __3:
 41839  	;
 41840  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 41841  		goto __4
 41842  	}
 41843  	return TCL_ERROR
 41844  __4:
 41845  	;
 41846  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 41847  		goto __5
 41848  	}
 41849  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 41850  __5:
 41851  	;
 41852  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 41853  		goto __6
 41854  	}
 41855  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 41856  __6:
 41857  	;
 41858  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 41859  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1))
 41860  	sqlite3CrashTestEnable = 1
 41861  	return TCL_OK
 41862  
 41863  error:
 41864  	return TCL_ERROR
 41865  }
 41866  
 41867  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41868  	bp := tls.Alloc(8)
 41869  	defer tls.Free(8)
 41870  
 41871  	*(*int32)(unsafe.Pointer(bp)) = -1
 41872  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 41873  
 41874  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 41875  		return TCL_ERROR
 41876  	}
 41877  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 41878  
 41879  	return TCL_OK
 41880  }
 41881  
 41882  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41883  	bp := tls.Alloc(4)
 41884  	defer tls.Free(4)
 41885  
 41886  	*(*int32)(unsafe.Pointer(bp)) = 0
 41887  
 41888  	if objc != 2 {
 41889  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 41890  		return TCL_ERROR
 41891  	}
 41892  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41893  		return TCL_ERROR
 41894  	}
 41895  
 41896  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 41897  	return TCL_OK
 41898  }
 41899  
 41900  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41901  	if objc != 1 {
 41902  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41903  		return TCL_ERROR
 41904  	}
 41905  
 41906  	devsym_unregister(tls)
 41907  	return TCL_OK
 41908  }
 41909  
 41910  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41911  	bp := tls.Alloc(48)
 41912  	defer tls.Free(48)
 41913  
 41914  	var zParent uintptr = uintptr(0)
 41915  
 41916  	if objc != 2 && objc != 3 {
 41917  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 41918  		return TCL_ERROR
 41919  	}
 41920  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41921  	if objc == 3 {
 41922  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 41923  			tcl.XTcl_AppendResult(tls, interp,
 41924  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 41925  			return TCL_ERROR
 41926  		}
 41927  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41928  	}
 41929  
 41930  	if !(int32(*(*int8)(unsafe.Pointer(zParent))) != 0) {
 41931  		zParent = uintptr(0)
 41932  	}
 41933  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 41934  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 41935  		return TCL_ERROR
 41936  	}
 41937  
 41938  	return TCL_OK
 41939  }
 41940  
 41941  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41942  	if objc != 1 {
 41943  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41944  		return TCL_ERROR
 41945  	}
 41946  
 41947  	jt_unregister(tls)
 41948  	return TCL_OK
 41949  }
 41950  
 41951  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 41952  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 41953  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41954  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 41955  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 41956  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41957  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 41958  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 41959  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41960  	}{crashNowCmd})), uintptr(0), uintptr(0))
 41961  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 41962  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41963  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 41964  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 41965  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41966  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 41967  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 41968  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41969  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 41970  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 41971  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41972  	}{jtObjCmd})), uintptr(0), uintptr(0))
 41973  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 41974  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41975  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 41976  	return TCL_OK
 41977  }
 41978  
 41979  type Thread1 = struct {
 41980  	FzFilename   uintptr
 41981  	FxOp         uintptr
 41982  	FzArg        uintptr
 41983  	Fopnum       int32
 41984  	Fbusy        int32
 41985  	Fcompleted   int32
 41986  	F__ccgo_pad1 [4]byte
 41987  	Fdb          uintptr
 41988  	FpStmt       uintptr
 41989  	FzErr        uintptr
 41990  	FzStaticErr  uintptr
 41991  	Frc          int32
 41992  	Fargc        int32
 41993  	Fargv        [100]uintptr
 41994  	Fcolv        [100]uintptr
 41995  	FnServer     int32
 41996  	F__ccgo_pad2 [4]byte
 41997  }
 41998  
 41999  var threadset1 [26]Thread1
 42000  
 42001  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 42002  	var p uintptr = pArg
 42003  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42004  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42005  	}
 42006  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 42007  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 42008  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 42009  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42010  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42011  	}
 42012  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42013  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 42014  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42015  		libc.Xsched_yield(tls)
 42016  	}
 42017  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 42018  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42019  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42020  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42021  		}
 42022  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 42023  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42024  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42025  			libc.Xsched_yield(tls)
 42026  		}
 42027  	}
 42028  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42029  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42030  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42031  	}
 42032  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42033  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42034  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42035  	}
 42036  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42037  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42038  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42039  	}
 42040  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42041  	sqlite3.Xsqlite3_thread_cleanup(tls)
 42042  	return uintptr(0)
 42043  }
 42044  
 42045  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 42046  	bp := tls.Alloc(16)
 42047  	defer tls.Free(16)
 42048  
 42049  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(__sbistype(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg)))), uint64(X_CTYPE_U)) != 0) {
 42050  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 42051  		return -1
 42052  	}
 42053  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 42054  }
 42055  
 42056  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42057  	bp := tls.Alloc(96)
 42058  	defer tls.Free(96)
 42059  
 42060  	var i int32
 42061  
 42062  	var rc int32
 42063  
 42064  	if argc != 3 {
 42065  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42066  			ts+25780, 0))
 42067  		return TCL_ERROR
 42068  	}
 42069  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42070  	if i < 0 {
 42071  		return TCL_ERROR
 42072  	}
 42073  	if threadset1[i].Fbusy != 0 {
 42074  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 42075  		return TCL_ERROR
 42076  	}
 42077  	threadset1[i].Fbusy = 1
 42078  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42079  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42080  	threadset1[i].Fopnum = 1
 42081  	threadset1[i].Fcompleted = 0
 42082  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 42083  		f func(*libc.TLS, uintptr) uintptr
 42084  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42085  	if rc != 0 {
 42086  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 42087  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42088  		threadset1[i].Fbusy = 0
 42089  		return TCL_ERROR
 42090  	}
 42091  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 42092  	if threadset1[i].FnServer == 0 {
 42093  		threadset1[i].FnServer = 1
 42094  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 42095  	}
 42096  	return TCL_OK
 42097  }
 42098  
 42099  func client_wait(tls *libc.TLS, p uintptr) {
 42100  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42101  		libc.Xsched_yield(tls)
 42102  	}
 42103  }
 42104  
 42105  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42106  	bp := tls.Alloc(48)
 42107  	defer tls.Free(48)
 42108  
 42109  	var i int32
 42110  
 42111  	if argc != 2 {
 42112  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42113  			ts+25849, 0))
 42114  		return TCL_ERROR
 42115  	}
 42116  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42117  	if i < 0 {
 42118  		return TCL_ERROR
 42119  	}
 42120  	if !(threadset1[i].Fbusy != 0) {
 42121  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42122  		return TCL_ERROR
 42123  	}
 42124  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42125  	return TCL_OK
 42126  }
 42127  
 42128  func stop_thread(tls *libc.TLS, p uintptr) {
 42129  	client_wait(tls, p)
 42130  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 42131  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 42132  	client_wait(tls, p)
 42133  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 42134  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 42135  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 42136  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 42137  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 42138  }
 42139  
 42140  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42141  	bp := tls.Alloc(48)
 42142  	defer tls.Free(48)
 42143  
 42144  	var i int32
 42145  
 42146  	if argc != 2 {
 42147  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42148  			ts+25849, 0))
 42149  		return TCL_ERROR
 42150  	}
 42151  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 42152  		for i = 0; i < N_THREAD; i++ {
 42153  			if threadset1[i].Fbusy != 0 {
 42154  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42155  			}
 42156  		}
 42157  	} else {
 42158  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42159  		if i < 0 {
 42160  			return TCL_ERROR
 42161  		}
 42162  		if !(threadset1[i].Fbusy != 0) {
 42163  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42164  			return TCL_ERROR
 42165  		}
 42166  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42167  	}
 42168  
 42169  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 42170  	}
 42171  	if i >= N_THREAD {
 42172  		sqlite3_server_stop(tls)
 42173  		for 1 != 0 {
 42174  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 42175  			}
 42176  			if i == N_THREAD {
 42177  				break
 42178  			}
 42179  			libc.Xsched_yield(tls)
 42180  		}
 42181  	}
 42182  	return TCL_OK
 42183  }
 42184  
 42185  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42186  	bp := tls.Alloc(172)
 42187  	defer tls.Free(172)
 42188  
 42189  	var i int32
 42190  
 42191  	if argc != 2 {
 42192  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42193  			ts+25849, 0))
 42194  		return TCL_ERROR
 42195  	}
 42196  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42197  	if i < 0 {
 42198  		return TCL_ERROR
 42199  	}
 42200  	if !(threadset1[i].Fbusy != 0) {
 42201  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42202  		return TCL_ERROR
 42203  	}
 42204  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42205  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 42206  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 42207  	return TCL_OK
 42208  }
 42209  
 42210  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42211  	bp := tls.Alloc(84)
 42212  	defer tls.Free(84)
 42213  
 42214  	var i int32
 42215  
 42216  	if argc != 3 {
 42217  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42218  			ts+25868, 0))
 42219  		return TCL_ERROR
 42220  	}
 42221  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42222  	if i < 0 {
 42223  		return TCL_ERROR
 42224  	}
 42225  	if !(threadset1[i].Fbusy != 0) {
 42226  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42227  		return TCL_ERROR
 42228  	}
 42229  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42230  		return TCL_ERROR
 42231  	}
 42232  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42233  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42234  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42235  		return TCL_ERROR
 42236  	}
 42237  	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))
 42238  	return TCL_OK
 42239  }
 42240  
 42241  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42242  	bp := tls.Alloc(84)
 42243  	defer tls.Free(84)
 42244  
 42245  	var i int32
 42246  
 42247  	if argc != 3 {
 42248  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42249  			ts+25868, 0))
 42250  		return TCL_ERROR
 42251  	}
 42252  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42253  	if i < 0 {
 42254  		return TCL_ERROR
 42255  	}
 42256  	if !(threadset1[i].Fbusy != 0) {
 42257  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42258  		return TCL_ERROR
 42259  	}
 42260  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 42261  		return TCL_ERROR
 42262  	}
 42263  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42264  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42265  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42266  		return TCL_ERROR
 42267  	}
 42268  	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))
 42269  	return TCL_OK
 42270  }
 42271  
 42272  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42273  	bp := tls.Alloc(64)
 42274  	defer tls.Free(64)
 42275  
 42276  	var i int32
 42277  	var zName uintptr
 42278  
 42279  	if argc != 2 {
 42280  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42281  			ts+25849, 0))
 42282  		return TCL_ERROR
 42283  	}
 42284  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42285  	if i < 0 {
 42286  		return TCL_ERROR
 42287  	}
 42288  	if !(threadset1[i].Fbusy != 0) {
 42289  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42290  		return TCL_ERROR
 42291  	}
 42292  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42293  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 42294  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 42295  	return TCL_OK
 42296  }
 42297  
 42298  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42299  	bp := tls.Alloc(64)
 42300  	defer tls.Free(64)
 42301  
 42302  	var i int32
 42303  
 42304  	if argc != 2 {
 42305  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42306  			ts+25849, 0))
 42307  		return TCL_ERROR
 42308  	}
 42309  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42310  	if i < 0 {
 42311  		return TCL_ERROR
 42312  	}
 42313  	if !(threadset1[i].Fbusy != 0) {
 42314  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42315  		return TCL_ERROR
 42316  	}
 42317  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42318  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 42319  	return TCL_OK
 42320  }
 42321  
 42322  func do_compile1(tls *libc.TLS, p uintptr) {
 42323  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 42324  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 42325  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42326  		return
 42327  	}
 42328  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42329  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42330  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42331  	}
 42332  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 42333  }
 42334  
 42335  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42336  	bp := tls.Alloc(56)
 42337  	defer tls.Free(56)
 42338  
 42339  	var i int32
 42340  	if argc != 3 {
 42341  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42342  			ts+25921, 0))
 42343  		return TCL_ERROR
 42344  	}
 42345  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42346  	if i < 0 {
 42347  		return TCL_ERROR
 42348  	}
 42349  	if !(threadset1[i].Fbusy != 0) {
 42350  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42351  		return TCL_ERROR
 42352  	}
 42353  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42354  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 42355  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42356  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42357  	threadset1[i].Fopnum++
 42358  	return TCL_OK
 42359  }
 42360  
 42361  func do_step1(tls *libc.TLS, p uintptr) {
 42362  	var i int32
 42363  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42364  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42365  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42366  		return
 42367  	}
 42368  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42369  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 42370  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42371  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 42372  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42373  		}
 42374  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 42375  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42376  		}
 42377  	}
 42378  }
 42379  
 42380  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42381  	bp := tls.Alloc(48)
 42382  	defer tls.Free(48)
 42383  
 42384  	var i int32
 42385  	if argc != 2 {
 42386  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42387  			ts+25958, 0))
 42388  		return TCL_ERROR
 42389  	}
 42390  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42391  	if i < 0 {
 42392  		return TCL_ERROR
 42393  	}
 42394  	if !(threadset1[i].Fbusy != 0) {
 42395  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42396  		return TCL_ERROR
 42397  	}
 42398  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42399  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 42400  	threadset1[i].Fopnum++
 42401  	return TCL_OK
 42402  }
 42403  
 42404  func do_finalize1(tls *libc.TLS, p uintptr) {
 42405  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42406  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42407  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42408  		return
 42409  	}
 42410  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42411  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42412  }
 42413  
 42414  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42415  	bp := tls.Alloc(48)
 42416  	defer tls.Free(48)
 42417  
 42418  	var i int32
 42419  	if argc != 2 {
 42420  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42421  			ts+25958, 0))
 42422  		return TCL_ERROR
 42423  	}
 42424  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42425  	if i < 0 {
 42426  		return TCL_ERROR
 42427  	}
 42428  	if !(threadset1[i].Fbusy != 0) {
 42429  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42430  		return TCL_ERROR
 42431  	}
 42432  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42433  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 42434  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42435  	threadset1[i].FzArg = uintptr(0)
 42436  	threadset1[i].Fopnum++
 42437  	return TCL_OK
 42438  }
 42439  
 42440  func do_reset(tls *libc.TLS, p uintptr) {
 42441  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42442  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 42443  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42444  		return
 42445  	}
 42446  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42447  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42448  }
 42449  
 42450  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42451  	bp := tls.Alloc(48)
 42452  	defer tls.Free(48)
 42453  
 42454  	var i int32
 42455  	if argc != 2 {
 42456  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42457  			ts+25958, 0))
 42458  		return TCL_ERROR
 42459  	}
 42460  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42461  	if i < 0 {
 42462  		return TCL_ERROR
 42463  	}
 42464  	if !(threadset1[i].Fbusy != 0) {
 42465  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42466  		return TCL_ERROR
 42467  	}
 42468  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42469  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 42470  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42471  	threadset1[i].FzArg = uintptr(0)
 42472  	threadset1[i].Fopnum++
 42473  	return TCL_OK
 42474  }
 42475  
 42476  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42477  	bp := tls.Alloc(64)
 42478  	defer tls.Free(64)
 42479  
 42480  	var i int32
 42481  	var j int32
 42482  	var temp uintptr
 42483  	if argc != 3 {
 42484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42485  			ts+25963, 0))
 42486  		return TCL_ERROR
 42487  	}
 42488  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 42489  	if i < 0 {
 42490  		return TCL_ERROR
 42491  	}
 42492  	if !(threadset1[i].Fbusy != 0) {
 42493  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42494  		return TCL_ERROR
 42495  	}
 42496  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 42497  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 42498  	if j < 0 {
 42499  		return TCL_ERROR
 42500  	}
 42501  	if !(threadset1[j].Fbusy != 0) {
 42502  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 42503  		return TCL_ERROR
 42504  	}
 42505  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 42506  	temp = threadset1[i].Fdb
 42507  	threadset1[i].Fdb = threadset1[j].Fdb
 42508  	threadset1[j].Fdb = temp
 42509  	return TCL_OK
 42510  }
 42511  
 42512  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 42513  	var i int32
 42514  
 42515  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 42516  		FzName uintptr
 42517  		FxProc uintptr
 42518  	}{})); i++ {
 42519  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 42520  	}
 42521  	return TCL_OK
 42522  }
 42523  
 42524  var aCmd6 = [13]struct {
 42525  	FzName uintptr
 42526  	FxProc uintptr
 42527  }{
 42528  	{FzName: ts + 26987, FxProc: 0},
 42529  	{FzName: ts + 27001, FxProc: 0},
 42530  	{FzName: ts + 27013, FxProc: 0},
 42531  	{FzName: ts + 27025, FxProc: 0},
 42532  	{FzName: ts + 27037, FxProc: 0},
 42533  	{FzName: ts + 27049, FxProc: 0},
 42534  	{FzName: ts + 27064, FxProc: 0},
 42535  	{FzName: ts + 27078, FxProc: 0},
 42536  	{FzName: ts + 27091, FxProc: 0},
 42537  	{FzName: ts + 27106, FxProc: 0},
 42538  	{FzName: ts + 27118, FxProc: 0},
 42539  	{FzName: ts + 27131, FxProc: 0},
 42540  	{FzName: ts + 27147, FxProc: 0},
 42541  }
 42542  
 42543  type echo_vtab1 = struct {
 42544  	Fbase          sqlite3_vtab
 42545  	Finterp        uintptr
 42546  	Fdb            uintptr
 42547  	FisPattern     int32
 42548  	FinTransaction int32
 42549  	FzThis         uintptr
 42550  	FzTableName    uintptr
 42551  	FzLogName      uintptr
 42552  	FnCol          int32
 42553  	F__ccgo_pad1   [4]byte
 42554  	FaIndex        uintptr
 42555  	FaCol          uintptr
 42556  }
 42557  
 42558  type echo_vtab = echo_vtab1
 42559  type echo_cursor1 = struct {
 42560  	Fbase  sqlite3_vtab_cursor
 42561  	FpStmt uintptr
 42562  }
 42563  
 42564  type echo_cursor = echo_cursor1
 42565  
 42566  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 42567  	bp := tls.Alloc(152)
 42568  	defer tls.Free(152)
 42569  
 42570  	var zErr uintptr
 42571  
 42572  	*(*int8)(unsafe.Pointer(bp + 24 + 127)) = int8(0)
 42573  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 42574  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 42575  	if zErr != 0 {
 42576  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 42577  	}
 42578  	return libc.Bool32(zErr != uintptr(0))
 42579  }
 42580  
 42581  func dequoteString(tls *libc.TLS, z uintptr) {
 42582  	var quote int32
 42583  	var i int32
 42584  	var j int32
 42585  	if z == uintptr(0) {
 42586  		return
 42587  	}
 42588  	quote = int32(*(*int8)(unsafe.Pointer(z)))
 42589  	switch quote {
 42590  	case '\'':
 42591  		break
 42592  	case '"':
 42593  		break
 42594  	case '`':
 42595  		break
 42596  	case '[':
 42597  		quote = ']'
 42598  		break
 42599  	default:
 42600  		return
 42601  	}
 42602  	i = 1
 42603  	j = 0
 42604  	for ; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 42605  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 42606  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 42607  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(quote)
 42608  				i++
 42609  			} else {
 42610  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(0)
 42611  				break
 42612  			}
 42613  		} else {
 42614  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 42615  		}
 42616  	}
 42617  }
 42618  
 42619  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 42620  	bp := tls.Alloc(24)
 42621  	defer tls.Free(24)
 42622  
 42623  	var aCol uintptr
 42624  	var zSql uintptr
 42625  
 42626  	var rc int32
 42627  	var nCol int32
 42628  	var zName uintptr
 42629  	var ii int32
 42630  	var nBytes int32
 42631  	var zSpace uintptr
 42632  	aCol = uintptr(0)
 42633  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42634  	rc = SQLITE_OK
 42635  	nCol = 0
 42636  
 42637  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 42638  	if !!(zSql != 0) {
 42639  		goto __1
 42640  	}
 42641  	rc = SQLITE_NOMEM
 42642  	goto out
 42643  __1:
 42644  	;
 42645  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42646  	sqlite3.Xsqlite3_free(tls, zSql)
 42647  
 42648  	if !(rc == SQLITE_OK) {
 42649  		goto __2
 42650  	}
 42651  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42652  
 42653  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 42654  	ii = 0
 42655  __3:
 42656  	if !(ii < nCol) {
 42657  		goto __5
 42658  	}
 42659  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 42660  	if !!(zName != 0) {
 42661  		goto __6
 42662  	}
 42663  	rc = SQLITE_NOMEM
 42664  	goto out
 42665  __6:
 42666  	;
 42667  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 42668  	goto __4
 42669  __4:
 42670  	ii++
 42671  	goto __3
 42672  	goto __5
 42673  __5:
 42674  	;
 42675  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 42676  	if !!(aCol != 0) {
 42677  		goto __7
 42678  	}
 42679  	rc = SQLITE_NOMEM
 42680  	goto out
 42681  __7:
 42682  	;
 42683  	zSpace = aCol + uintptr(nCol)*8
 42684  	ii = 0
 42685  __8:
 42686  	if !(ii < nCol) {
 42687  		goto __10
 42688  	}
 42689  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 42690  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 42691  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 42692  	goto __9
 42693  __9:
 42694  	ii++
 42695  	goto __8
 42696  	goto __10
 42697  __10:
 42698  	;
 42699  __2:
 42700  	;
 42701  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 42702  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 42703  
 42704  out:
 42705  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42706  	return rc
 42707  }
 42708  
 42709  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 42710  	bp := tls.Alloc(32)
 42711  	defer tls.Free(32)
 42712  
 42713  	var aIndex uintptr
 42714  	var rc int32
 42715  	var zSql uintptr
 42716  	var cid int32
 42717  	var zIdx uintptr
 42718  
 42719  	var rc2 int32
 42720  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42721  	aIndex = uintptr(0)
 42722  
 42723  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 42724  	if !!(aIndex != 0) {
 42725  		goto __1
 42726  	}
 42727  	rc = SQLITE_NOMEM
 42728  	goto get_index_array_out
 42729  __1:
 42730  	;
 42731  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 42732  	if !!(zSql != 0) {
 42733  		goto __2
 42734  	}
 42735  	rc = SQLITE_NOMEM
 42736  	goto get_index_array_out
 42737  __2:
 42738  	;
 42739  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42740  	sqlite3.Xsqlite3_free(tls, zSql)
 42741  
 42742  __3:
 42743  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 42744  		goto __4
 42745  	}
 42746  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 42747  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 42748  	if !(zIdx == uintptr(0)) {
 42749  		goto __5
 42750  	}
 42751  	goto __3
 42752  __5:
 42753  	;
 42754  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 42755  	if !!(zSql != 0) {
 42756  		goto __6
 42757  	}
 42758  	rc = SQLITE_NOMEM
 42759  	goto get_index_array_out
 42760  __6:
 42761  	;
 42762  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 42763  	sqlite3.Xsqlite3_free(tls, zSql)
 42764  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 42765  		goto __7
 42766  	}
 42767  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 42768  
 42769  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 42770  __7:
 42771  	;
 42772  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 42773  		goto __8
 42774  	}
 42775  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 42776  __8:
 42777  	;
 42778  	if !(rc != SQLITE_OK) {
 42779  		goto __9
 42780  	}
 42781  	goto get_index_array_out
 42782  __9:
 42783  	;
 42784  	goto __3
 42785  __4:
 42786  	;
 42787  get_index_array_out:
 42788  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 42789  		goto __10
 42790  	}
 42791  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42792  	if !(rc == SQLITE_OK) {
 42793  		goto __11
 42794  	}
 42795  	rc = rc2
 42796  __11:
 42797  	;
 42798  __10:
 42799  	;
 42800  	if !(rc != SQLITE_OK) {
 42801  		goto __12
 42802  	}
 42803  	sqlite3.Xsqlite3_free(tls, aIndex)
 42804  	aIndex = uintptr(0)
 42805  __12:
 42806  	;
 42807  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 42808  	return rc
 42809  }
 42810  
 42811  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 42812  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 42813  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 42814  		if zArg != 0 {
 42815  			return zArg
 42816  		}
 42817  		return ts + 584
 42818  	}(), flags)
 42819  }
 42820  
 42821  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 42822  	bp := tls.Alloc(8)
 42823  	defer tls.Free(8)
 42824  
 42825  	var rc int32 = SQLITE_OK
 42826  
 42827  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 42828  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 42829  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 42830  			ts+27276,
 42831  			-1, bp, uintptr(0))
 42832  		if rc == SQLITE_OK {
 42833  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 42834  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 42835  				var rc2 int32
 42836  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 42837  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 42838  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42839  				if rc == SQLITE_OK {
 42840  					rc = rc2
 42841  				}
 42842  			} else {
 42843  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42844  				if rc == SQLITE_OK {
 42845  					rc = SQLITE_ERROR
 42846  				}
 42847  			}
 42848  			if rc == SQLITE_OK {
 42849  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 42850  			}
 42851  			if rc == SQLITE_OK {
 42852  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 42853  			}
 42854  		}
 42855  	}
 42856  
 42857  	return rc
 42858  }
 42859  
 42860  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 42861  	var p uintptr = pVtab
 42862  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 42863  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 42864  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 42865  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 42866  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 42867  	sqlite3.Xsqlite3_free(tls, p)
 42868  	return 0
 42869  }
 42870  
 42871  type EchoModule1 = struct {
 42872  	Finterp uintptr
 42873  	Fdb     uintptr
 42874  }
 42875  
 42876  type EchoModule = EchoModule1
 42877  
 42878  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42879  	bp := tls.Alloc(32)
 42880  	defer tls.Free(32)
 42881  
 42882  	var rc int32
 42883  	var i int32
 42884  	var pVtab uintptr
 42885  
 42886  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 42887  	if !(pVtab != 0) {
 42888  		return SQLITE_NOMEM
 42889  	}
 42890  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 42891  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 42892  
 42893  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42894  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 42895  		echoDestructor(tls, pVtab)
 42896  		return SQLITE_NOMEM
 42897  	}
 42898  
 42899  	if argc > 3 {
 42900  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 42901  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42902  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*int8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 42903  			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))
 42904  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42905  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 42906  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 42907  		}
 42908  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 42909  			echoDestructor(tls, pVtab)
 42910  			return SQLITE_NOMEM
 42911  		}
 42912  	}
 42913  
 42914  	for i = 0; i < argc; i++ {
 42915  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 42916  	}
 42917  
 42918  	rc = echoDeclareVtab(tls, pVtab, db)
 42919  	if rc != SQLITE_OK {
 42920  		echoDestructor(tls, pVtab)
 42921  		return rc
 42922  	}
 42923  
 42924  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 42925  	return SQLITE_OK
 42926  }
 42927  
 42928  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42929  	bp := tls.Alloc(24)
 42930  	defer tls.Free(24)
 42931  
 42932  	var rc int32 = SQLITE_OK
 42933  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 42934  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42935  
 42936  	if rc == SQLITE_OK && argc == 5 {
 42937  		var zSql uintptr
 42938  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 42939  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 42940  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 42941  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 42942  		sqlite3.Xsqlite3_free(tls, zSql)
 42943  		if rc != SQLITE_OK {
 42944  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 42945  		}
 42946  	}
 42947  
 42948  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 42949  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 42950  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 42951  	}
 42952  
 42953  	if rc == SQLITE_OK {
 42954  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 42955  	}
 42956  
 42957  	return rc
 42958  }
 42959  
 42960  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42961  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 42962  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42963  }
 42964  
 42965  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 42966  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 42967  	return echoDestructor(tls, pVtab)
 42968  }
 42969  
 42970  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 42971  	bp := tls.Alloc(8)
 42972  	defer tls.Free(8)
 42973  
 42974  	var rc int32 = SQLITE_OK
 42975  	var p uintptr = pVtab
 42976  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 42977  
 42978  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 42979  		var zSql uintptr
 42980  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 42981  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 42982  		sqlite3.Xsqlite3_free(tls, zSql)
 42983  	}
 42984  
 42985  	if rc == SQLITE_OK {
 42986  		rc = echoDestructor(tls, pVtab)
 42987  	}
 42988  	return rc
 42989  }
 42990  
 42991  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 42992  	var pCur uintptr
 42993  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 42994  		return SQLITE_ERROR
 42995  	}
 42996  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 42997  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 42998  	return func() int32 {
 42999  		if pCur != 0 {
 43000  			return SQLITE_OK
 43001  		}
 43002  		return SQLITE_NOMEM
 43003  	}()
 43004  }
 43005  
 43006  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 43007  	var rc int32
 43008  	var pCur uintptr = cur
 43009  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 43010  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43011  	sqlite3.Xsqlite3_free(tls, pCur)
 43012  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 43013  	return rc
 43014  }
 43015  
 43016  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 43017  	return func() int32 {
 43018  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 43019  			return 0
 43020  		}
 43021  		return 1
 43022  	}()
 43023  }
 43024  
 43025  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 43026  	var rc int32 = SQLITE_OK
 43027  	var pCur uintptr = cur
 43028  
 43029  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 43030  		return SQLITE_ERROR
 43031  	}
 43032  
 43033  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 43034  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43035  		if rc == SQLITE_ROW {
 43036  			rc = SQLITE_OK
 43037  		} else {
 43038  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43039  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43040  		}
 43041  	}
 43042  
 43043  	return rc
 43044  }
 43045  
 43046  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 43047  	var iCol int32 = i + 1
 43048  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43049  
 43050  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 43051  		return SQLITE_ERROR
 43052  	}
 43053  
 43054  	if !(pStmt != 0) {
 43055  		sqlite3.Xsqlite3_result_null(tls, ctx)
 43056  	} else {
 43057  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 43058  	}
 43059  	return SQLITE_OK
 43060  }
 43061  
 43062  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 43063  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43064  
 43065  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 43066  		return SQLITE_ERROR
 43067  	}
 43068  
 43069  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 43070  	return SQLITE_OK
 43071  }
 43072  
 43073  func hashString(tls *libc.TLS, zString uintptr) int32 {
 43074  	var val u32 = u32(0)
 43075  	var ii int32
 43076  	for ii = 0; *(*int8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 43077  		val = val<<3 + u32(int32(*(*int8)(unsafe.Pointer(zString + uintptr(ii)))))
 43078  	}
 43079  	return int32(val & u32(0x7fffffff))
 43080  }
 43081  
 43082  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43083  	var rc int32
 43084  	var i int32
 43085  
 43086  	var pCur uintptr = pVtabCursor
 43087  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43088  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43089  
 43090  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 43091  		return SQLITE_ERROR
 43092  	}
 43093  
 43094  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 43095  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 43096  	for i = 0; i < argc; i++ {
 43097  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 43098  	}
 43099  
 43100  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43101  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43102  
 43103  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 43104  
 43105  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 43106  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 43107  	}
 43108  
 43109  	if rc == SQLITE_OK {
 43110  		rc = echoNext(tls, pVtabCursor)
 43111  	}
 43112  
 43113  	return rc
 43114  }
 43115  
 43116  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 43117  	bp := tls.Alloc(24)
 43118  	defer tls.Free(24)
 43119  
 43120  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 43121  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 43122  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43123  	}
 43124  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 43125  		sqlite3.Xsqlite3_free(tls, zIn)
 43126  		zIn = uintptr(0)
 43127  	} else {
 43128  		if zIn != 0 {
 43129  			var zTemp uintptr = zIn
 43130  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 43131  			sqlite3.Xsqlite3_free(tls, zTemp)
 43132  		} else {
 43133  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 43134  		}
 43135  		if !(zIn != 0) {
 43136  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43137  		}
 43138  	}
 43139  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 43140  	if doFree != 0 {
 43141  		sqlite3.Xsqlite3_free(tls, zAppend)
 43142  	}
 43143  }
 43144  
 43145  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 43146  	bp := tls.Alloc(24)
 43147  	defer tls.Free(24)
 43148  
 43149  	var zRet uintptr = uintptr(0)
 43150  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 43151  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 43152  	} else {
 43153  		var i int32
 43154  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 43155  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 43156  				if i >= 63 {
 43157  					return 63
 43158  				}
 43159  				return i
 43160  			}()) != 0 {
 43161  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 43162  			} else {
 43163  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 43164  			}
 43165  			if !(zRet != 0) {
 43166  				break
 43167  			}
 43168  		}
 43169  	}
 43170  	return zRet
 43171  }
 43172  
 43173  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 43174  	bp := tls.Alloc(100)
 43175  	defer tls.Free(100)
 43176  
 43177  	var ii int32
 43178  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 43179  	var zCol uintptr = uintptr(0)
 43180  	var zNew uintptr
 43181  	var nArg int32 = 0
 43182  	var zSep uintptr = ts + 9392
 43183  	var pVtab uintptr = tab
 43184  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 43185  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43186  
 43187  	var nRow int32 = 0
 43188  	var useIdx int32 = 0
 43189  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 43190  	var useCost int32 = 0
 43191  	var cost float64 = float64(0)
 43192  	var isIgnoreUsable int32 = 0
 43193  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43194  		isIgnoreUsable = 1
 43195  	}
 43196  
 43197  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 43198  		return SQLITE_ERROR
 43199  	}
 43200  
 43201  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43202  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 43203  		useCost = 1
 43204  	} else {
 43205  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43206  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43207  			return SQLITE_NOMEM
 43208  		}
 43209  		*(*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))
 43210  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43211  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43212  			return *(*int32)(unsafe.Pointer(bp + 96))
 43213  		}
 43214  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43215  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 43216  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43217  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 43218  			return *(*int32)(unsafe.Pointer(bp + 96))
 43219  		}
 43220  	}
 43221  
 43222  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 43223  	if !(zCol != 0) {
 43224  		return SQLITE_NOMEM
 43225  	}
 43226  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43227  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43228  		return SQLITE_NOMEM
 43229  	}
 43230  
 43231  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43232  		var pConstraint uintptr
 43233  		var pUsage uintptr
 43234  		var iCol int32
 43235  
 43236  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43237  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 43238  
 43239  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 43240  			continue
 43241  		}
 43242  
 43243  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 43244  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 43245  			var zNewCol uintptr
 43246  			if iCol >= 0 {
 43247  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43248  			} else {
 43249  				zNewCol = ts + 6427
 43250  			}
 43251  			var zOp uintptr = uintptr(0)
 43252  			useIdx = 1
 43253  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 43254  			case SQLITE_INDEX_CONSTRAINT_EQ:
 43255  				zOp = ts + 27570
 43256  				break
 43257  				fallthrough
 43258  			case SQLITE_INDEX_CONSTRAINT_LT:
 43259  				zOp = ts + 27572
 43260  				break
 43261  				fallthrough
 43262  			case SQLITE_INDEX_CONSTRAINT_GT:
 43263  				zOp = ts + 27574
 43264  				break
 43265  				fallthrough
 43266  			case SQLITE_INDEX_CONSTRAINT_LE:
 43267  				zOp = ts + 27576
 43268  				break
 43269  				fallthrough
 43270  			case SQLITE_INDEX_CONSTRAINT_GE:
 43271  				zOp = ts + 27579
 43272  				break
 43273  				fallthrough
 43274  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 43275  				zOp = ts + 27582
 43276  				break
 43277  				fallthrough
 43278  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 43279  				zOp = ts + 27587
 43280  				break
 43281  				fallthrough
 43282  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 43283  				zOp = ts + 27592
 43284  				break
 43285  				fallthrough
 43286  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43287  				zOp = ts + 6831
 43288  				break
 43289  			}
 43290  			if zOp != 0 {
 43291  				if int32(*(*int8)(unsafe.Pointer(zOp))) == 'L' {
 43292  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 43293  						libc.VaList(bp+24, zSep, zNewCol))
 43294  				} else {
 43295  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 43296  				}
 43297  				string_concat(tls, bp+88, zNew, 1, bp+96)
 43298  				zSep = ts + 9419
 43299  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 43300  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 43301  			}
 43302  		}
 43303  	}
 43304  
 43305  	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) {
 43306  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 43307  		var zNewCol uintptr
 43308  		if iCol >= 0 {
 43309  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 43310  		} else {
 43311  			zNewCol = ts + 6427
 43312  		}
 43313  		var zDir uintptr
 43314  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 43315  			zDir = ts + 27644
 43316  		} else {
 43317  			zDir = ts + 27649
 43318  		}
 43319  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 43320  		string_concat(tls, bp+88, zNew, 1, bp+96)
 43321  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 43322  	}
 43323  
 43324  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 43325  
 43326  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43327  
 43328  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 43329  		return *(*int32)(unsafe.Pointer(bp + 96))
 43330  	}
 43331  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 43332  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 43333  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 43334  	if useCost != 0 {
 43335  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 43336  	} else if useIdx != 0 {
 43337  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 43338  			if nRow&(int32(1)<<ii) != 0 {
 43339  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 43340  			}
 43341  		}
 43342  	} else {
 43343  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 43344  	}
 43345  	return *(*int32)(unsafe.Pointer(bp + 96))
 43346  }
 43347  
 43348  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 43349  	bp := tls.Alloc(136)
 43350  	defer tls.Free(136)
 43351  
 43352  	var pVtab uintptr = tab
 43353  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43354  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 43355  
 43356  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 43357  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 43358  	var bindArgZero int32 = 0
 43359  	var bindArgOne int32 = 0
 43360  	var i int32
 43361  
 43362  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 43363  		return SQLITE_ERROR
 43364  	}
 43365  
 43366  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43367  		var zSep uintptr = ts + 27677
 43368  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43369  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43370  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43371  		}
 43372  
 43373  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 43374  		bindArgZero = 1
 43375  
 43376  		if bindArgOne != 0 {
 43377  			string_concat(tls, bp+96, ts+27692, 0, bp+104)
 43378  			zSep = ts + 4758
 43379  		}
 43380  		for i = 2; i < nData; i++ {
 43381  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 43382  				continue
 43383  			}
 43384  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 43385  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 43386  			zSep = ts + 4758
 43387  		}
 43388  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+104)
 43389  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43390  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43391  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43392  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43393  		}
 43394  		bindArgZero = 1
 43395  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 43396  		var ii int32
 43397  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 43398  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 43399  
 43400  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43401  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 43402  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 43403  		}
 43404  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 43405  			bindArgOne = 1
 43406  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 43407  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 43408  		}
 43409  
 43410  		for ii = 2; ii < nData; ii++ {
 43411  			string_concat(tls, bp+112,
 43412  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 43413  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 43414  						return ts + 97
 43415  					}
 43416  					return ts + 584
 43417  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 43418  			string_concat(tls, bp+120,
 43419  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 43420  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 43421  						return ts + 97
 43422  					}
 43423  					return ts + 584
 43424  				}(), ii)), 1, bp+104)
 43425  		}
 43426  
 43427  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 43428  		string_concat(tls, bp+96, ts+27794, 0, bp+104)
 43429  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 43430  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 43431  	} else {
 43432  		return SQLITE_ERROR
 43433  	}
 43434  
 43435  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43436  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 43437  	}
 43438  
 43439  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 43440  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43441  		if bindArgZero != 0 {
 43442  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 43443  		}
 43444  		if bindArgOne != 0 {
 43445  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 43446  		}
 43447  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 43448  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 43449  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 43450  			}
 43451  		}
 43452  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43453  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43454  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43455  		} else {
 43456  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 43457  		}
 43458  	}
 43459  
 43460  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 43461  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 43462  	}
 43463  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 43464  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 43465  	}
 43466  
 43467  	return *(*int32)(unsafe.Pointer(bp + 104))
 43468  }
 43469  
 43470  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 43471  	bp := tls.Alloc(8)
 43472  	defer tls.Free(8)
 43473  
 43474  	var z uintptr
 43475  	var pVtab uintptr = tab
 43476  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43477  	if z == uintptr(0) {
 43478  		return SQLITE_NOMEM
 43479  	}
 43480  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 43481  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 43482  	sqlite3.Xsqlite3_free(tls, z)
 43483  	return SQLITE_OK
 43484  }
 43485  
 43486  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 43487  	var rc int32
 43488  	var pVtab uintptr = tab
 43489  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43490  	var zVal uintptr
 43491  
 43492  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 43493  		return SQLITE_ERROR
 43494  	}
 43495  
 43496  	rc = echoTransactionCall(tls, tab, ts+27813)
 43497  
 43498  	if rc == SQLITE_OK {
 43499  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 43500  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43501  			rc = SQLITE_ERROR
 43502  		}
 43503  	}
 43504  	if rc == SQLITE_OK {
 43505  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 43506  	}
 43507  	return rc
 43508  }
 43509  
 43510  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 43511  	var rc int32
 43512  	var pVtab uintptr = tab
 43513  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43514  	var zVal uintptr
 43515  
 43516  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 43517  		return SQLITE_ERROR
 43518  	}
 43519  
 43520  	rc = echoTransactionCall(tls, tab, ts+27843)
 43521  
 43522  	if rc == SQLITE_OK {
 43523  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 43524  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43525  			rc = -1
 43526  		}
 43527  	}
 43528  	return rc
 43529  }
 43530  
 43531  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 43532  	var pVtab uintptr = tab
 43533  	var rc int32
 43534  
 43535  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 43536  		return SQLITE_ERROR
 43537  	}
 43538  
 43539  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 43540  	rc = echoTransactionCall(tls, tab, ts+27871)
 43541  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 43542  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43543  	return rc
 43544  }
 43545  
 43546  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 43547  	var rc int32
 43548  	var pVtab uintptr = tab
 43549  
 43550  	rc = echoTransactionCall(tls, tab, ts+27879)
 43551  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43552  	return rc
 43553  }
 43554  
 43555  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 43556  	bp := tls.Alloc(216)
 43557  	defer tls.Free(216)
 43558  
 43559  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 43560  
 43561  	var i int32
 43562  	var rc int32
 43563  	tcl.XTcl_DStringInit(tls, bp)
 43564  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 43565  	for i = 0; i < nArg; i++ {
 43566  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 43567  	}
 43568  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 43569  	tcl.XTcl_DStringFree(tls, bp)
 43570  	if rc != 0 {
 43571  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 43572  	} else {
 43573  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 43574  			-1, libc.UintptrFromInt32(-1))
 43575  	}
 43576  	tcl.XTcl_ResetResult(tls, interp)
 43577  }
 43578  
 43579  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 43580  	bp := tls.Alloc(64)
 43581  	defer tls.Free(64)
 43582  
 43583  	var pVtab uintptr = vtab
 43584  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43585  
 43586  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 43587  		return 0
 43588  	}
 43589  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 43590  		return 0
 43591  	}
 43592  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 43593  		f func(*libc.TLS, uintptr, int32, uintptr)
 43594  	}{overloadedGlobFunction}))
 43595  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 43596  	return 1
 43597  }
 43598  
 43599  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 43600  	bp := tls.Alloc(24)
 43601  	defer tls.Free(24)
 43602  
 43603  	var rc int32 = SQLITE_OK
 43604  	var p uintptr = vtab
 43605  
 43606  	if simulateVtabError(tls, p, ts+27910) != 0 {
 43607  		return SQLITE_ERROR
 43608  	}
 43609  
 43610  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 43611  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 43612  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 43613  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 43614  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43615  		sqlite3.Xsqlite3_free(tls, zSql)
 43616  	}
 43617  
 43618  	return rc
 43619  }
 43620  
 43621  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43622  	return SQLITE_OK
 43623  }
 43624  
 43625  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43626  	return SQLITE_OK
 43627  }
 43628  
 43629  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43630  	return SQLITE_OK
 43631  }
 43632  
 43633  var echoModule = sqlite3_module{
 43634  	FiVersion:      1,
 43635  	FxCreate:       0,
 43636  	FxConnect:      0,
 43637  	FxBestIndex:    0,
 43638  	FxDisconnect:   0,
 43639  	FxDestroy:      0,
 43640  	FxOpen:         0,
 43641  	FxClose:        0,
 43642  	FxFilter:       0,
 43643  	FxNext:         0,
 43644  	FxEof:          0,
 43645  	FxColumn:       0,
 43646  	FxRowid:        0,
 43647  	FxUpdate:       0,
 43648  	FxBegin:        0,
 43649  	FxSync:         0,
 43650  	FxCommit:       0,
 43651  	FxRollback:     0,
 43652  	FxFindFunction: 0,
 43653  	FxRename:       0,
 43654  }
 43655  
 43656  var echoModuleV2 = sqlite3_module{
 43657  	FiVersion:      2,
 43658  	FxCreate:       0,
 43659  	FxConnect:      0,
 43660  	FxBestIndex:    0,
 43661  	FxDisconnect:   0,
 43662  	FxDestroy:      0,
 43663  	FxOpen:         0,
 43664  	FxClose:        0,
 43665  	FxFilter:       0,
 43666  	FxNext:         0,
 43667  	FxEof:          0,
 43668  	FxColumn:       0,
 43669  	FxRowid:        0,
 43670  	FxUpdate:       0,
 43671  	FxBegin:        0,
 43672  	FxSync:         0,
 43673  	FxCommit:       0,
 43674  	FxRollback:     0,
 43675  	FxFindFunction: 0,
 43676  	FxRename:       0,
 43677  	FxSavepoint:    0,
 43678  	FxRelease:      0,
 43679  	FxRollbackTo:   0,
 43680  }
 43681  
 43682  func moduleDestroy(tls *libc.TLS, p uintptr) {
 43683  	var pMod uintptr = p
 43684  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 43685  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 43686  	sqlite3.Xsqlite3_free(tls, p)
 43687  }
 43688  
 43689  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43690  	bp := tls.Alloc(8)
 43691  	defer tls.Free(8)
 43692  
 43693  	var rc int32
 43694  
 43695  	var pMod uintptr
 43696  	if objc != 2 {
 43697  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 43698  		return TCL_ERROR
 43699  	}
 43700  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43701  		return TCL_ERROR
 43702  	}
 43703  
 43704  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43705  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43706  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43707  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 43708  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43709  
 43710  	if rc == SQLITE_OK {
 43711  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43712  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43713  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43714  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 43715  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43716  	}
 43717  
 43718  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43719  	return TCL_OK
 43720  }
 43721  
 43722  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43723  	bp := tls.Alloc(8)
 43724  	defer tls.Free(8)
 43725  
 43726  	var rc int32
 43727  	if objc != 3 {
 43728  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 43729  		return TCL_ERROR
 43730  	}
 43731  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43732  		return TCL_ERROR
 43733  	}
 43734  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 43735  	if rc != SQLITE_OK {
 43736  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 43737  		return TCL_ERROR
 43738  	}
 43739  	return TCL_OK
 43740  }
 43741  
 43742  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 43743  	var i int32
 43744  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 43745  		FzName      uintptr
 43746  		FxProc      uintptr
 43747  		FclientData uintptr
 43748  	}{})); i++ {
 43749  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 43750  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 43751  	}
 43752  	return TCL_OK
 43753  }
 43754  
 43755  var aObjCmd2 = [2]struct {
 43756  	FzName      uintptr
 43757  	FxProc      uintptr
 43758  	FclientData uintptr
 43759  }{
 43760  	{FzName: ts + 27999, FxProc: 0},
 43761  	{FzName: ts + 28020, FxProc: 0},
 43762  }
 43763  
 43764  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43765  	bp := tls.Alloc(32)
 43766  	defer tls.Free(32)
 43767  
 43768  	var zErrFunction uintptr
 43769  
 43770  	var rc int32
 43771  	zErrFunction = ts + 28041
 43772  	if !(objc != 1) {
 43773  		goto __1
 43774  	}
 43775  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43776  	return TCL_ERROR
 43777  __1:
 43778  	;
 43779  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43780  	if !(rc != SQLITE_OK) {
 43781  		goto __2
 43782  	}
 43783  	zErrFunction = ts + 21460
 43784  	goto error_out
 43785  __2:
 43786  	;
 43787  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 43788  	if !(rc != SQLITE_MISUSE) {
 43789  		goto __3
 43790  	}
 43791  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43792  	zErrFunction = ts + 28045
 43793  	goto error_out
 43794  __3:
 43795  	;
 43796  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43797  	return TCL_OK
 43798  
 43799  error_out:
 43800  	tcl.XTcl_ResetResult(tls, interp)
 43801  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43802  	return TCL_ERROR
 43803  }
 43804  
 43805  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43806  	bp := tls.Alloc(24)
 43807  	defer tls.Free(24)
 43808  
 43809  	var p uintptr
 43810  	var zErrFunction uintptr
 43811  	zErrFunction = ts + 28041
 43812  
 43813  	if !(objc != 1) {
 43814  		goto __1
 43815  	}
 43816  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43817  	return TCL_ERROR
 43818  __1:
 43819  	;
 43820  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 43821  	if !!(p != 0) {
 43822  		goto __2
 43823  	}
 43824  	zErrFunction = ts + 28095
 43825  	goto error_out
 43826  __2:
 43827  	;
 43828  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 43829  	if !(p != 0) {
 43830  		goto __3
 43831  	}
 43832  	zErrFunction = ts + 28110
 43833  	goto error_out
 43834  __3:
 43835  	;
 43836  	return TCL_OK
 43837  
 43838  error_out:
 43839  	tcl.XTcl_ResetResult(tls, interp)
 43840  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43841  	return TCL_ERROR
 43842  }
 43843  
 43844  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43845  	bp := tls.Alloc(40)
 43846  	defer tls.Free(40)
 43847  
 43848  	var zErrFunction uintptr
 43849  
 43850  	var rc int32
 43851  	zErrFunction = ts + 28041
 43852  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43853  
 43854  	if !(objc != 1) {
 43855  		goto __1
 43856  	}
 43857  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43858  	return TCL_ERROR
 43859  __1:
 43860  	;
 43861  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43862  	if !(rc != SQLITE_OK) {
 43863  		goto __2
 43864  	}
 43865  	zErrFunction = ts + 21460
 43866  	goto error_out
 43867  __2:
 43868  	;
 43869  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43870  
 43871  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43872  	if !(rc != SQLITE_MISUSE) {
 43873  		goto __3
 43874  	}
 43875  	zErrFunction = ts + 21366
 43876  	goto error_out
 43877  __3:
 43878  	;
 43879  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43880  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43881  	if !(rc != SQLITE_MISUSE) {
 43882  		goto __4
 43883  	}
 43884  	zErrFunction = ts + 21541
 43885  	goto error_out
 43886  __4:
 43887  	;
 43888  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43889  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43890  	if !(rc != SQLITE_MISUSE) {
 43891  		goto __5
 43892  	}
 43893  	zErrFunction = ts + 21575
 43894  	goto error_out
 43895  __5:
 43896  	;
 43897  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43898  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43899  	if !(rc != SQLITE_MISUSE) {
 43900  		goto __6
 43901  	}
 43902  	zErrFunction = ts + 21557
 43903  	goto error_out
 43904  __6:
 43905  	;
 43906  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43907  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43908  	if !(rc != SQLITE_MISUSE) {
 43909  		goto __7
 43910  	}
 43911  	zErrFunction = ts + 21637
 43912  	goto error_out
 43913  __7:
 43914  	;
 43915  	return TCL_OK
 43916  
 43917  error_out:
 43918  	tcl.XTcl_ResetResult(tls, interp)
 43919  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43920  	return TCL_ERROR
 43921  }
 43922  
 43923  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 43924  	var i int32
 43925  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 43926  		FzName      uintptr
 43927  		FxProc      uintptr
 43928  		FclientData uintptr
 43929  	}{})); i++ {
 43930  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 43931  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 43932  	}
 43933  	return TCL_OK
 43934  }
 43935  
 43936  var aObjCmd3 = [3]struct {
 43937  	FzName      uintptr
 43938  	FxProc      uintptr
 43939  	FclientData uintptr
 43940  }{
 43941  	{FzName: ts + 28126, FxProc: 0},
 43942  	{FzName: ts + 28140, FxProc: 0},
 43943  	{FzName: ts + 28155, FxProc: 0},
 43944  }
 43945  
 43946  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 43947  	return TCL_OK
 43948  }
 43949  
 43950  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43951  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 43952  	return SQLITE_OK
 43953  }
 43954  
 43955  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 43956  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 43957  		*(*uintptr)(unsafe.Pointer(&struct {
 43958  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 43959  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 43960  	return TCL_OK
 43961  }
 43962  
 43963  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43964  	bp := tls.Alloc(196)
 43965  	defer tls.Free(196)
 43966  
 43967  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 43968  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 43969  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 43970  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 43971  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 43972  		{},
 43973  	}
 43974  
 43975  	var p uintptr = clientData
 43976  
 43977  	var rc int32
 43978  
 43979  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 43980  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 43981  	if rc != TCL_OK {
 43982  		return rc
 43983  	}
 43984  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 43985  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 43986  		return TCL_ERROR
 43987  	}
 43988  
 43989  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 43990  	case uint32(1):
 43991  		{
 43992  			var zCmdName uintptr
 43993  
 43994  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 43995  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 43996  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 43997  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 43998  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 43999  
 44000  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 44001  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44002  			break
 44003  
 44004  		}
 44005  
 44006  	case uint32(0):
 44007  		{
 44008  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 44009  				return TCL_ERROR
 44010  			}
 44011  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 44012  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44013  			break
 44014  
 44015  		}
 44016  
 44017  	case uint32(2):
 44018  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 44019  		break
 44020  
 44021  	case uint32(3):
 44022  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 44023  		break
 44024  	}
 44025  
 44026  	return TCL_OK
 44027  }
 44028  
 44029  type BackupSubCommand = struct {
 44030  	FzCmd uintptr
 44031  	FeCmd uint32
 44032  	FnArg int32
 44033  	FzArg uintptr
 44034  }
 44035  
 44036  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 44037  	var pBackup uintptr = clientData
 44038  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 44039  }
 44040  
 44041  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44042  	bp := tls.Alloc(32)
 44043  	defer tls.Free(32)
 44044  
 44045  	var pBackup uintptr
 44046  
 44047  	var zDestName uintptr
 44048  	var zSrcName uintptr
 44049  	var zCmd uintptr
 44050  
 44051  	if objc != 6 {
 44052  		tcl.XTcl_WrongNumArgs(tls,
 44053  			interp, 1, objv, ts+28234)
 44054  		return TCL_ERROR
 44055  	}
 44056  
 44057  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44058  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 44059  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44060  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 44061  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 44062  
 44063  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 44064  	if !(pBackup != 0) {
 44065  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 44066  		return TCL_ERROR
 44067  	}
 44068  
 44069  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 44070  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44071  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 44072  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 44073  	return TCL_OK
 44074  }
 44075  
 44076  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 44077  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 44078  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44079  	}{backupTestInit})), uintptr(0), uintptr(0))
 44080  	return TCL_OK
 44081  }
 44082  
 44083  type tcl_vtab1 = struct {
 44084  	Fbase   sqlite3_vtab
 44085  	Finterp uintptr
 44086  	FpCmd   uintptr
 44087  	Fdb     uintptr
 44088  }
 44089  
 44090  type tcl_vtab = tcl_vtab1
 44091  type tcl_cursor1 = struct {
 44092  	Fbase  sqlite3_vtab_cursor
 44093  	FpStmt uintptr
 44094  }
 44095  
 44096  type tcl_cursor = tcl_cursor1
 44097  
 44098  func tclDequote(tls *libc.TLS, z uintptr) {
 44099  	var q int8 = *(*int8)(unsafe.Pointer(z))
 44100  
 44101  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 44102  		var iIn int32 = 1
 44103  		var iOut int32 = 0
 44104  		if int32(q) == '[' {
 44105  			q = int8(']')
 44106  		}
 44107  
 44108  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 44109  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 44110  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 44111  					iIn++
 44112  					break
 44113  				} else {
 44114  					iIn = iIn + 2
 44115  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 44116  				}
 44117  			} else {
 44118  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 44119  			}
 44120  		}
 44121  
 44122  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 44123  	}
 44124  }
 44125  
 44126  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 44127  	bp := tls.Alloc(8)
 44128  	defer tls.Free(8)
 44129  
 44130  	var interp uintptr = pAux
 44131  	var pTab uintptr = uintptr(0)
 44132  	var zCmd uintptr = uintptr(0)
 44133  	var pScript uintptr = uintptr(0)
 44134  	var rc int32 = SQLITE_OK
 44135  
 44136  	if argc != 4 {
 44137  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 44138  		return SQLITE_ERROR
 44139  	}
 44140  
 44141  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44142  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 44143  	if zCmd != 0 && pTab != 0 {
 44144  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 44145  		tclDequote(tls, zCmd)
 44146  		libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})))
 44147  
 44148  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 44149  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 44150  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 44151  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 44152  
 44153  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44154  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44155  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 44156  
 44157  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44158  		if rc != TCL_OK {
 44159  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 44160  			rc = SQLITE_ERROR
 44161  		} else {
 44162  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 44163  		}
 44164  
 44165  		if rc != SQLITE_OK {
 44166  			sqlite3.Xsqlite3_free(tls, pTab)
 44167  			pTab = uintptr(0)
 44168  		}
 44169  	} else {
 44170  		rc = SQLITE_NOMEM
 44171  	}
 44172  
 44173  	sqlite3.Xsqlite3_free(tls, zCmd)
 44174  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 44175  	return rc
 44176  }
 44177  
 44178  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 44179  	var pTab uintptr = pVtab
 44180  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44181  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 44182  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44183  			tcl.XTclFreeObj(tls, _objPtr)
 44184  		}
 44185  	}
 44186  	sqlite3.Xsqlite3_free(tls, pTab)
 44187  	return SQLITE_OK
 44188  }
 44189  
 44190  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 44191  	var pCur uintptr
 44192  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 44193  	if pCur == uintptr(0) {
 44194  		return SQLITE_NOMEM
 44195  	}
 44196  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})))
 44197  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 44198  	return SQLITE_OK
 44199  }
 44200  
 44201  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 44202  	var pCur uintptr = cur
 44203  	if pCur != 0 {
 44204  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 44205  		sqlite3.Xsqlite3_free(tls, pCur)
 44206  	}
 44207  	return SQLITE_OK
 44208  }
 44209  
 44210  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44211  	bp := tls.Alloc(8)
 44212  	defer tls.Free(8)
 44213  
 44214  	var pCsr uintptr = pVtabCursor
 44215  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 44216  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44217  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44218  		if rc != SQLITE_ROW {
 44219  			var zErr uintptr
 44220  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44221  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 44222  			if rc != SQLITE_OK {
 44223  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44224  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44225  			}
 44226  		}
 44227  	}
 44228  	return SQLITE_OK
 44229  }
 44230  
 44231  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 44232  	bp := tls.Alloc(56)
 44233  	defer tls.Free(56)
 44234  
 44235  	var pCsr uintptr = pVtabCursor
 44236  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44237  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44238  	var pScript uintptr
 44239  	var pArg uintptr
 44240  	var ii int32
 44241  	var rc int32
 44242  
 44243  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44244  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44245  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 44246  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 44247  	if idxStr != 0 {
 44248  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 44249  	} else {
 44250  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 44251  	}
 44252  
 44253  	pArg = tcl.XTcl_NewObj(tls)
 44254  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 44255  	for ii = 0; ii < argc; ii++ {
 44256  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 44257  		var pVal uintptr
 44258  		if zVal == uintptr(0) {
 44259  			pVal = tcl.XTcl_NewObj(tls)
 44260  			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) {
 44261  				var pVal2 uintptr = uintptr(0)
 44262  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 44263  				if zVal != 0 {
 44264  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44265  				} else {
 44266  					pVal2 = tcl.XTcl_NewObj(tls)
 44267  				}
 44268  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 44269  			}
 44270  		} else {
 44271  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44272  		}
 44273  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 44274  	}
 44275  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 44276  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44277  		var _objPtr uintptr = pArg
 44278  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44279  			tcl.XTclFreeObj(tls, _objPtr)
 44280  		}
 44281  	}
 44282  
 44283  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44284  	if rc != TCL_OK {
 44285  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44286  		rc = SQLITE_ERROR
 44287  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44288  	} else {
 44289  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44290  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 44291  
 44292  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 44293  		if rc != TCL_OK {
 44294  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44295  			rc = SQLITE_ERROR
 44296  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44297  		} else {
 44298  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 44299  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 44300  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 44301  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 44302  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 44303  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 44304  					if rc != SQLITE_OK {
 44305  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44306  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 44307  					}
 44308  				} else {
 44309  					rc = SQLITE_ERROR
 44310  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 44311  				}
 44312  			}
 44313  		}
 44314  	}
 44315  
 44316  	if rc == SQLITE_OK {
 44317  		rc = tclNext(tls, pVtabCursor)
 44318  	}
 44319  	return rc
 44320  }
 44321  
 44322  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 44323  	var pCsr uintptr = pVtabCursor
 44324  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 44325  	return SQLITE_OK
 44326  }
 44327  
 44328  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 44329  	var pCsr uintptr = pVtabCursor
 44330  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 44331  	return SQLITE_OK
 44332  }
 44333  
 44334  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44335  	var pCsr uintptr = pVtabCursor
 44336  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 44337  }
 44338  
 44339  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44340  	var ii int32
 44341  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44342  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44343  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 44344  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 44345  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44346  		var zOp uintptr = ts + 3405
 44347  
 44348  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44349  
 44350  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 44351  		case SQLITE_INDEX_CONSTRAINT_EQ:
 44352  			zOp = ts + 28365
 44353  			break
 44354  		case SQLITE_INDEX_CONSTRAINT_GT:
 44355  			zOp = ts + 28368
 44356  			break
 44357  		case SQLITE_INDEX_CONSTRAINT_LE:
 44358  			zOp = ts + 28371
 44359  			break
 44360  		case SQLITE_INDEX_CONSTRAINT_LT:
 44361  			zOp = ts + 28374
 44362  			break
 44363  		case SQLITE_INDEX_CONSTRAINT_GE:
 44364  			zOp = ts + 28377
 44365  			break
 44366  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 44367  			zOp = ts + 28380
 44368  			break
 44369  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 44370  			zOp = ts + 27587
 44371  			break
 44372  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 44373  			zOp = ts + 27592
 44374  			break
 44375  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 44376  			zOp = ts + 6831
 44377  			break
 44378  		case SQLITE_INDEX_CONSTRAINT_NE:
 44379  			zOp = ts + 28386
 44380  			break
 44381  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 44382  			zOp = ts + 28389
 44383  			break
 44384  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 44385  			zOp = ts + 28395
 44386  			break
 44387  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 44388  			zOp = ts + 28405
 44389  			break
 44390  		case SQLITE_INDEX_CONSTRAINT_IS:
 44391  			zOp = ts + 5851
 44392  			break
 44393  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 44394  			zOp = ts + 28412
 44395  			break
 44396  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 44397  			zOp = ts + 28418
 44398  			break
 44399  		}
 44400  
 44401  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 44402  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 44403  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44404  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 44405  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 44406  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 44407  
 44408  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44409  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44410  			var _objPtr uintptr = pElem
 44411  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44412  				tcl.XTclFreeObj(tls, _objPtr)
 44413  			}
 44414  		}
 44415  	}
 44416  
 44417  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44418  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44419  		var _objPtr uintptr = pRes
 44420  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44421  			tcl.XTclFreeObj(tls, _objPtr)
 44422  		}
 44423  	}
 44424  }
 44425  
 44426  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44427  	var ii int32
 44428  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44429  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44430  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 44431  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 44432  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44433  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44434  
 44435  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44436  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 44437  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 44438  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 44439  
 44440  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44441  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44442  			var _objPtr uintptr = pElem
 44443  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44444  				tcl.XTclFreeObj(tls, _objPtr)
 44445  			}
 44446  		}
 44447  	}
 44448  
 44449  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44450  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44451  		var _objPtr uintptr = pRes
 44452  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44453  			tcl.XTclFreeObj(tls, _objPtr)
 44454  		}
 44455  	}
 44456  }
 44457  
 44458  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44459  	bp := tls.Alloc(80)
 44460  	defer tls.Free(80)
 44461  
 44462  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 44463  		ts + 28444,
 44464  		ts + 28456,
 44465  		ts + 28464,
 44466  		ts + 28469,
 44467  		ts + 28478,
 44468  		ts + 28481,
 44469  		uintptr(0),
 44470  	}
 44471  
 44472  	var pIdxInfo uintptr = clientData
 44473  
 44474  	if objc < 2 {
 44475  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 44476  		return TCL_ERROR
 44477  	}
 44478  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+56) != 0 {
 44479  		return TCL_ERROR
 44480  	}
 44481  
 44482  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 44483  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 44484  		return TCL_ERROR
 44485  	}
 44486  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 44487  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 44488  		return TCL_ERROR
 44489  	}
 44490  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 44491  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 44492  		return TCL_ERROR
 44493  	}
 44494  
 44495  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 44496  	case 0:
 44497  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 44498  		break
 44499  
 44500  	case 1:
 44501  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 44502  		break
 44503  
 44504  	case 2:
 44505  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 44506  		break
 44507  
 44508  	case 3:
 44509  		{
 44510  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 44511  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 44512  			break
 44513  
 44514  		}
 44515  
 44516  	case 4:
 44517  		{
 44518  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 44519  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 44520  				return TCL_ERROR
 44521  			}
 44522  			tcl.XTcl_SetObjResult(tls, interp,
 44523  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 44524  			break
 44525  
 44526  		}
 44527  
 44528  	case 5:
 44529  		{
 44530  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 44531  			var rc int32
 44532  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 44533  			var zVal uintptr = ts + 584
 44534  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 44535  				return TCL_ERROR
 44536  			}
 44537  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 44538  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 44539  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44540  				return TCL_ERROR
 44541  			}
 44542  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 44543  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 44544  			} else if objc == 4 {
 44545  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44546  			}
 44547  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 44548  			break
 44549  
 44550  		}
 44551  	}
 44552  
 44553  	return TCL_OK
 44554  }
 44555  
 44556  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 44557  	bp := tls.Alloc(108)
 44558  	defer tls.Free(108)
 44559  
 44560  	var pTab uintptr = tab
 44561  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44562  	var rc int32 = SQLITE_OK
 44563  
 44564  	var pScript uintptr
 44565  
 44566  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44567  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44568  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 44569  
 44570  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]int8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 44571  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 44572  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44573  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 44574  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 44575  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44576  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 44577  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44578  		var _objPtr uintptr = pScript
 44579  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44580  			tcl.XTclFreeObj(tls, _objPtr)
 44581  		}
 44582  	}
 44583  
 44584  	if rc != TCL_OK {
 44585  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44586  		rc = SQLITE_ERROR
 44587  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44588  	} else {
 44589  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44590  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 44591  
 44592  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 44593  		if rc != TCL_OK {
 44594  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44595  			rc = SQLITE_ERROR
 44596  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 44597  		} else {
 44598  			var ii int32
 44599  			var iArgv int32 = 1
 44600  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 44601  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 44602  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 44603  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 44604  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 44605  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 44606  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 44607  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 44608  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 44609  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 44610  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 44611  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 44612  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 44613  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 44614  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 44615  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 44616  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 44617  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 44618  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 44619  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 44620  					if rc == SQLITE_OK {
 44621  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 44622  							rc = SQLITE_ERROR
 44623  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 44624  						} else {
 44625  							var bOmit int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*int8)(unsafe.Pointer(zCmd))) == 'O')
 44626  							(*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)
 44627  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 44628  						}
 44629  					}
 44630  				} else {
 44631  					rc = SQLITE_ERROR
 44632  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 44633  				}
 44634  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 44635  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44636  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 44637  				}
 44638  			}
 44639  		}
 44640  	}
 44641  
 44642  	return rc
 44643  }
 44644  
 44645  var iNext int32 = 43
 44646  
 44647  var tclModule = sqlite3_module{
 44648  	FxCreate:     0,
 44649  	FxConnect:    0,
 44650  	FxBestIndex:  0,
 44651  	FxDisconnect: 0,
 44652  	FxDestroy:    0,
 44653  	FxOpen:       0,
 44654  	FxClose:      0,
 44655  	FxFilter:     0,
 44656  	FxNext:       0,
 44657  	FxEof:        0,
 44658  	FxColumn:     0,
 44659  	FxRowid:      0,
 44660  }
 44661  
 44662  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44663  	bp := tls.Alloc(8)
 44664  	defer tls.Free(8)
 44665  
 44666  	if objc != 2 {
 44667  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44668  		return TCL_ERROR
 44669  	}
 44670  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44671  		return TCL_ERROR
 44672  	}
 44673  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 44674  	return TCL_OK
 44675  }
 44676  
 44677  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 44678  	var i int32
 44679  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 44680  		FzName      uintptr
 44681  		FxProc      uintptr
 44682  		FclientData uintptr
 44683  	}{})); i++ {
 44684  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 44685  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 44686  	}
 44687  	return TCL_OK
 44688  }
 44689  
 44690  var aObjCmd4 = [1]struct {
 44691  	FzName      uintptr
 44692  	FxProc      uintptr
 44693  	FclientData uintptr
 44694  }{
 44695  	{FzName: ts + 28585, FxProc: 0},
 44696  }
 44697  
 44698  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 44699  	bp := tls.Alloc(8)
 44700  	defer tls.Free(8)
 44701  
 44702  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 44703  	return uintptr(unsafe.Pointer(&buf))
 44704  }
 44705  
 44706  var buf [100]int8
 44707  
 44708  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 44709  	bp := tls.Alloc(8)
 44710  	defer tls.Free(8)
 44711  
 44712  	var z uintptr
 44713  
 44714  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44715  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 44716  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 44717  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint64(9)) {
 44718  		var channel Tcl_Channel
 44719  		var instanceData ClientData
 44720  
 44721  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 44722  		if !(channel != 0) {
 44723  			return TCL_ERROR
 44724  		}
 44725  
 44726  		tcl.XTcl_Flush(tls, channel)
 44727  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 44728  
 44729  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 44730  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 44731  	} else {
 44732  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 44733  	}
 44734  
 44735  	return TCL_OK
 44736  }
 44737  
 44738  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 44739  	bp := tls.Alloc(4)
 44740  	defer tls.Free(4)
 44741  
 44742  	var z uintptr
 44743  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44744  	return func() uintptr {
 44745  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 44746  			return z
 44747  		}
 44748  		return uintptr(0)
 44749  	}()
 44750  }
 44751  
 44752  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44753  	bp := tls.Alloc(40)
 44754  	defer tls.Free(40)
 44755  
 44756  	var zDb uintptr
 44757  	var zTable uintptr
 44758  	var zColumn uintptr
 44759  
 44760  	var zVarname uintptr
 44761  
 44762  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 44763  	var rc int32
 44764  
 44765  	if objc != 8 {
 44766  		var zUsage uintptr = ts + 28615
 44767  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 44768  		return TCL_ERROR
 44769  	}
 44770  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 44771  		return TCL_ERROR
 44772  	}
 44773  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 44774  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44775  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 44776  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 44777  		return TCL_ERROR
 44778  	}
 44779  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 44780  		return TCL_ERROR
 44781  	}
 44782  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 44783  
 44784  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 44785  		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)
 44786  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 44787  	} else {
 44788  		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))
 44789  	}
 44790  
 44791  	if rc == SQLITE_OK {
 44792  		tcl.XTcl_ResetResult(tls, interp)
 44793  	} else {
 44794  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44795  		return TCL_ERROR
 44796  	}
 44797  	return TCL_OK
 44798  }
 44799  
 44800  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44801  	bp := tls.Alloc(8)
 44802  	defer tls.Free(8)
 44803  
 44804  	var rc int32
 44805  
 44806  	if objc != 2 {
 44807  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44808  		return TCL_ERROR
 44809  	}
 44810  
 44811  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44812  		return TCL_ERROR
 44813  	}
 44814  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44815  
 44816  	if rc != 0 {
 44817  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44818  	} else {
 44819  		tcl.XTcl_ResetResult(tls, interp)
 44820  	}
 44821  	return TCL_OK
 44822  }
 44823  
 44824  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44825  	bp := tls.Alloc(8)
 44826  	defer tls.Free(8)
 44827  
 44828  	var nByte int32
 44829  
 44830  	if objc != 2 {
 44831  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44832  		return TCL_ERROR
 44833  	}
 44834  
 44835  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44836  		return TCL_ERROR
 44837  	}
 44838  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44839  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 44840  
 44841  	return TCL_OK
 44842  }
 44843  
 44844  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44845  	bp := tls.Alloc(32)
 44846  	defer tls.Free(32)
 44847  
 44848  	var zBuf uintptr = uintptr(0)
 44849  	var rc int32
 44850  
 44851  	if objc != 4 {
 44852  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 44853  		return TCL_ERROR
 44854  	}
 44855  
 44856  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 44857  		return TCL_ERROR
 44858  	}
 44859  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 44860  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 44861  		return TCL_ERROR
 44862  	}
 44863  
 44864  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 44865  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 44866  		if zBuf == uintptr(0) {
 44867  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 44868  			return TCL_ERROR
 44869  		}
 44870  	}
 44871  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 44872  	if rc == SQLITE_OK {
 44873  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 44874  	} else {
 44875  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44876  	}
 44877  	tcl.XTcl_Free(tls, zBuf)
 44878  
 44879  	return func() int32 {
 44880  		if rc == SQLITE_OK {
 44881  			return TCL_OK
 44882  		}
 44883  		return TCL_ERROR
 44884  	}()
 44885  }
 44886  
 44887  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44888  	bp := tls.Alloc(16)
 44889  	defer tls.Free(16)
 44890  
 44891  	var rc int32
 44892  	var zBuf uintptr
 44893  
 44894  	if objc != 4 && objc != 5 {
 44895  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 44896  		return TCL_ERROR
 44897  	}
 44898  
 44899  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44900  		return TCL_ERROR
 44901  	}
 44902  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 44903  		return TCL_ERROR
 44904  	}
 44905  
 44906  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 44907  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 44908  		return TCL_ERROR
 44909  	}
 44910  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 44911  	if rc != SQLITE_OK {
 44912  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44913  	}
 44914  
 44915  	return func() int32 {
 44916  		if rc == SQLITE_OK {
 44917  			return TCL_OK
 44918  		}
 44919  		return TCL_ERROR
 44920  	}()
 44921  }
 44922  
 44923  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 44924  	var i int32
 44925  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 44926  		FzName uintptr
 44927  		FxProc uintptr
 44928  	}{})); i++ {
 44929  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 44930  	}
 44931  	return TCL_OK
 44932  }
 44933  
 44934  var aObjCmd5 = [5]struct {
 44935  	FzName uintptr
 44936  	FxProc uintptr
 44937  }{
 44938  	{FzName: ts + 28772, FxProc: 0},
 44939  	{FzName: ts + 28790, FxProc: 0},
 44940  	{FzName: ts + 28809, FxProc: 0},
 44941  	{FzName: ts + 28828, FxProc: 0},
 44942  	{FzName: ts + 28846, FxProc: 0},
 44943  }
 44944  
 44945  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44946  	var pBt uintptr
 44947  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 44948  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 44949  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 44950  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 44951  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 44952  	}
 44953  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 44954  	return TCL_OK
 44955  }
 44956  
 44957  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 44958  }
 44959  
 44960  func set_options(tls *libc.TLS, interp uintptr) {
 44961  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+28899,
 44962  		TCL_GLOBAL_ONLY)
 44963  
 44964  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28901, ts+14193, TCL_GLOBAL_ONLY)
 44965  
 44966  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28909, ts+14193, TCL_GLOBAL_ONLY)
 44967  
 44968  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28927, ts+28940, TCL_GLOBAL_ONLY)
 44969  
 44970  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28944, ts+28899, TCL_GLOBAL_ONLY)
 44971  
 44972  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 44973  
 44974  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 44975  
 44976  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 44977  
 44978  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 44979  
 44980  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28899, TCL_GLOBAL_ONLY)
 44981  
 44982  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28899, TCL_GLOBAL_ONLY)
 44983  
 44984  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28899, TCL_GLOBAL_ONLY)
 44985  
 44986  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+28899, TCL_GLOBAL_ONLY)
 44987  
 44988  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 44989  		ts+29060, TCL_GLOBAL_ONLY)
 44990  
 44991  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 44992  
 44993  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 44994  
 44995  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 44996  
 44997  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 44998  
 44999  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28899, TCL_GLOBAL_ONLY)
 45000  
 45001  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28899, TCL_GLOBAL_ONLY)
 45002  
 45003  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 45004  
 45005  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 45006  
 45007  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28899, TCL_GLOBAL_ONLY)
 45008  
 45009  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28899, TCL_GLOBAL_ONLY)
 45010  
 45011  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28899, TCL_GLOBAL_ONLY)
 45012  
 45013  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28899, TCL_GLOBAL_ONLY)
 45014  
 45015  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28899, TCL_GLOBAL_ONLY)
 45016  
 45017  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28899, TCL_GLOBAL_ONLY)
 45018  
 45019  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28899, TCL_GLOBAL_ONLY)
 45020  
 45021  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 45022  
 45023  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 45024  
 45025  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28899, TCL_GLOBAL_ONLY)
 45026  
 45027  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28899, TCL_GLOBAL_ONLY)
 45028  
 45029  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 45030  
 45031  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 45032  
 45033  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28899, TCL_GLOBAL_ONLY)
 45034  
 45035  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28899, TCL_GLOBAL_ONLY)
 45036  
 45037  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28899, TCL_GLOBAL_ONLY)
 45038  
 45039  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28899, TCL_GLOBAL_ONLY)
 45040  
 45041  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28899, TCL_GLOBAL_ONLY)
 45042  
 45043  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28899, TCL_GLOBAL_ONLY)
 45044  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 45045  		ts+14193, TCL_GLOBAL_ONLY)
 45046  
 45047  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28899, TCL_GLOBAL_ONLY)
 45048  
 45049  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28899, TCL_GLOBAL_ONLY)
 45050  
 45051  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28899, TCL_GLOBAL_ONLY)
 45052  
 45053  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28899, TCL_GLOBAL_ONLY)
 45054  
 45055  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28899, TCL_GLOBAL_ONLY)
 45056  
 45057  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28899, TCL_GLOBAL_ONLY)
 45058  
 45059  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28899, TCL_GLOBAL_ONLY)
 45060  
 45061  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 45062  		TCL_GLOBAL_ONLY)
 45063  
 45064  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28899, TCL_GLOBAL_ONLY)
 45065  
 45066  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28899, TCL_GLOBAL_ONLY)
 45067  
 45068  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28899, TCL_GLOBAL_ONLY)
 45069  
 45070  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28899, TCL_GLOBAL_ONLY)
 45071  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28899, TCL_GLOBAL_ONLY)
 45072  
 45073  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28899, TCL_GLOBAL_ONLY)
 45074  
 45075  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28899, TCL_GLOBAL_ONLY)
 45076  
 45077  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28899, TCL_GLOBAL_ONLY)
 45078  
 45079  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28899, TCL_GLOBAL_ONLY)
 45080  
 45081  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28899, TCL_GLOBAL_ONLY)
 45082  
 45083  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28899, TCL_GLOBAL_ONLY)
 45084  
 45085  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28899, TCL_GLOBAL_ONLY)
 45086  
 45087  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 45088  
 45089  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 45090  
 45091  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 45092  
 45093  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28899, TCL_GLOBAL_ONLY)
 45094  
 45095  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 45096  
 45097  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28899, TCL_GLOBAL_ONLY)
 45098  
 45099  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28899, TCL_GLOBAL_ONLY)
 45100  
 45101  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 45102  
 45103  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 45104  
 45105  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28899, TCL_GLOBAL_ONLY)
 45106  
 45107  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28899, TCL_GLOBAL_ONLY)
 45108  
 45109  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 45110  
 45111  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28899, TCL_GLOBAL_ONLY)
 45112  
 45113  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 45114  
 45115  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28899, TCL_GLOBAL_ONLY)
 45116  
 45117  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28899, TCL_GLOBAL_ONLY)
 45118  
 45119  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 45120  		func() uintptr {
 45121  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 45122  				return ts + 28899
 45123  			}
 45124  			return ts + 14193
 45125  		}(),
 45126  		TCL_GLOBAL_ONLY)
 45127  
 45128  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28899, TCL_GLOBAL_ONLY)
 45129  
 45130  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28899, TCL_GLOBAL_ONLY)
 45131  
 45132  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28899, TCL_GLOBAL_ONLY)
 45133  
 45134  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 45135  
 45136  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28899, TCL_GLOBAL_ONLY)
 45137  
 45138  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28899, TCL_GLOBAL_ONLY)
 45139  
 45140  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28899, TCL_GLOBAL_ONLY)
 45141  
 45142  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28899, TCL_GLOBAL_ONLY)
 45143  
 45144  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28899, TCL_GLOBAL_ONLY)
 45145  
 45146  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28899, TCL_GLOBAL_ONLY)
 45147  
 45148  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28899, TCL_GLOBAL_ONLY)
 45149  
 45150  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 45151  
 45152  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28899, TCL_GLOBAL_ONLY)
 45153  
 45154  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28899, TCL_GLOBAL_ONLY)
 45155  
 45156  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28899, TCL_GLOBAL_ONLY)
 45157  
 45158  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28899, TCL_GLOBAL_ONLY)
 45159  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28899, TCL_GLOBAL_ONLY)
 45160  
 45161  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 45162  
 45163  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 45164  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 45165  
 45166  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28899, TCL_GLOBAL_ONLY)
 45167  
 45168  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28899, TCL_GLOBAL_ONLY)
 45169  
 45170  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28899, TCL_GLOBAL_ONLY)
 45171  
 45172  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 45173  		func() uintptr {
 45174  			if 1 != 0 {
 45175  				return ts + 28899
 45176  			}
 45177  			return ts + 14193
 45178  		}(), TCL_GLOBAL_ONLY)
 45179  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 45180  		func() uintptr {
 45181  			if SQLITE_THREADSAFE == 1 {
 45182  				return ts + 28899
 45183  			}
 45184  			return ts + 14193
 45185  		}(), TCL_GLOBAL_ONLY)
 45186  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 45187  		func() uintptr {
 45188  			if SQLITE_THREADSAFE == 2 {
 45189  				return ts + 28899
 45190  			}
 45191  			return ts + 14193
 45192  		}(), TCL_GLOBAL_ONLY)
 45193  
 45194  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28899, TCL_GLOBAL_ONLY)
 45195  
 45196  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28899, TCL_GLOBAL_ONLY)
 45197  
 45198  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28899, TCL_GLOBAL_ONLY)
 45199  
 45200  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28899, TCL_GLOBAL_ONLY)
 45201  
 45202  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28899, TCL_GLOBAL_ONLY)
 45203  
 45204  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28899, TCL_GLOBAL_ONLY)
 45205  
 45206  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28899, TCL_GLOBAL_ONLY)
 45207  
 45208  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28899, TCL_GLOBAL_ONLY)
 45209  
 45210  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28899, TCL_GLOBAL_ONLY)
 45211  
 45212  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28899, TCL_GLOBAL_ONLY)
 45213  
 45214  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 45215  
 45216  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28899, TCL_GLOBAL_ONLY)
 45217  
 45218  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 45219  
 45220  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 45221  
 45222  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 45223  
 45224  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 45225  
 45226  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 45227  
 45228  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 45229  
 45230  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 45231  
 45232  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 45233  
 45234  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28899, TCL_GLOBAL_ONLY)
 45235  
 45236  	{
 45237  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45238  	}
 45239  
 45240  	{
 45241  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45242  	}
 45243  
 45244  	{
 45245  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45246  	}
 45247  
 45248  	{
 45249  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45250  	}
 45251  
 45252  	{
 45253  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45254  	}
 45255  
 45256  	{
 45257  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45258  	}
 45259  
 45260  	{
 45261  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45262  	}
 45263  
 45264  	{
 45265  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45266  	}
 45267  
 45268  	{
 45269  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45270  	}
 45271  
 45272  	{
 45273  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45274  	}
 45275  
 45276  	{
 45277  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45278  	}
 45279  
 45280  	{
 45281  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45282  	}
 45283  
 45284  	{
 45285  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45286  	}
 45287  
 45288  	{
 45289  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45290  	}
 45291  
 45292  	{
 45293  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45294  	}
 45295  
 45296  	{
 45297  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45298  	}
 45299  
 45300  	{
 45301  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45302  	}
 45303  
 45304  	{
 45305  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45306  	}
 45307  
 45308  	{
 45309  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45310  	}
 45311  
 45312  	{
 45313  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45314  	}
 45315  
 45316  	{
 45317  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 45318  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45319  
 45320  	}
 45321  
 45322  	{
 45323  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 45324  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45325  
 45326  	}
 45327  }
 45328  
 45329  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 45330  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 45331  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 45332  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 45333  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 45334  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 45335  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 45336  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 45337  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 45338  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 45339  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 45340  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 45341  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 45342  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 45343  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 45344  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45345  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45346  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 45347  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 45348  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 45349  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 45350  var cv___GNUC__ int32 = 1
 45351  
 45352  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 45353  	set_options(tls, interp)
 45354  	return TCL_OK
 45355  }
 45356  
 45357  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 45358  	var i int32
 45359  	var sz int32
 45360  	sz = int32(libc.Xstrlen(tls, z))
 45361  	for i = sz - 1; i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 45362  	}
 45363  	if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 45364  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4))
 45365  	}
 45366  }
 45367  
 45368  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 45369  	var rc int32 = SQLITE_ERROR
 45370  
 45371  	rc = libc.Xaccess(tls, zFile, F_OK)
 45372  	if rc != 0 {
 45373  		if *(*int32)(unsafe.Pointer(libc.X__error(tls))) == ENOENT {
 45374  			if pbExists != 0 {
 45375  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 45376  			}
 45377  			rc = SQLITE_OK
 45378  		}
 45379  	} else {
 45380  		if pbExists != 0 {
 45381  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 45382  		}
 45383  		rc = libc.Xunlink(tls, zFile)
 45384  	}
 45385  	return rc
 45386  }
 45387  
 45388  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 45389  	bp := tls.Alloc(156)
 45390  	defer tls.Free(156)
 45391  
 45392  	var zBuf uintptr
 45393  	var nBuf int32
 45394  	var rc int32 = 0
 45395  	var i int32
 45396  
 45397  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 45398  
 45399  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 45400  		{FzFmt: ts + 30634},
 45401  		{FzFmt: ts + 30641},
 45402  		{FzFmt: ts + 30656},
 45403  		{FzFmt: ts + 30634, Fb83: 1},
 45404  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 45405  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 45406  	}
 45407  
 45408  	var pVfs uintptr = uintptr(0)
 45409  
 45410  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 45411  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 45412  	if zBuf == uintptr(0) {
 45413  		return SQLITE_NOMEM
 45414  	}
 45415  
 45416  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 45417  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 45418  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45419  		if rc == 0 && i != 0 {
 45420  			sqlite3Delete83Name(tls, zBuf)
 45421  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45422  		}
 45423  	}
 45424  
 45425  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 45426  		var p uintptr = bp + 56 + uintptr(i)*16
 45427  		var iChunk int32
 45428  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 45429  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 45430  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 45431  				sqlite3Delete83Name(tls, zBuf)
 45432  			}
 45433  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 45434  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 45435  				break
 45436  			}
 45437  		}
 45438  	}
 45439  
 45440  	sqlite3.Xsqlite3_free(tls, zBuf)
 45441  	return func() int32 {
 45442  		if rc != 0 {
 45443  			return SQLITE_ERROR
 45444  		}
 45445  		return SQLITE_OK
 45446  	}()
 45447  }
 45448  
 45449  type MFile = struct {
 45450  	FzFmt    uintptr
 45451  	FiOffset int32
 45452  	Fb83     int32
 45453  }
 45454  
 45455  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 45456  	return TCL_OK
 45457  }
 45458  
 45459  type devsym_file1 = struct {
 45460  	Fbase  sqlite3_file
 45461  	FpReal uintptr
 45462  }
 45463  
 45464  type devsym_file = devsym_file1
 45465  
 45466  type DevsymGlobal = struct {
 45467  	FpVfs        uintptr
 45468  	FiDeviceChar int32
 45469  	FiSectorSize int32
 45470  	FnWriteCrash int32
 45471  	F__ccgo_pad1 [4]byte
 45472  }
 45473  
 45474  var g1 = DevsymGlobal{FiSectorSize: 512}
 45475  
 45476  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 45477  	var p uintptr = pFile
 45478  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45479  	return SQLITE_OK
 45480  }
 45481  
 45482  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45483  	var p uintptr = pFile
 45484  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45485  }
 45486  
 45487  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45488  	var p uintptr = pFile
 45489  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45490  }
 45491  
 45492  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 45493  	var p uintptr = pFile
 45494  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 45495  }
 45496  
 45497  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 45498  	var p uintptr = pFile
 45499  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 45500  }
 45501  
 45502  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 45503  	var p uintptr = pFile
 45504  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 45505  }
 45506  
 45507  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45508  	var p uintptr = pFile
 45509  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45510  }
 45511  
 45512  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45513  	var p uintptr = pFile
 45514  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45515  }
 45516  
 45517  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 45518  	var p uintptr = pFile
 45519  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 45520  }
 45521  
 45522  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 45523  	var p uintptr = pFile
 45524  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 45525  }
 45526  
 45527  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45528  	return g1.FiSectorSize
 45529  }
 45530  
 45531  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45532  	return g1.FiDeviceChar
 45533  }
 45534  
 45535  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 45536  	var p uintptr = pFile
 45537  	return (*struct {
 45538  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 45539  	})(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)
 45540  }
 45541  
 45542  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 45543  	var p uintptr = pFile
 45544  	return (*struct {
 45545  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 45546  	})(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)
 45547  }
 45548  
 45549  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 45550  	var p uintptr = pFile
 45551  	(*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)
 45552  }
 45553  
 45554  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 45555  	var p uintptr = pFile
 45556  	return (*struct {
 45557  		f func(*libc.TLS, uintptr, int32) int32
 45558  	})(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)
 45559  }
 45560  
 45561  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45562  	var rc int32
 45563  	var p uintptr = pFile
 45564  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45565  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45566  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45567  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 45568  	}
 45569  	return rc
 45570  }
 45571  
 45572  var devsym_io_methods = sqlite3_io_methods{
 45573  	FiVersion:               2,
 45574  	FxClose:                 0,
 45575  	FxRead:                  0,
 45576  	FxWrite:                 0,
 45577  	FxTruncate:              0,
 45578  	FxSync:                  0,
 45579  	FxFileSize:              0,
 45580  	FxLock:                  0,
 45581  	FxUnlock:                0,
 45582  	FxCheckReservedLock:     0,
 45583  	FxFileControl:           0,
 45584  	FxSectorSize:            0,
 45585  	FxDeviceCharacteristics: 0,
 45586  	FxShmMap:                0,
 45587  	FxShmLock:               0,
 45588  	FxShmBarrier:            0,
 45589  	FxShmUnmap:              0,
 45590  }
 45591  
 45592  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 45593  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 45594  }
 45595  
 45596  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 45597  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 45598  }
 45599  
 45600  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 45601  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 45602  }
 45603  
 45604  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 45605  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 45606  }
 45607  
 45608  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 45609  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 45610  }
 45611  
 45612  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 45613  	return (*struct {
 45614  		f func(*libc.TLS, uintptr, uintptr) int32
 45615  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 45616  }
 45617  
 45618  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45619  	var p uintptr = pFile
 45620  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45621  }
 45622  
 45623  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45624  	var p uintptr = pFile
 45625  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45626  }
 45627  
 45628  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45629  	var p uintptr = pFile
 45630  	if g1.FnWriteCrash > 0 {
 45631  		g1.FnWriteCrash--
 45632  		if g1.FnWriteCrash == 0 {
 45633  			libc.Xabort(tls)
 45634  		}
 45635  	}
 45636  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45637  }
 45638  
 45639  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45640  	var rc int32
 45641  	var p uintptr = pFile
 45642  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45643  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45644  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45645  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 45646  	}
 45647  	return rc
 45648  }
 45649  
 45650  var writecrash_io_methods = sqlite3_io_methods{
 45651  	FiVersion:               2,
 45652  	FxClose:                 0,
 45653  	FxRead:                  0,
 45654  	FxWrite:                 0,
 45655  	FxTruncate:              0,
 45656  	FxSync:                  0,
 45657  	FxFileSize:              0,
 45658  	FxLock:                  0,
 45659  	FxUnlock:                0,
 45660  	FxCheckReservedLock:     0,
 45661  	FxFileControl:           0,
 45662  	FxSectorSize:            0,
 45663  	FxDeviceCharacteristics: 0,
 45664  	FxShmMap:                0,
 45665  	FxShmLock:               0,
 45666  	FxShmBarrier:            0,
 45667  	FxShmUnmap:              0,
 45668  }
 45669  
 45670  var devsym_vfs = sqlite3_vfs{
 45671  	FiVersion:      2,
 45672  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45673  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45674  	FzName:         ts + 30667,
 45675  	FxOpen:         0,
 45676  	FxDelete:       0,
 45677  	FxAccess:       0,
 45678  	FxFullPathname: 0,
 45679  	FxRandomness:   0,
 45680  	FxSleep:        0,
 45681  	FxCurrentTime:  0,
 45682  }
 45683  
 45684  var writecrash_vfs = sqlite3_vfs{
 45685  	FiVersion:      2,
 45686  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45687  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45688  	FzName:         ts + 30674,
 45689  	FxOpen:         0,
 45690  	FxDelete:       0,
 45691  	FxAccess:       0,
 45692  	FxFullPathname: 0,
 45693  	FxRandomness:   0,
 45694  	FxSleep:        0,
 45695  	FxCurrentTime:  0,
 45696  }
 45697  
 45698  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 45699  	if g1.FpVfs == uintptr(0) {
 45700  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45701  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45702  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45703  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45704  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45705  	}
 45706  	if iDeviceChar >= 0 {
 45707  		g1.FiDeviceChar = iDeviceChar
 45708  	} else {
 45709  		g1.FiDeviceChar = 0
 45710  	}
 45711  	if iSectorSize >= 0 {
 45712  		g1.FiSectorSize = iSectorSize
 45713  	} else {
 45714  		g1.FiSectorSize = 512
 45715  	}
 45716  }
 45717  
 45718  func devsym_unregister(tls *libc.TLS) {
 45719  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 45720  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 45721  	g1.FpVfs = uintptr(0)
 45722  	g1.FiDeviceChar = 0
 45723  	g1.FiSectorSize = 0
 45724  }
 45725  
 45726  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 45727  	if g1.FpVfs == uintptr(0) {
 45728  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45729  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45730  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45731  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45732  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45733  	}
 45734  	g1.FnWriteCrash = nWrite
 45735  }
 45736  
 45737  type Tcl_StatBuf = stat
 45738  
 45739  type fs_vtab1 = struct {
 45740  	Fbase sqlite3_vtab
 45741  	Fdb   uintptr
 45742  	FzDb  uintptr
 45743  	FzTbl uintptr
 45744  }
 45745  
 45746  type fs_vtab = fs_vtab1
 45747  type fs_cursor1 = struct {
 45748  	Fbase   sqlite3_vtab_cursor
 45749  	FpStmt  uintptr
 45750  	FzBuf   uintptr
 45751  	FnBuf   int32
 45752  	FnAlloc int32
 45753  }
 45754  
 45755  type fs_cursor = fs_cursor1
 45756  
 45757  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 45758  
 45759  type FsdirVtab = FsdirVtab1
 45760  type FsdirCsr1 = struct {
 45761  	Fbase   sqlite3_vtab_cursor
 45762  	FzDir   uintptr
 45763  	FpDir   uintptr
 45764  	FiRowid sqlite3_int64
 45765  	FpEntry uintptr
 45766  }
 45767  
 45768  type FsdirCsr = FsdirCsr1
 45769  
 45770  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45771  	var pTab uintptr
 45772  
 45773  	if argc != 3 {
 45774  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45775  		return SQLITE_ERROR
 45776  	}
 45777  
 45778  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 45779  	if !(pTab != 0) {
 45780  		return SQLITE_NOMEM
 45781  	}
 45782  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})))
 45783  
 45784  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45785  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 45786  
 45787  	return SQLITE_OK
 45788  }
 45789  
 45790  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 45791  	sqlite3.Xsqlite3_free(tls, pVtab)
 45792  	return SQLITE_OK
 45793  }
 45794  
 45795  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45796  	var ii int32
 45797  
 45798  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45799  
 45800  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45801  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45802  		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 {
 45803  			var pUsage uintptr
 45804  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45805  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 45806  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45807  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45808  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45809  			break
 45810  		}
 45811  	}
 45812  
 45813  	return SQLITE_OK
 45814  }
 45815  
 45816  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45817  	var pCur uintptr
 45818  
 45819  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 45820  	if pCur == uintptr(0) {
 45821  		return SQLITE_NOMEM
 45822  	}
 45823  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})))
 45824  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45825  	return SQLITE_OK
 45826  }
 45827  
 45828  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 45829  	var pCur uintptr = cur
 45830  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 45831  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 45832  	}
 45833  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 45834  	sqlite3.Xsqlite3_free(tls, pCur)
 45835  	return SQLITE_OK
 45836  }
 45837  
 45838  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 45839  	var pCsr uintptr = cur
 45840  
 45841  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45842  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45843  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 45844  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45845  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45846  		}
 45847  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 45848  	}
 45849  
 45850  	return SQLITE_OK
 45851  }
 45852  
 45853  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45854  	var pCsr uintptr = pVtabCursor
 45855  	var zDir uintptr
 45856  	var nDir int32
 45857  
 45858  	if idxNum != 1 || argc != 1 {
 45859  		return SQLITE_ERROR
 45860  	}
 45861  
 45862  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 45863  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45864  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45865  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45866  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45867  	}
 45868  
 45869  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45870  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45871  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 45872  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 45873  		return SQLITE_NOMEM
 45874  	}
 45875  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1))
 45876  
 45877  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45878  	return fsdirNext1(tls, pVtabCursor)
 45879  }
 45880  
 45881  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 45882  	var pCsr uintptr = cur
 45883  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 45884  }
 45885  
 45886  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45887  	var pCsr uintptr = cur
 45888  	switch i {
 45889  	case 0:
 45890  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 45891  		break
 45892  
 45893  	case 1:
 45894  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+24, -1, libc.UintptrFromInt32(-1))
 45895  		break
 45896  
 45897  	default:
 45898  	}
 45899  
 45900  	return SQLITE_OK
 45901  }
 45902  
 45903  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45904  	var pCsr uintptr = cur
 45905  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 45906  	return SQLITE_OK
 45907  }
 45908  
 45909  type FstreeVtab1 = struct {
 45910  	Fbase sqlite3_vtab
 45911  	Fdb   uintptr
 45912  }
 45913  
 45914  type FstreeVtab = FstreeVtab1
 45915  type FstreeCsr1 = struct {
 45916  	Fbase        sqlite3_vtab_cursor
 45917  	FpStmt       uintptr
 45918  	Ffd          int32
 45919  	F__ccgo_pad1 [4]byte
 45920  }
 45921  
 45922  type FstreeCsr = FstreeCsr1
 45923  
 45924  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45925  	var pTab uintptr
 45926  
 45927  	if argc != 3 {
 45928  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45929  		return SQLITE_ERROR
 45930  	}
 45931  
 45932  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 45933  	if !(pTab != 0) {
 45934  		return SQLITE_NOMEM
 45935  	}
 45936  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})))
 45937  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 45938  
 45939  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45940  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 45941  
 45942  	return SQLITE_OK
 45943  }
 45944  
 45945  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45946  	sqlite3.Xsqlite3_free(tls, pVtab)
 45947  	return SQLITE_OK
 45948  }
 45949  
 45950  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45951  	var ii int32
 45952  
 45953  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45954  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45955  		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 ||
 45956  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 45957  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 45958  			var pUsage uintptr
 45959  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45960  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 45961  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45962  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 45963  			return SQLITE_OK
 45964  		}
 45965  	}
 45966  
 45967  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45968  	return SQLITE_OK
 45969  }
 45970  
 45971  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45972  	var pCur uintptr
 45973  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 45974  	if pCur == uintptr(0) {
 45975  		return SQLITE_NOMEM
 45976  	}
 45977  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})))
 45978  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 45979  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45980  	return SQLITE_OK
 45981  }
 45982  
 45983  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 45984  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 45985  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 45986  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 45987  	}
 45988  }
 45989  
 45990  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 45991  	var pCsr uintptr = cur
 45992  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45993  	fstreeCloseFd(tls, pCsr)
 45994  	sqlite3.Xsqlite3_free(tls, pCsr)
 45995  	return SQLITE_OK
 45996  }
 45997  
 45998  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 45999  	var pCsr uintptr = cur
 46000  	var rc int32
 46001  
 46002  	fstreeCloseFd(tls, pCsr)
 46003  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46004  	if rc != SQLITE_ROW {
 46005  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46006  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46007  	} else {
 46008  		rc = SQLITE_OK
 46009  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 46010  	}
 46011  
 46012  	return rc
 46013  }
 46014  
 46015  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46016  	bp := tls.Alloc(2)
 46017  	defer tls.Free(2)
 46018  
 46019  	var pCsr uintptr = pVtabCursor
 46020  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 46021  	var rc int32
 46022  	var zSql uintptr = ts + 30750
 46023  	var zRoot uintptr
 46024  	var nRoot int32
 46025  	var zPrefix uintptr
 46026  	var nPrefix int32
 46027  	var zDir uintptr
 46028  	var nDir int32
 46029  	*(*[2]int8)(unsafe.Pointer(bp)) = [2]int8{int8(0), int8(0)}
 46030  
 46031  	zRoot = ts + 30982
 46032  	nRoot = 1
 46033  	zPrefix = ts + 584
 46034  	nPrefix = 0
 46035  
 46036  	zDir = zRoot
 46037  	nDir = nRoot
 46038  
 46039  	fstreeCloseFd(tls, pCsr)
 46040  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46041  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46042  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 46043  	if rc != SQLITE_OK {
 46044  		return rc
 46045  	}
 46046  
 46047  	if idxNum != 0 {
 46048  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46049  		switch idxNum {
 46050  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 46051  			*(*int8)(unsafe.Pointer(bp)) = int8('*')
 46052  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('?')
 46053  			break
 46054  			fallthrough
 46055  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 46056  			*(*int8)(unsafe.Pointer(bp)) = int8('_')
 46057  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('%')
 46058  			break
 46059  		}
 46060  
 46061  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 46062  			var i int32
 46063  			for i = nPrefix; *(*int8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 46064  				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))) {
 46065  					break
 46066  				}
 46067  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 46068  					nDir = i
 46069  				}
 46070  			}
 46071  			zDir = zQuery
 46072  		}
 46073  	}
 46074  	if nDir == 0 {
 46075  		nDir = 1
 46076  	}
 46077  
 46078  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 46079  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 46080  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 46081  
 46082  	return fstreeNext(tls, pVtabCursor)
 46083  }
 46084  
 46085  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 46086  	var pCsr uintptr = cur
 46087  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 46088  }
 46089  
 46090  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46091  	bp := tls.Alloc(224)
 46092  	defer tls.Free(224)
 46093  
 46094  	var pCsr uintptr = cur
 46095  	if i == 0 {
 46096  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 46097  	} else {
 46098  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 46099  
 46100  		if int32((*stat)(unsafe.Pointer(bp)).Fst_mode)&0170000 == 0100000 {
 46101  			if i == 1 {
 46102  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 46103  			} else {
 46104  				var nRead int32
 46105  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode)+1)
 46106  				if !(aBuf != 0) {
 46107  					return SQLITE_NOMEM
 46108  				}
 46109  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 46110  				if nRead != int32((*stat)(unsafe.Pointer(bp)).Fst_mode) {
 46111  					return SQLITE_IOERR
 46112  				}
 46113  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 46114  				sqlite3.Xsqlite3_free(tls, aBuf)
 46115  			}
 46116  		}
 46117  	}
 46118  
 46119  	return SQLITE_OK
 46120  }
 46121  
 46122  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46123  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 46124  	return SQLITE_OK
 46125  }
 46126  
 46127  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46128  	var pVtab uintptr
 46129  	var nByte int32
 46130  	var zTbl uintptr
 46131  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 46132  
 46133  	if argc != 4 {
 46134  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46135  		return SQLITE_ERROR
 46136  	}
 46137  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 46138  
 46139  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 46140  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 46141  	if !(pVtab != 0) {
 46142  		return SQLITE_NOMEM
 46143  	}
 46144  
 46145  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 46146  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 46147  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 46148  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 46149  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 46150  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 46151  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 46152  
 46153  	return SQLITE_OK
 46154  }
 46155  
 46156  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46157  	sqlite3.Xsqlite3_free(tls, pVtab)
 46158  	return SQLITE_OK
 46159  }
 46160  
 46161  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46162  	var pCur uintptr
 46163  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 46164  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46165  	return SQLITE_OK
 46166  }
 46167  
 46168  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 46169  	var pCur uintptr = cur
 46170  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46171  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 46172  	sqlite3.Xsqlite3_free(tls, pCur)
 46173  	return SQLITE_OK
 46174  }
 46175  
 46176  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 46177  	var pCur uintptr = cur
 46178  	var rc int32
 46179  
 46180  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46181  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 46182  		rc = SQLITE_OK
 46183  	}
 46184  
 46185  	return rc
 46186  }
 46187  
 46188  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46189  	bp := tls.Alloc(32)
 46190  	defer tls.Free(32)
 46191  
 46192  	var rc int32
 46193  	var pCur uintptr = pVtabCursor
 46194  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46195  
 46196  	if idxNum == 1 {
 46197  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 46198  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 46199  		if !(zStmt != 0) {
 46200  			return SQLITE_NOMEM
 46201  		}
 46202  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46203  		sqlite3.Xsqlite3_free(tls, zStmt)
 46204  		if rc == SQLITE_OK {
 46205  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 46206  		}
 46207  	} else {
 46208  		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))
 46209  		if !(zStmt != 0) {
 46210  			return SQLITE_NOMEM
 46211  		}
 46212  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 46213  		sqlite3.Xsqlite3_free(tls, zStmt)
 46214  	}
 46215  
 46216  	if rc == SQLITE_OK {
 46217  		rc = fsNext(tls, pVtabCursor)
 46218  	}
 46219  	return rc
 46220  }
 46221  
 46222  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46223  	bp := tls.Alloc(224)
 46224  	defer tls.Free(224)
 46225  
 46226  	var pCur uintptr = cur
 46227  
 46228  	if i == 0 {
 46229  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 46230  	} else {
 46231  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 46232  
 46233  		var fd int32
 46234  		var n int32
 46235  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 46236  		if fd < 0 {
 46237  			return SQLITE_IOERR
 46238  		}
 46239  		libc.Xfstat(tls, fd, bp)
 46240  
 46241  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= off_t((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 46242  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 46243  			var zNew uintptr
 46244  			if nNew < int64(1024) {
 46245  				nNew = int64(1024)
 46246  			}
 46247  
 46248  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 46249  			if zNew == uintptr(0) {
 46250  				libc.Xclose(tls, fd)
 46251  				return SQLITE_NOMEM
 46252  			}
 46253  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 46254  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 46255  		}
 46256  
 46257  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 46258  		libc.Xclose(tls, fd)
 46259  		if off_t(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 46260  			return SQLITE_ERROR
 46261  		}
 46262  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 46263  		*(*int8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = int8(0)
 46264  
 46265  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 46266  	}
 46267  	return SQLITE_OK
 46268  }
 46269  
 46270  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46271  	var pCur uintptr = cur
 46272  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 46273  	return SQLITE_OK
 46274  }
 46275  
 46276  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 46277  	var pCur uintptr = cur
 46278  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 46279  }
 46280  
 46281  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46282  	var ii int32
 46283  
 46284  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46285  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46286  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 46287  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 46288  			var pUsage uintptr
 46289  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46290  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 46291  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46292  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46293  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46294  			break
 46295  		}
 46296  	}
 46297  
 46298  	return SQLITE_OK
 46299  }
 46300  
 46301  var fsModule = sqlite3_module{
 46302  	FxCreate:     0,
 46303  	FxConnect:    0,
 46304  	FxBestIndex:  0,
 46305  	FxDisconnect: 0,
 46306  	FxDestroy:    0,
 46307  	FxOpen:       0,
 46308  	FxClose:      0,
 46309  	FxFilter:     0,
 46310  	FxNext:       0,
 46311  	FxEof:        0,
 46312  	FxColumn:     0,
 46313  	FxRowid:      0,
 46314  }
 46315  
 46316  var fsdirModule = sqlite3_module{
 46317  	FxCreate:     0,
 46318  	FxConnect:    0,
 46319  	FxBestIndex:  0,
 46320  	FxDisconnect: 0,
 46321  	FxDestroy:    0,
 46322  	FxOpen:       0,
 46323  	FxClose:      0,
 46324  	FxFilter:     0,
 46325  	FxNext:       0,
 46326  	FxEof:        0,
 46327  	FxColumn:     0,
 46328  	FxRowid:      0,
 46329  }
 46330  
 46331  var fstreeModule = sqlite3_module{
 46332  	FxCreate:     0,
 46333  	FxConnect:    0,
 46334  	FxBestIndex:  0,
 46335  	FxDisconnect: 0,
 46336  	FxDestroy:    0,
 46337  	FxOpen:       0,
 46338  	FxClose:      0,
 46339  	FxFilter:     0,
 46340  	FxNext:       0,
 46341  	FxEof:        0,
 46342  	FxColumn:     0,
 46343  	FxRowid:      0,
 46344  }
 46345  
 46346  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46347  	bp := tls.Alloc(8)
 46348  	defer tls.Free(8)
 46349  
 46350  	if objc != 2 {
 46351  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46352  		return TCL_ERROR
 46353  	}
 46354  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46355  		return TCL_ERROR
 46356  	}
 46357  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 46358  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 46359  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 46360  	return TCL_OK
 46361  }
 46362  
 46363  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 46364  	var i int32
 46365  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 46366  		FzName      uintptr
 46367  		FxProc      uintptr
 46368  		FclientData uintptr
 46369  	}{})); i++ {
 46370  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 46371  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 46372  	}
 46373  	return TCL_OK
 46374  }
 46375  
 46376  var aObjCmd6 = [1]struct {
 46377  	FzName      uintptr
 46378  	FxProc      uintptr
 46379  	FclientData uintptr
 46380  }{
 46381  	{FzName: ts + 31065, FxProc: 0},
 46382  }
 46383  
 46384  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 46385  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 46386  	if !(z != 0) && nByte > 0 {
 46387  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 46388  	}
 46389  	return z
 46390  }
 46391  
 46392  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46393  	bp := tls.Alloc(1004)
 46394  	defer tls.Free(1004)
 46395  
 46396  	var iMin int32
 46397  	var iMax int32
 46398  	var n int32
 46399  
 46400  	var i int32
 46401  
 46402  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46403  	if iMin < 0 {
 46404  		iMin = 0
 46405  	}
 46406  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 46407  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 46408  	}
 46409  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46410  	if iMax < iMin {
 46411  		iMax = iMin
 46412  	}
 46413  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 46414  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 46415  	}
 46416  	n = iMin
 46417  	if iMax > iMin {
 46418  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 46419  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 46420  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 46421  	}
 46422  
 46423  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 46424  	for i = 0; i < n; i++ {
 46425  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 46426  	}
 46427  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 46428  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 46429  }
 46430  
 46431  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 46432  
 46433  var test_destructor_count_var int32 = 0
 46434  
 46435  func destructor(tls *libc.TLS, p uintptr) {
 46436  	var zVal uintptr = p
 46437  
 46438  	zVal--
 46439  	sqlite3.Xsqlite3_free(tls, zVal)
 46440  	test_destructor_count_var--
 46441  }
 46442  
 46443  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46444  	var zVal uintptr
 46445  	var len int32
 46446  
 46447  	test_destructor_count_var++
 46448  
 46449  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46450  		return
 46451  	}
 46452  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46453  	zVal = testContextMalloc(tls, pCtx, len+3)
 46454  	if !(zVal != 0) {
 46455  		return
 46456  	}
 46457  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 46458  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 46459  	zVal++
 46460  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 46461  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46462  }
 46463  
 46464  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46465  	var zVal uintptr
 46466  	var len int32
 46467  
 46468  	test_destructor_count_var++
 46469  
 46470  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46471  		return
 46472  	}
 46473  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46474  	zVal = testContextMalloc(tls, pCtx, len+3)
 46475  	if !(zVal != 0) {
 46476  		return
 46477  	}
 46478  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 46479  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 46480  	zVal++
 46481  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 46482  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46483  }
 46484  
 46485  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46486  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 46487  }
 46488  
 46489  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46490  }
 46491  
 46492  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 46493  	var z uintptr
 46494  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 46495  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 46496  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 46497  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 46498  }
 46499  
 46500  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 46501  	sqlite3.Xsqlite3_free(tls, p)
 46502  }
 46503  
 46504  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46505  	var i int32
 46506  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 46507  	if !(zRet != 0) {
 46508  		return
 46509  	}
 46510  	libc.Xmemset(tls, zRet, 0, uint64(nArg*2))
 46511  	for i = 0; i < nArg; i++ {
 46512  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 46513  		if z != 0 {
 46514  			var n int32
 46515  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 46516  			if zAux != 0 {
 46517  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('1')
 46518  
 46519  			} else {
 46520  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('0')
 46521  			}
 46522  			n = int32(libc.Xstrlen(tls, z)) + 1
 46523  			zAux = testContextMalloc(tls, pCtx, n)
 46524  			if zAux != 0 {
 46525  				libc.Xmemcpy(tls, zAux, z, uint64(n))
 46526  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46527  			}
 46528  			*(*int8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = int8(' ')
 46529  		}
 46530  	}
 46531  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46532  }
 46533  
 46534  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46535  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 46536  	if nArg == 2 {
 46537  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 46538  	}
 46539  }
 46540  
 46541  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46542  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 46543  	if pCounter == uintptr(0) {
 46544  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 46545  		if pCounter == uintptr(0) {
 46546  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46547  			return
 46548  		}
 46549  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46550  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46551  	} else {
 46552  		*(*int32)(unsafe.Pointer(pCounter))++
 46553  	}
 46554  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 46555  }
 46556  
 46557  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46558  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46559  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46560  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46561  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46562  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46563  }
 46564  
 46565  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46566  	bp := tls.Alloc(16)
 46567  	defer tls.Free(16)
 46568  
 46569  	var rc int32
 46570  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 46571  	var zSql uintptr
 46572  
 46573  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46574  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 46575  	if rc == SQLITE_OK {
 46576  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46577  		if rc == SQLITE_ROW {
 46578  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 46579  		}
 46580  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46581  	}
 46582  	if rc != 0 {
 46583  		var zErr uintptr
 46584  
 46585  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 46586  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46587  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 46588  	}
 46589  }
 46590  
 46591  func testHexChar(tls *libc.TLS, c int8) int32 {
 46592  	if int32(c) >= '0' && int32(c) <= '9' {
 46593  		return int32(c) - '0'
 46594  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 46595  		return int32(c) - 'a' + 10
 46596  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 46597  		return int32(c) - 'A' + 10
 46598  	}
 46599  	return 0
 46600  }
 46601  
 46602  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 46603  	for *(*int8)(unsafe.Pointer(zIn)) != 0 && *(*int8)(unsafe.Pointer(zIn + 1)) != 0 {
 46604  		*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = int8(testHexChar(tls, *(*int8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*int8)(unsafe.Pointer(zIn + 1))))
 46605  		zIn += uintptr(2)
 46606  	}
 46607  }
 46608  
 46609  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46610  	var n int32
 46611  	var zIn uintptr
 46612  	var zOut uintptr
 46613  
 46614  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46615  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46616  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46617  	if zOut == uintptr(0) {
 46618  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46619  	} else {
 46620  		testHexToBin(tls, zIn, zOut)
 46621  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46622  	}
 46623  }
 46624  
 46625  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46626  	var n int32
 46627  	var zIn uintptr
 46628  	var zOut uintptr
 46629  
 46630  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46631  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46632  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46633  	if zOut == uintptr(0) {
 46634  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46635  	} else {
 46636  		testHexToBin(tls, zIn, zOut)
 46637  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46638  	}
 46639  }
 46640  
 46641  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46642  	var n int32
 46643  	var zIn uintptr
 46644  	var zOut uintptr
 46645  
 46646  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46647  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46648  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46649  	if zOut == uintptr(0) {
 46650  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46651  	} else {
 46652  		testHexToBin(tls, zIn, zOut)
 46653  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46654  	}
 46655  }
 46656  
 46657  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46658  	bp := tls.Alloc(28)
 46659  	defer tls.Free(28)
 46660  
 46661  	var i int32
 46662  	var bigEndian int32
 46663  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 46664  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 46665  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46666  	for i = 0; i < 8; i++ {
 46667  		if bigEndian != 0 {
 46668  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46669  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46670  		} else {
 46671  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46672  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46673  		}
 46674  	}
 46675  	*(*int8)(unsafe.Pointer(bp + 8 + 16)) = int8(0)
 46676  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 46677  }
 46678  
 46679  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46680  	bp := tls.Alloc(72)
 46681  	defer tls.Free(72)
 46682  
 46683  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46684  	var pRec uintptr
 46685  	var pEndHdr uintptr
 46686  	var pHdr uintptr
 46687  	var pBody uintptr
 46688  
 46689  	var iIdx int32
 46690  	var iCurrent int32 = 0
 46691  
 46692  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46693  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46694  
 46695  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 46696  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 46697  
 46698  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 46699  		libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})))
 46700  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 46701  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46702  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 46703  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 46704  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 46705  
 46706  		if iCurrent == iIdx {
 46707  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 46708  		}
 46709  
 46710  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 46711  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 46712  		}
 46713  	}
 46714  }
 46715  
 46716  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46717  	bp := tls.Alloc(123)
 46718  	defer tls.Free(123)
 46719  
 46720  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46721  	var pRec uintptr
 46722  	var pEndHdr uintptr
 46723  	var pHdr uintptr
 46724  	var pBody uintptr
 46725  
 46726  	var pRet uintptr
 46727  
 46728  	pRet = tcl.XTcl_NewObj(tls)
 46729  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 46730  
 46731  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46732  
 46733  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 46734  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 46735  	for pHdr < pEndHdr {
 46736  		var pVal uintptr = uintptr(0)
 46737  
 46738  		libc.Xmemset(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})))
 46739  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 46740  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46741  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 46742  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 46743  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 46744  
 46745  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 46746  		case SQLITE_TEXT:
 46747  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 46748  			break
 46749  
 46750  		case SQLITE_BLOB:
 46751  			{
 46752  				*(*[16]int8)(unsafe.Pointer(bp + 107)) = [16]int8{
 46753  					int8('0'), int8('1'), int8('2'), int8('3'), int8('4'), int8('5'), int8('6'), int8('7'),
 46754  					int8('8'), int8('9'), int8('a'), int8('b'), int8('c'), int8('d'), int8('e'), int8('f'),
 46755  				}
 46756  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 46757  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 46758  				var i int32
 46759  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 46760  				for i = 0; i < n; i++ {
 46761  					*(*int8)(unsafe.Pointer(bp + 104)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 46762  					*(*int8)(unsafe.Pointer(bp + 104 + 1)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 46763  					*(*int8)(unsafe.Pointer(bp + 104 + 2)) = int8(0)
 46764  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 46765  				}
 46766  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 46767  				break
 46768  
 46769  			}
 46770  
 46771  		case SQLITE_FLOAT:
 46772  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 46773  			break
 46774  
 46775  		case SQLITE_INTEGER:
 46776  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 46777  			break
 46778  
 46779  		case SQLITE_NULL:
 46780  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 46781  			break
 46782  
 46783  		default:
 46784  		}
 46785  
 46786  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 46787  
 46788  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 46789  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 46790  		}
 46791  	}
 46792  
 46793  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 46794  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46795  		var _objPtr uintptr = pRet
 46796  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 46797  			tcl.XTclFreeObj(tls, _objPtr)
 46798  		}
 46799  	}
 46800  }
 46801  
 46802  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46803  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46804  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 46805  }
 46806  
 46807  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46808  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 46809  }
 46810  
 46811  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46812  	var m sqlite3_uint64 = uint64(0)
 46813  	var i int32
 46814  	for i = 0; i < argc && i < 63; i++ {
 46815  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 46816  			m = m | uint64(1)<<i
 46817  		}
 46818  	}
 46819  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 46820  }
 46821  
 46822  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46823  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 46824  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 46825  }
 46826  
 46827  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 46828  	var i int32
 46829  
 46830  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 46831  		FzName       uintptr
 46832  		FnArg        int8
 46833  		F__ccgo_pad1 [3]byte
 46834  		FeTextRep    uint32
 46835  		FxFunc       uintptr
 46836  	}{})); i++ {
 46837  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 46838  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 46839  	}
 46840  
 46841  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 46842  		*(*uintptr)(unsafe.Pointer(&struct {
 46843  			f func(*libc.TLS, uintptr, int32, uintptr)
 46844  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 46845  
 46846  	return SQLITE_OK
 46847  }
 46848  
 46849  var aFuncs = [20]struct {
 46850  	FzName       uintptr
 46851  	FnArg        int8
 46852  	F__ccgo_pad1 [3]byte
 46853  	FeTextRep    uint32
 46854  	FxFunc       uintptr
 46855  }{
 46856  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46857  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46858  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46859  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46860  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46861  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46862  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46863  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46864  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46865  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46866  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46867  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46868  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46869  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46870  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46871  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46872  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 46873  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46874  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46875  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46876  }
 46877  
 46878  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46879  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46880  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46881  	}{registerTestFunctions})))
 46882  	if rc == SQLITE_OK {
 46883  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46884  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46885  		}{Md5_Register})))
 46886  	}
 46887  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 46888  	return TCL_OK
 46889  }
 46890  
 46891  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46892  }
 46893  
 46894  func tFinal(tls *libc.TLS, a uintptr) {
 46895  }
 46896  
 46897  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46898  	bp := tls.Alloc(24)
 46899  	defer tls.Free(24)
 46900  
 46901  	var rc int32
 46902  	var mxArg int32
 46903  
 46904  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 46905  		goto __1
 46906  	}
 46907  	return TCL_ERROR
 46908  __1:
 46909  	;
 46910  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46911  		f func(*libc.TLS, uintptr, int32, uintptr)
 46912  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46913  		f func(*libc.TLS, uintptr, int32, uintptr)
 46914  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46915  	if !(rc != SQLITE_MISUSE) {
 46916  		goto __2
 46917  	}
 46918  	goto abuse_err
 46919  __2:
 46920  	;
 46921  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46922  		f func(*libc.TLS, uintptr, int32, uintptr)
 46923  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46924  		f func(*libc.TLS, uintptr, int32, uintptr)
 46925  	}{tStep})), uintptr(0))
 46926  	if !(rc != SQLITE_MISUSE) {
 46927  		goto __3
 46928  	}
 46929  	goto abuse_err
 46930  __3:
 46931  	;
 46932  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46933  		f func(*libc.TLS, uintptr, int32, uintptr)
 46934  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46935  	if !(rc != SQLITE_MISUSE) {
 46936  		goto __4
 46937  	}
 46938  	goto abuse_err
 46939  __4:
 46940  	;
 46941  	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})))
 46942  	if !(rc != SQLITE_MISUSE) {
 46943  		goto __5
 46944  	}
 46945  	goto abuse_err
 46946  __5:
 46947  	;
 46948  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46949  		f func(*libc.TLS, uintptr, int32, uintptr)
 46950  	}{tStep})), uintptr(0))
 46951  	if !(rc != SQLITE_MISUSE) {
 46952  		goto __6
 46953  	}
 46954  	goto abuse_err
 46955  __6:
 46956  	;
 46957  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46958  		f func(*libc.TLS, uintptr, int32, uintptr)
 46959  	}{tStep})), uintptr(0), uintptr(0))
 46960  	if !(rc != SQLITE_MISUSE) {
 46961  		goto __7
 46962  	}
 46963  	goto abuse_err
 46964  __7:
 46965  	;
 46966  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46967  		f func(*libc.TLS, uintptr, int32, uintptr)
 46968  	}{tStep})), uintptr(0), uintptr(0))
 46969  	if !(rc != SQLITE_MISUSE) {
 46970  		goto __8
 46971  	}
 46972  	goto abuse_err
 46973  __8:
 46974  	;
 46975  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46976  		ts+31494,
 46977  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46978  			f func(*libc.TLS, uintptr, int32, uintptr)
 46979  		}{tStep})), uintptr(0), uintptr(0))
 46980  	if !(rc != SQLITE_MISUSE) {
 46981  		goto __9
 46982  	}
 46983  	goto abuse_err
 46984  __9:
 46985  	;
 46986  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 46987  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 46988  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46989  		ts+31751,
 46990  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46991  			f func(*libc.TLS, uintptr, int32, uintptr)
 46992  		}{tStep})), uintptr(0), uintptr(0))
 46993  	if !(rc != SQLITE_OK) {
 46994  		goto __10
 46995  	}
 46996  	goto abuse_err
 46997  __10:
 46998  	;
 46999  	return TCL_OK
 47000  
 47001  abuse_err:
 47002  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 47003  		uintptr(0)))
 47004  	return TCL_ERROR
 47005  }
 47006  
 47007  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 47008  	var aMatchinfo uintptr
 47009  	var nMatchinfo int32
 47010  	var nCol int32
 47011  	var nPhrase int32
 47012  	var iPhrase int32
 47013  	var score float64
 47014  	var nHitCount int32
 47015  	var nGlobalHitCount int32
 47016  	var weight float64
 47017  	var iCol int32
 47018  
 47019  	var aPhraseinfo uintptr
 47020  	nCol = 0
 47021  	nPhrase = 0
 47022  	score = 0.0
 47023  
 47024  	if !(nVal < 1) {
 47025  		goto __1
 47026  	}
 47027  	goto wrong_number_args
 47028  __1:
 47029  	;
 47030  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 47031  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 47032  	if !(nMatchinfo >= 2) {
 47033  		goto __2
 47034  	}
 47035  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 47036  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 47037  __2:
 47038  	;
 47039  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 47040  		goto __3
 47041  	}
 47042  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 47043  		ts+32050, -1)
 47044  	return
 47045  __3:
 47046  	;
 47047  	if !(nVal != 1+nCol) {
 47048  		goto __4
 47049  	}
 47050  	goto wrong_number_args
 47051  __4:
 47052  	;
 47053  	iPhrase = 0
 47054  __5:
 47055  	if !(iPhrase < nPhrase) {
 47056  		goto __7
 47057  	}
 47058  
 47059  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 47060  	iCol = 0
 47061  __8:
 47062  	if !(iCol < nCol) {
 47063  		goto __10
 47064  	}
 47065  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 47066  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 47067  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 47068  	if !(nHitCount > 0) {
 47069  		goto __11
 47070  	}
 47071  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 47072  __11:
 47073  	;
 47074  	goto __9
 47075  __9:
 47076  	iCol++
 47077  	goto __8
 47078  	goto __10
 47079  __10:
 47080  	;
 47081  	goto __6
 47082  __6:
 47083  	iPhrase++
 47084  	goto __5
 47085  	goto __7
 47086  __7:
 47087  	;
 47088  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 47089  	return
 47090  
 47091  wrong_number_args:
 47092  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 47093  }
 47094  
 47095  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47096  	bp := tls.Alloc(8)
 47097  	defer tls.Free(8)
 47098  
 47099  	if objc != 2 {
 47100  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47101  		return TCL_ERROR
 47102  	}
 47103  
 47104  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 47105  		return TCL_ERROR
 47106  	}
 47107  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47108  		f func(*libc.TLS, uintptr, int32, uintptr)
 47109  	}{rankfunc})), uintptr(0), uintptr(0))
 47110  	return TCL_OK
 47111  }
 47112  
 47113  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 47114  	var i int32
 47115  
 47116  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 47117  		FzName uintptr
 47118  		FxProc uintptr
 47119  	}{})); i++ {
 47120  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 47121  	}
 47122  	sqlite3.Xsqlite3_initialize(tls)
 47123  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47124  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47125  	}{registerTestFunctions})))
 47126  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47127  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47128  	}{Md5_Register})))
 47129  	return TCL_OK
 47130  }
 47131  
 47132  var aObjCmd7 = [3]struct {
 47133  	FzName uintptr
 47134  	FxProc uintptr
 47135  }{
 47136  	{FzName: ts + 32149, FxProc: 0},
 47137  	{FzName: ts + 32176, FxProc: 0},
 47138  	{FzName: ts + 32198, FxProc: 0},
 47139  }
 47140  
 47141  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 47142  	bp := tls.Alloc(17)
 47143  	defer tls.Free(17)
 47144  
 47145  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 47146  	var i int32
 47147  	var j int32
 47148  	var c uint8
 47149  	i = N * 2
 47150  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 47151  	for j = N - 1; j >= 0; j-- {
 47152  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 47153  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 47154  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 47155  	}
 47156  
 47157  }
 47158  
 47159  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 47160  	bp := tls.Alloc(256)
 47161  	defer tls.Free(256)
 47162  
 47163  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 47164  		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),
 47165  		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),
 47166  		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),
 47167  		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),
 47168  		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),
 47169  		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),
 47170  		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),
 47171  		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),
 47172  		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),
 47173  		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),
 47174  		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),
 47175  		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),
 47176  		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),
 47177  		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),
 47178  		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),
 47179  		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),
 47180  	}
 47181  	var i int32
 47182  	var j int32
 47183  	var hi int32 = 1
 47184  	var c uint8
 47185  
 47186  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 47187  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 47188  		if int32(c) == 0 {
 47189  			continue
 47190  		}
 47191  		if hi != 0 {
 47192  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 47193  			hi = 0
 47194  		} else {
 47195  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 47196  			hi = 1
 47197  		}
 47198  	}
 47199  	return j
 47200  }
 47201  
 47202  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47203  	bp := tls.Alloc(48)
 47204  	defer tls.Free(48)
 47205  
 47206  	var got int32
 47207  	var zFile uintptr
 47208  	var zBuf uintptr
 47209  	var in uintptr
 47210  
 47211  	if objc != 4 {
 47212  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 47213  		return TCL_ERROR
 47214  	}
 47215  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 47216  		return TCL_ERROR
 47217  	}
 47218  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 47219  		return TCL_ERROR
 47220  	}
 47221  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47222  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 47223  	if zBuf == uintptr(0) {
 47224  		return TCL_ERROR
 47225  	}
 47226  	in = libc.Xfopen(tls, zFile, ts+4402)
 47227  	if in == uintptr(0) {
 47228  		in = libc.Xfopen(tls, zFile, ts+32262)
 47229  	}
 47230  	if in == uintptr(0) {
 47231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 47232  		return TCL_ERROR
 47233  	}
 47234  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 47235  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 47236  	libc.Xfclose(tls, in)
 47237  	if got < 0 {
 47238  		got = 0
 47239  	}
 47240  	sqlite3TestBinToHex(tls, zBuf, got)
 47241  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 47242  	sqlite3.Xsqlite3_free(tls, zBuf)
 47243  	return TCL_OK
 47244  }
 47245  
 47246  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47247  	bp := tls.Alloc(32)
 47248  	defer tls.Free(32)
 47249  
 47250  	var nOut int32
 47251  	var written int32
 47252  	var zFile uintptr
 47253  	var zIn uintptr
 47254  	var aOut uintptr
 47255  	var out uintptr
 47256  
 47257  	if objc != 4 {
 47258  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 47259  		return TCL_ERROR
 47260  	}
 47261  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 47262  		return TCL_ERROR
 47263  	}
 47264  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 47265  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 47266  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 47267  	if aOut == uintptr(0) {
 47268  		return TCL_ERROR
 47269  	}
 47270  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 47271  	out = libc.Xfopen(tls, zFile, ts+32312)
 47272  	if out == uintptr(0) {
 47273  		out = libc.Xfopen(tls, zFile, ts+32316)
 47274  	}
 47275  	if out == uintptr(0) {
 47276  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 47277  		return TCL_ERROR
 47278  	}
 47279  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 47280  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 47281  	sqlite3.Xsqlite3_free(tls, aOut)
 47282  	libc.Xfclose(tls, out)
 47283  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 47284  	return TCL_OK
 47285  }
 47286  
 47287  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47288  	bp := tls.Alloc(8)
 47289  	defer tls.Free(8)
 47290  
 47291  	var val int32
 47292  
 47293  	var nOut int32
 47294  	var zIn uintptr
 47295  	var aOut uintptr
 47296  
 47297  	if objc != 2 {
 47298  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 47299  		return TCL_ERROR
 47300  	}
 47301  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 47302  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 47303  	if aOut == uintptr(0) {
 47304  		return TCL_ERROR
 47305  	}
 47306  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 47307  	if nOut >= 4 {
 47308  		libc.Xmemcpy(tls, bp+4, aOut, uint64(4))
 47309  	} else {
 47310  		libc.Xmemset(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})))
 47311  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut))
 47312  	}
 47313  	sqlite3.Xsqlite3_free(tls, aOut)
 47314  	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)))
 47315  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 47316  	return TCL_OK
 47317  }
 47318  
 47319  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47320  	bp := tls.Alloc(14)
 47321  	defer tls.Free(14)
 47322  
 47323  	if objc != 2 {
 47324  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47325  		return TCL_ERROR
 47326  	}
 47327  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47328  		return TCL_ERROR
 47329  	}
 47330  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47331  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47332  	sqlite3TestBinToHex(tls, bp+4, 2)
 47333  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 47334  	return TCL_OK
 47335  }
 47336  
 47337  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47338  	bp := tls.Alloc(14)
 47339  	defer tls.Free(14)
 47340  
 47341  	if objc != 2 {
 47342  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47343  		return TCL_ERROR
 47344  	}
 47345  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 47346  		return TCL_ERROR
 47347  	}
 47348  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 47349  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 47350  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47351  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47352  	sqlite3TestBinToHex(tls, bp+4, 4)
 47353  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 47354  	return TCL_OK
 47355  }
 47356  
 47357  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47358  	bp := tls.Alloc(16)
 47359  	defer tls.Free(16)
 47360  
 47361  	tcl.XTcl_AppendResult(tls, interp,
 47362  		libc.VaList(bp, ts+32352, 0))
 47363  	return TCL_ERROR
 47364  }
 47365  
 47366  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 47367  	var q uintptr = p
 47368  	var x sqlite_uint64 = uint64(0)
 47369  	var y sqlite_uint64 = uint64(1)
 47370  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 47371  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 47372  		y <<= 7
 47373  	}
 47374  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 47375  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 47376  	return int32((int64(q) - int64(p)) / 1)
 47377  }
 47378  
 47379  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 47380  	var q uintptr = p
 47381  	var vu sqlite_uint64 = sqlite_uint64(v)
 47382  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 47383  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 47384  		vu >>= 7
 47385  	}
 47386  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 47387  
 47388  	return int32((int64(q) - int64(p)) / 1)
 47389  }
 47390  
 47391  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47392  	bp := tls.Alloc(16)
 47393  	defer tls.Free(16)
 47394  
 47395  	var zBlob uintptr
 47396  
 47397  	var nVal int32
 47398  
 47399  	if objc != 3 {
 47400  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 47401  		return TCL_ERROR
 47402  	}
 47403  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 47404  
 47405  	nVal = getFts3Varint(tls, zBlob, bp+8)
 47406  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 47407  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 47408  	return TCL_OK
 47409  }
 47410  
 47411  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47412  	bp := tls.Alloc(28)
 47413  	defer tls.Free(28)
 47414  
 47415  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 47416  	*(*int32)(unsafe.Pointer(bp)) = 0
 47417  	var aOut uintptr = uintptr(0)
 47418  	var nOut int32 = 0
 47419  	var nAlloc int32 = 0
 47420  	var i int32
 47421  
 47422  	if objc != 2 {
 47423  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 47424  		return TCL_ERROR
 47425  	}
 47426  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 47427  		return TCL_ERROR
 47428  	}
 47429  
 47430  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 47431  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 47432  			if nOut+10 > nAlloc {
 47433  				var nNew int32
 47434  				if nAlloc != 0 {
 47435  					nNew = nAlloc * 2
 47436  				} else {
 47437  					nNew = 128
 47438  				}
 47439  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47440  				if aNew == uintptr(0) {
 47441  					sqlite3.Xsqlite3_free(tls, aOut)
 47442  					return TCL_ERROR
 47443  				}
 47444  				aOut = aNew
 47445  				nAlloc = nNew
 47446  			}
 47447  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 47448  		} else {
 47449  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 47450  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 47451  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 47452  				var nNew int32
 47453  				if nAlloc != 0 {
 47454  					nNew = nAlloc * 2
 47455  				} else {
 47456  					nNew = 128
 47457  				}
 47458  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47459  				if aNew == uintptr(0) {
 47460  					sqlite3.Xsqlite3_free(tls, aOut)
 47461  					return TCL_ERROR
 47462  				}
 47463  				aOut = aNew
 47464  				nAlloc = nNew
 47465  			}
 47466  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))))
 47467  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 47468  		}
 47469  	}
 47470  
 47471  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 47472  	sqlite3.Xsqlite3_free(tls, aOut)
 47473  	return TCL_OK
 47474  }
 47475  
 47476  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 47477  	var i int32
 47478  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 47479  		FzName uintptr
 47480  		FxProc uintptr
 47481  	}{})); i++ {
 47482  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 47483  	}
 47484  	return TCL_OK
 47485  }
 47486  
 47487  var aObjCmd8 = [8]struct {
 47488  	FzName uintptr
 47489  	FxProc uintptr
 47490  }{
 47491  	{FzName: ts + 32424, FxProc: 0},
 47492  	{FzName: ts + 32435, FxProc: 0},
 47493  	{FzName: ts + 32447, FxProc: 0},
 47494  	{FzName: ts + 32461, FxProc: 0},
 47495  	{FzName: ts + 32480, FxProc: 0},
 47496  	{FzName: ts + 32499, FxProc: 0},
 47497  	{FzName: ts + 32512, FxProc: 0},
 47498  	{FzName: ts + 32528, FxProc: 0},
 47499  }
 47500  
 47501  type Wrapped = struct {
 47502  	Fpcache      sqlite3_pcache_methods2
 47503  	Fmem         sqlite3_mem_methods
 47504  	Fmutex       sqlite3_mutex_methods
 47505  	Fmem_init    int32
 47506  	Fmem_fail    int32
 47507  	Fmutex_init  int32
 47508  	Fmutex_fail  int32
 47509  	Fpcache_init int32
 47510  	Fpcache_fail int32
 47511  }
 47512  
 47513  var wrapped Wrapped
 47514  
 47515  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 47516  	var rc int32
 47517  	if wrapped.Fmem_fail != 0 {
 47518  		rc = SQLITE_ERROR
 47519  	} else {
 47520  		rc = (*struct {
 47521  			f func(*libc.TLS, uintptr) int32
 47522  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 47523  	}
 47524  	if rc == SQLITE_OK {
 47525  		wrapped.Fmem_init = 1
 47526  	}
 47527  	return rc
 47528  }
 47529  
 47530  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 47531  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 47532  	wrapped.Fmem_init = 0
 47533  }
 47534  
 47535  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 47536  	return (*struct {
 47537  		f func(*libc.TLS, int32) uintptr
 47538  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 47539  }
 47540  
 47541  func wrMemFree(tls *libc.TLS, p uintptr) {
 47542  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 47543  }
 47544  
 47545  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 47546  	return (*struct {
 47547  		f func(*libc.TLS, uintptr, int32) uintptr
 47548  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 47549  }
 47550  
 47551  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 47552  	return (*struct {
 47553  		f func(*libc.TLS, uintptr) int32
 47554  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 47555  }
 47556  
 47557  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 47558  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 47559  }
 47560  
 47561  func wrMutexInit(tls *libc.TLS) int32 {
 47562  	var rc int32
 47563  	if wrapped.Fmutex_fail != 0 {
 47564  		rc = SQLITE_ERROR
 47565  	} else {
 47566  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 47567  	}
 47568  	if rc == SQLITE_OK {
 47569  		wrapped.Fmutex_init = 1
 47570  	}
 47571  	return rc
 47572  }
 47573  
 47574  func wrMutexEnd(tls *libc.TLS) int32 {
 47575  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 47576  	wrapped.Fmutex_init = 0
 47577  	return SQLITE_OK
 47578  }
 47579  
 47580  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 47581  	return (*struct {
 47582  		f func(*libc.TLS, int32) uintptr
 47583  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 47584  }
 47585  
 47586  func wrMutexFree(tls *libc.TLS, p uintptr) {
 47587  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 47588  }
 47589  
 47590  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 47591  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 47592  }
 47593  
 47594  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 47595  	return (*struct {
 47596  		f func(*libc.TLS, uintptr) int32
 47597  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 47598  }
 47599  
 47600  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 47601  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 47602  }
 47603  
 47604  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 47605  	return (*struct {
 47606  		f func(*libc.TLS, uintptr) int32
 47607  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 47608  }
 47609  
 47610  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 47611  	return (*struct {
 47612  		f func(*libc.TLS, uintptr) int32
 47613  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 47614  }
 47615  
 47616  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 47617  	var rc int32
 47618  	if wrapped.Fpcache_fail != 0 {
 47619  		rc = SQLITE_ERROR
 47620  	} else {
 47621  		rc = (*struct {
 47622  			f func(*libc.TLS, uintptr) int32
 47623  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 47624  	}
 47625  	if rc == SQLITE_OK {
 47626  		wrapped.Fpcache_init = 1
 47627  	}
 47628  	return rc
 47629  }
 47630  
 47631  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 47632  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 47633  	wrapped.Fpcache_init = 0
 47634  }
 47635  
 47636  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 47637  	return (*struct {
 47638  		f func(*libc.TLS, int32, int32, int32) uintptr
 47639  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 47640  }
 47641  
 47642  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 47643  	(*struct {
 47644  		f func(*libc.TLS, uintptr, int32)
 47645  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 47646  }
 47647  
 47648  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 47649  	return (*struct {
 47650  		f func(*libc.TLS, uintptr) int32
 47651  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 47652  }
 47653  
 47654  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 47655  	return (*struct {
 47656  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47657  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 47658  }
 47659  
 47660  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 47661  	(*struct {
 47662  		f func(*libc.TLS, uintptr, uintptr, int32)
 47663  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 47664  }
 47665  
 47666  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 47667  	(*struct {
 47668  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47669  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 47670  }
 47671  
 47672  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 47673  	(*struct {
 47674  		f func(*libc.TLS, uintptr, uint32)
 47675  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 47676  }
 47677  
 47678  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 47679  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 47680  }
 47681  
 47682  func installInitWrappers(tls *libc.TLS) {
 47683  	bp := tls.Alloc(288)
 47684  	defer tls.Free(288)
 47685  
 47686  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 47687  		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 {
 47688  			f func(*libc.TLS, int32) uintptr
 47689  		}{wrMutexAlloc})),
 47690  		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 {
 47691  			f func(*libc.TLS, uintptr) int32
 47692  		}{wrMutexTry})),
 47693  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 47694  			f func(*libc.TLS, uintptr) int32
 47695  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 47696  			f func(*libc.TLS, uintptr) int32
 47697  		}{wrMutexNotheld})),
 47698  	}
 47699  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 47700  		FiVersion: 1,
 47701  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47702  			f func(*libc.TLS, uintptr) int32
 47703  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 47704  			f func(*libc.TLS, int32, int32, int32) uintptr
 47705  		}{wrPCacheCreate})),
 47706  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 47707  			f func(*libc.TLS, uintptr, int32)
 47708  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 47709  			f func(*libc.TLS, uintptr) int32
 47710  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 47711  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47712  		}{wrPCacheFetch})),
 47713  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 47714  			f func(*libc.TLS, uintptr, uintptr, int32)
 47715  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 47716  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47717  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 47718  			f func(*libc.TLS, uintptr, uint32)
 47719  		}{wrPCacheTruncate})),
 47720  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 47721  	}
 47722  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 47723  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 47724  			f func(*libc.TLS, int32) uintptr
 47725  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 47726  			f func(*libc.TLS, uintptr, int32) uintptr
 47727  		}{wrMemRealloc})),
 47728  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 47729  			f func(*libc.TLS, uintptr) int32
 47730  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47731  			f func(*libc.TLS, uintptr) int32
 47732  		}{wrMemInit})),
 47733  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 47734  	}
 47735  
 47736  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)))
 47737  
 47738  	sqlite3.Xsqlite3_shutdown(tls)
 47739  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47740  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47741  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47742  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 47743  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 47744  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 47745  }
 47746  
 47747  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47748  	bp := tls.Alloc(24)
 47749  	defer tls.Free(24)
 47750  
 47751  	var i int32
 47752  	installInitWrappers(tls)
 47753  	for i = 1; i < objc; i++ {
 47754  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 47755  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 47756  			wrapped.Fmem_fail = 1
 47757  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 47758  			wrapped.Fmutex_fail = 1
 47759  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 47760  			wrapped.Fpcache_fail = 1
 47761  		} else {
 47762  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 47763  			return TCL_ERROR
 47764  		}
 47765  	}
 47766  	return TCL_OK
 47767  }
 47768  
 47769  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47770  	bp := tls.Alloc(24)
 47771  	defer tls.Free(24)
 47772  
 47773  	if objc != 1 {
 47774  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47775  		return TCL_ERROR
 47776  	}
 47777  
 47778  	sqlite3.Xsqlite3_shutdown(tls)
 47779  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47780  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47781  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47782  	return TCL_OK
 47783  }
 47784  
 47785  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47786  	if objc != 1 {
 47787  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47788  		return TCL_ERROR
 47789  	}
 47790  
 47791  	wrapped.Fmem_fail = 0
 47792  	wrapped.Fmutex_fail = 0
 47793  	wrapped.Fpcache_fail = 0
 47794  	return TCL_OK
 47795  }
 47796  
 47797  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47798  	var pRet uintptr
 47799  
 47800  	if objc != 1 {
 47801  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47802  		return TCL_ERROR
 47803  	}
 47804  
 47805  	pRet = tcl.XTcl_NewObj(tls)
 47806  	if wrapped.Fmutex_init != 0 {
 47807  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 47808  	}
 47809  	if wrapped.Fmem_init != 0 {
 47810  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 47811  	}
 47812  	if wrapped.Fpcache_init != 0 {
 47813  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 47814  	}
 47815  
 47816  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 47817  	return TCL_OK
 47818  }
 47819  
 47820  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 47821  	var i int32
 47822  
 47823  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 47824  		FzName uintptr
 47825  		FxProc uintptr
 47826  	}{})); i++ {
 47827  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 47828  	}
 47829  
 47830  	return TCL_OK
 47831  }
 47832  
 47833  var aObjCmd9 = [4]struct {
 47834  	FzName uintptr
 47835  	FxProc uintptr
 47836  }{
 47837  	{FzName: ts + 32575, FxProc: 0},
 47838  	{FzName: ts + 32596, FxProc: 0},
 47839  	{FzName: ts + 32615, FxProc: 0},
 47840  	{FzName: ts + 32638, FxProc: 0},
 47841  }
 47842  
 47843  type sqlite3_intarray1 = struct {
 47844  	Fn           int32
 47845  	F__ccgo_pad1 [4]byte
 47846  	Fa           uintptr
 47847  	FxFree       uintptr
 47848  }
 47849  
 47850  type sqlite3_intarray = sqlite3_intarray1
 47851  
 47852  type intarray_vtab1 = struct {
 47853  	Fbase     sqlite3_vtab
 47854  	FpContent uintptr
 47855  }
 47856  
 47857  type intarray_vtab = intarray_vtab1
 47858  type intarray_cursor1 = struct {
 47859  	Fbase        sqlite3_vtab_cursor
 47860  	Fi           int32
 47861  	F__ccgo_pad1 [4]byte
 47862  }
 47863  
 47864  type intarray_cursor = intarray_cursor1
 47865  
 47866  func intarrayFree(tls *libc.TLS, p uintptr) {
 47867  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 47868  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 47869  	}
 47870  	sqlite3.Xsqlite3_free(tls, p)
 47871  }
 47872  
 47873  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 47874  	var pVtab uintptr = p
 47875  	sqlite3.Xsqlite3_free(tls, pVtab)
 47876  	return 0
 47877  }
 47878  
 47879  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 47880  	var rc int32 = SQLITE_NOMEM
 47881  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 47882  
 47883  	if pVtab != 0 {
 47884  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})))
 47885  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 47886  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 47887  	}
 47888  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 47889  	return rc
 47890  }
 47891  
 47892  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 47893  	var rc int32 = SQLITE_NOMEM
 47894  	var pCur uintptr
 47895  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 47896  	if pCur != 0 {
 47897  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})))
 47898  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 47899  		rc = SQLITE_OK
 47900  	}
 47901  	return rc
 47902  }
 47903  
 47904  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 47905  	var pCur uintptr = cur
 47906  	sqlite3.Xsqlite3_free(tls, pCur)
 47907  	return SQLITE_OK
 47908  }
 47909  
 47910  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 47911  	var pCur uintptr = cur
 47912  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47913  	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 {
 47914  		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)))
 47915  	}
 47916  	return SQLITE_OK
 47917  }
 47918  
 47919  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 47920  	var pCur uintptr = cur
 47921  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 47922  	return SQLITE_OK
 47923  }
 47924  
 47925  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 47926  	var pCur uintptr = cur
 47927  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47928  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 47929  }
 47930  
 47931  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 47932  	var pCur uintptr = cur
 47933  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 47934  	return SQLITE_OK
 47935  }
 47936  
 47937  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 47938  	var pCur uintptr = pVtabCursor
 47939  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 47940  	return SQLITE_OK
 47941  }
 47942  
 47943  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 47944  	return SQLITE_OK
 47945  }
 47946  
 47947  var intarrayModule = sqlite3_module{
 47948  	FxCreate:     0,
 47949  	FxConnect:    0,
 47950  	FxBestIndex:  0,
 47951  	FxDisconnect: 0,
 47952  	FxDestroy:    0,
 47953  	FxOpen:       0,
 47954  	FxClose:      0,
 47955  	FxFilter:     0,
 47956  	FxNext:       0,
 47957  	FxEof:        0,
 47958  	FxColumn:     0,
 47959  	FxRowid:      0,
 47960  }
 47961  
 47962  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 47963  	bp := tls.Alloc(16)
 47964  	defer tls.Free(16)
 47965  
 47966  	var rc int32 = SQLITE_OK
 47967  	var p uintptr
 47968  
 47969  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 47970  	if p == uintptr(0) {
 47971  		return SQLITE_NOMEM
 47972  	}
 47973  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})))
 47974  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 47975  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 47976  	if rc == SQLITE_OK {
 47977  		var zSql uintptr
 47978  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 47979  			libc.VaList(bp, zName, zName))
 47980  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 47981  		sqlite3.Xsqlite3_free(tls, zSql)
 47982  	}
 47983  	return rc
 47984  }
 47985  
 47986  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 47987  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 47988  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 47989  	}
 47990  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 47991  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 47992  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 47993  	return SQLITE_OK
 47994  }
 47995  
 47996  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47997  	bp := tls.Alloc(148)
 47998  	defer tls.Free(148)
 47999  
 48000  	var zName uintptr
 48001  
 48002  	var rc int32 = SQLITE_OK
 48003  
 48004  	if objc != 3 {
 48005  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 48006  		return TCL_ERROR
 48007  	}
 48008  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 48009  		return TCL_ERROR
 48010  	}
 48011  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 48012  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 48013  	if rc != SQLITE_OK {
 48014  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48015  		return TCL_ERROR
 48016  	}
 48017  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 48018  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 48019  	return TCL_OK
 48020  }
 48021  
 48022  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48023  	bp := tls.Alloc(40)
 48024  	defer tls.Free(40)
 48025  
 48026  	var pArray uintptr
 48027  	var rc int32 = SQLITE_OK
 48028  	var i int32
 48029  	var n int32
 48030  	var a uintptr
 48031  
 48032  	if objc < 2 {
 48033  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 48034  		return TCL_ERROR
 48035  	}
 48036  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 48037  	n = objc - 2
 48038  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 48039  	if a == uintptr(0) {
 48040  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 48041  		return TCL_ERROR
 48042  	}
 48043  	for i = 0; i < n; i++ {
 48044  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 48045  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 48046  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 48047  	}
 48048  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 48049  	if rc != SQLITE_OK {
 48050  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48051  		return TCL_ERROR
 48052  	}
 48053  	return TCL_OK
 48054  }
 48055  
 48056  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 48057  	var i int32
 48058  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 48059  		FzName      uintptr
 48060  		FxProc      uintptr
 48061  		FclientData uintptr
 48062  	}{})); i++ {
 48063  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 48064  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 48065  	}
 48066  	return TCL_OK
 48067  }
 48068  
 48069  var aObjCmd10 = [2]struct {
 48070  	FzName      uintptr
 48071  	FxProc      uintptr
 48072  	FclientData uintptr
 48073  }{
 48074  	{FzName: ts + 32759, FxProc: 0},
 48075  	{FzName: ts + 32783, FxProc: 0},
 48076  }
 48077  
 48078  type jt_file1 = struct {
 48079  	Fbase        sqlite3_file
 48080  	FzName       uintptr
 48081  	Fflags       int32
 48082  	FeLock       int32
 48083  	FnPage       u32
 48084  	FnPagesize   u32
 48085  	FpWritable   uintptr
 48086  	FaCksum      uintptr
 48087  	FnSync       int32
 48088  	F__ccgo_pad1 [4]byte
 48089  	FiMaxOff     sqlite3_int64
 48090  	FpNext       uintptr
 48091  	FpReal       uintptr
 48092  }
 48093  
 48094  type jt_file = jt_file1
 48095  
 48096  var jt_vfs = sqlite3_vfs{
 48097  	FiVersion:          2,
 48098  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 48099  	FmxPathname:        JT_MAX_PATHNAME,
 48100  	FzName:             ts + 32805,
 48101  	FxOpen:             0,
 48102  	FxDelete:           0,
 48103  	FxAccess:           0,
 48104  	FxFullPathname:     0,
 48105  	FxDlOpen:           0,
 48106  	FxDlError:          0,
 48107  	FxDlSym:            0,
 48108  	FxDlClose:          0,
 48109  	FxRandomness:       0,
 48110  	FxSleep:            0,
 48111  	FxCurrentTime:      0,
 48112  	FxGetLastError:     0,
 48113  	FxCurrentTimeInt64: 0,
 48114  }
 48115  
 48116  var jt_io_methods = sqlite3_io_methods{
 48117  	FiVersion:               1,
 48118  	FxClose:                 0,
 48119  	FxRead:                  0,
 48120  	FxWrite:                 0,
 48121  	FxTruncate:              0,
 48122  	FxSync:                  0,
 48123  	FxFileSize:              0,
 48124  	FxLock:                  0,
 48125  	FxUnlock:                0,
 48126  	FxCheckReservedLock:     0,
 48127  	FxFileControl:           0,
 48128  	FxSectorSize:            0,
 48129  	FxDeviceCharacteristics: 0,
 48130  }
 48131  
 48132  type JtGlobal = struct {
 48133  	FpVfs  uintptr
 48134  	FpList uintptr
 48135  }
 48136  
 48137  var g2 = JtGlobal{}
 48138  
 48139  func enterJtMutex(tls *libc.TLS) {
 48140  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48141  }
 48142  
 48143  func leaveJtMutex(tls *libc.TLS) {
 48144  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48145  }
 48146  
 48147  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 48148  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 48149  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 48150  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 48151  	sqlite3.Xsqlite3_io_error_hit = 0
 48152  }
 48153  
 48154  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 48155  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 48156  	sqlite3.Xsqlite3_io_error_hit = iSave2
 48157  }
 48158  
 48159  func closeTransaction(tls *libc.TLS, p uintptr) {
 48160  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 48161  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 48162  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48163  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48164  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 48165  }
 48166  
 48167  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 48168  	var pp uintptr
 48169  	var p uintptr = pFile
 48170  
 48171  	closeTransaction(tls, p)
 48172  	enterJtMutex(tls)
 48173  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 48174  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 48175  		}
 48176  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 48177  	}
 48178  	leaveJtMutex(tls)
 48179  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48180  	return SQLITE_OK
 48181  }
 48182  
 48183  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48184  	var p uintptr = pFile
 48185  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48186  }
 48187  
 48188  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 48189  	var pMain uintptr = uintptr(0)
 48190  	enterJtMutex(tls)
 48191  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 48192  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 48193  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 48194  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 48195  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 48196  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 48197  			break
 48198  		}
 48199  	}
 48200  	leaveJtMutex(tls)
 48201  	return pMain
 48202  }
 48203  
 48204  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 48205  	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))))
 48206  }
 48207  
 48208  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 48209  	var i int32
 48210  	var cksum u32 = u32(0)
 48211  	for i = 0; i < n; i++ {
 48212  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 48213  	}
 48214  	return cksum
 48215  }
 48216  
 48217  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 48218  	bp := tls.Alloc(8)
 48219  	defer tls.Free(8)
 48220  
 48221  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 48222  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 48223  		return SQLITE_ERROR
 48224  	}
 48225  	if pnRec != 0 {
 48226  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 48227  	}
 48228  	if pnPage != 0 {
 48229  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 48230  	}
 48231  	if pnSector != 0 {
 48232  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 48233  	}
 48234  	if pnPagesize != 0 {
 48235  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 48236  	}
 48237  	return SQLITE_OK
 48238  }
 48239  
 48240  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 48241  	bp := tls.Alloc(8)
 48242  	defer tls.Free(8)
 48243  
 48244  	var aData uintptr
 48245  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 48246  	var rc int32 = SQLITE_OK
 48247  
 48248  	closeTransaction(tls, pMain)
 48249  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48250  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 48251  	(*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))))
 48252  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 48253  
 48254  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 48255  		rc = SQLITE_IOERR | int32(12)<<8
 48256  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 48257  		var iTrunk u32
 48258  
 48259  		stop_ioerr_simulation(tls, bp, bp+4)
 48260  
 48261  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 48262  		if rc == SQLITE_OK {
 48263  			var nDbsize u32 = decodeUint32(tls, aData+28)
 48264  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 48265  				var iPg u32
 48266  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 48267  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 48268  				}
 48269  			}
 48270  		}
 48271  		iTrunk = decodeUint32(tls, aData+32)
 48272  		for rc == SQLITE_OK && iTrunk > u32(0) {
 48273  			var nLeaf u32
 48274  			var iLeaf u32
 48275  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48276  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48277  			nLeaf = decodeUint32(tls, aData+4)
 48278  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 48279  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 48280  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48281  			}
 48282  			iTrunk = decodeUint32(tls, aData)
 48283  		}
 48284  
 48285  		if rc == SQLITE_OK {
 48286  			var ii int32
 48287  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 48288  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 48289  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 48290  					continue
 48291  				}
 48292  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48293  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48294  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 48295  					rc = SQLITE_OK
 48296  				}
 48297  			}
 48298  		}
 48299  
 48300  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48301  	}
 48302  
 48303  	sqlite3.Xsqlite3_free(tls, aData)
 48304  	return rc
 48305  }
 48306  
 48307  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 48308  	bp := tls.Alloc(52)
 48309  	defer tls.Free(52)
 48310  
 48311  	var rc int32
 48312  
 48313  	var pReal uintptr
 48314  	var iOff sqlite3_int64
 48315  	var iSize sqlite3_int64
 48316  	var aPage uintptr
 48317  
 48318  	var cksum u32
 48319  	_ = cksum
 48320  	var pgno u32
 48321  
 48322  	var ii u32
 48323  	rc = SQLITE_OK
 48324  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 48325  	iOff = int64(0)
 48326  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 48327  
 48328  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48329  	if !!(aPage != 0) {
 48330  		goto __1
 48331  	}
 48332  	return SQLITE_IOERR | int32(12)<<8
 48333  __1:
 48334  	;
 48335  	stop_ioerr_simulation(tls, bp, bp+4)
 48336  
 48337  __2:
 48338  	if !(rc == SQLITE_OK && iOff < iSize) {
 48339  		goto __3
 48340  	}
 48341  
 48342  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48343  	if !(rc != SQLITE_OK ||
 48344  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 48345  		goto __4
 48346  	}
 48347  	goto finish_rjf
 48348  __4:
 48349  	;
 48350  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 48351  
 48352  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 48353  		goto __5
 48354  	}
 48355  
 48356  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 48357  		goto __6
 48358  	}
 48359  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48360  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 48361  		goto __7
 48362  	}
 48363  	goto __2
 48364  __7:
 48365  	;
 48366  __6:
 48367  	;
 48368  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 48369  __5:
 48370  	;
 48371  	ii = u32(0)
 48372  __8:
 48373  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 48374  		goto __10
 48375  	}
 48376  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 48377  	if !(rc == SQLITE_OK) {
 48378  		goto __11
 48379  	}
 48380  	pgno = decodeUint32(tls, bp+8)
 48381  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 48382  		goto __12
 48383  	}
 48384  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 48385  		goto __13
 48386  	}
 48387  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 48388  	if !(rc == SQLITE_OK) {
 48389  		goto __14
 48390  	}
 48391  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48392  
 48393  __14:
 48394  	;
 48395  __13:
 48396  	;
 48397  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48398  __12:
 48399  	;
 48400  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48401  __11:
 48402  	;
 48403  	goto __9
 48404  __9:
 48405  	ii++
 48406  	goto __8
 48407  	goto __10
 48408  __10:
 48409  	;
 48410  	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)))
 48411  	goto __2
 48412  __3:
 48413  	;
 48414  finish_rjf:
 48415  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48416  	sqlite3.Xsqlite3_free(tls, aPage)
 48417  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 48418  		goto __15
 48419  	}
 48420  	rc = SQLITE_OK
 48421  __15:
 48422  	;
 48423  	return rc
 48424  }
 48425  
 48426  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48427  	var rc int32
 48428  	var p uintptr = pFile
 48429  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48430  		if iOfst == int64(0) {
 48431  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48432  
 48433  			if iAmt == 28 {
 48434  				closeTransaction(tls, pMain)
 48435  			} else if iAmt != 12 {
 48436  				var z uintptr = zBuf
 48437  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 48438  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 48439  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 48440  					return rc
 48441  				}
 48442  			}
 48443  		}
 48444  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 48445  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 48446  		}
 48447  	}
 48448  
 48449  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48450  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 48451  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 48452  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 48453  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 48454  		} else {
 48455  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 48456  			_ = pgno
 48457  
 48458  		}
 48459  	}
 48460  
 48461  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48462  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 48463  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48464  		var rc2 int32 = readJournalFile(tls, p, pMain)
 48465  		if rc == SQLITE_OK {
 48466  			rc = rc2
 48467  		}
 48468  	}
 48469  	return rc
 48470  }
 48471  
 48472  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 48473  	var p uintptr = pFile
 48474  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 48475  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48476  		closeTransaction(tls, pMain)
 48477  	}
 48478  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48479  		var pgno u32
 48480  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 48481  		_ = locking_page
 48482  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 48483  		}
 48484  	}
 48485  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 48486  }
 48487  
 48488  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 48489  	var p uintptr = pFile
 48490  
 48491  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48492  		var rc int32
 48493  		var pMain uintptr
 48494  
 48495  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48496  
 48497  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 48498  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 48499  			rc = readJournalFile(tls, p, pMain)
 48500  			if rc != SQLITE_OK {
 48501  				return rc
 48502  			}
 48503  		}
 48504  	}
 48505  
 48506  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 48507  }
 48508  
 48509  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 48510  	var p uintptr = pFile
 48511  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 48512  }
 48513  
 48514  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48515  	var rc int32
 48516  	var p uintptr = pFile
 48517  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48518  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 48519  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48520  	}
 48521  	return rc
 48522  }
 48523  
 48524  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48525  	var rc int32
 48526  	var p uintptr = pFile
 48527  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48528  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 48529  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48530  	}
 48531  	return rc
 48532  }
 48533  
 48534  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 48535  	var p uintptr = pFile
 48536  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 48537  }
 48538  
 48539  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 48540  	var p uintptr = pFile
 48541  	return (*struct {
 48542  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48543  	})(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)
 48544  }
 48545  
 48546  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48547  	var p uintptr = pFile
 48548  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48549  }
 48550  
 48551  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48552  	var p uintptr = pFile
 48553  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48554  }
 48555  
 48556  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48557  	var rc int32
 48558  	var p uintptr = pFile
 48559  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 48560  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 48561  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 48562  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48563  
 48564  	if rc == SQLITE_OK {
 48565  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 48566  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 48567  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 48568  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 48569  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 48570  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48571  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48572  		enterJtMutex(tls)
 48573  		if zName != 0 {
 48574  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 48575  			g2.FpList = p
 48576  		}
 48577  		leaveJtMutex(tls)
 48578  	}
 48579  	return rc
 48580  }
 48581  
 48582  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48583  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 48584  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 48585  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 48586  		if pMain != 0 {
 48587  			closeTransaction(tls, pMain)
 48588  		}
 48589  	}
 48590  
 48591  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 48592  }
 48593  
 48594  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48595  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 48596  }
 48597  
 48598  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48599  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 48600  }
 48601  
 48602  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48603  	return (*struct {
 48604  		f func(*libc.TLS, uintptr, uintptr) uintptr
 48605  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 48606  }
 48607  
 48608  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48609  	(*struct {
 48610  		f func(*libc.TLS, uintptr, int32, uintptr)
 48611  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 48612  }
 48613  
 48614  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 48615  	return (*struct {
 48616  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 48617  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 48618  }
 48619  
 48620  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 48621  	(*struct {
 48622  		f func(*libc.TLS, uintptr, uintptr)
 48623  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 48624  }
 48625  
 48626  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 48627  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 48628  }
 48629  
 48630  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48631  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 48632  }
 48633  
 48634  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48635  	return (*struct {
 48636  		f func(*libc.TLS, uintptr, uintptr) int32
 48637  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 48638  }
 48639  
 48640  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48641  	return (*struct {
 48642  		f func(*libc.TLS, uintptr, uintptr) int32
 48643  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 48644  }
 48645  
 48646  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 48647  	return (*struct {
 48648  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48649  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 48650  }
 48651  
 48652  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 48653  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 48654  	if g2.FpVfs == uintptr(0) {
 48655  		return SQLITE_ERROR
 48656  	}
 48657  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 48658  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 48659  		jt_vfs.FiVersion = 1
 48660  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 48661  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 48662  	}
 48663  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 48664  	return SQLITE_OK
 48665  }
 48666  
 48667  func jt_unregister(tls *libc.TLS) {
 48668  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 48669  }
 48670  
 48671  type MemFault = struct {
 48672  	FiCountdown   int32
 48673  	FnRepeat      int32
 48674  	FnBenign      int32
 48675  	FnFail        int32
 48676  	FnOkBefore    int32
 48677  	FnOkAfter     int32
 48678  	Fenable       u8
 48679  	F__ccgo_pad1  [3]byte
 48680  	FisInstalled  int32
 48681  	FisBenignMode int32
 48682  	F__ccgo_pad2  [4]byte
 48683  	Fm            sqlite3_mem_methods
 48684  }
 48685  
 48686  var memfault MemFault
 48687  
 48688  func sqlite3Fault(tls *libc.TLS) {
 48689  	cnt1++
 48690  }
 48691  
 48692  var cnt1 int32 = 0
 48693  
 48694  func sqlite3FirstFault(tls *libc.TLS) {
 48695  	cnt2++
 48696  }
 48697  
 48698  var cnt2 int32 = 0
 48699  
 48700  func faultsimStep(tls *libc.TLS) int32 {
 48701  	if !(int32(memfault.Fenable) != 0) {
 48702  		memfault.FnOkAfter++
 48703  		return 0
 48704  	}
 48705  	if memfault.FiCountdown > 0 {
 48706  		memfault.FiCountdown--
 48707  		memfault.FnOkBefore++
 48708  		return 0
 48709  	}
 48710  	if memfault.FnFail == 0 {
 48711  		sqlite3FirstFault(tls)
 48712  	}
 48713  	sqlite3Fault(tls)
 48714  	memfault.FnFail++
 48715  	if memfault.FisBenignMode > 0 {
 48716  		memfault.FnBenign++
 48717  	}
 48718  	memfault.FnRepeat--
 48719  	if memfault.FnRepeat <= 0 {
 48720  		memfault.Fenable = u8(0)
 48721  	}
 48722  	return 1
 48723  }
 48724  
 48725  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 48726  	var p uintptr = uintptr(0)
 48727  	if !(faultsimStep(tls) != 0) {
 48728  		p = (*struct {
 48729  			f func(*libc.TLS, int32) uintptr
 48730  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 48731  	}
 48732  	return p
 48733  }
 48734  
 48735  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 48736  	var p uintptr = uintptr(0)
 48737  	if !(faultsimStep(tls) != 0) {
 48738  		p = (*struct {
 48739  			f func(*libc.TLS, uintptr, int32) uintptr
 48740  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 48741  	}
 48742  	return p
 48743  }
 48744  
 48745  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 48746  	memfault.FiCountdown = nDelay
 48747  	memfault.FnRepeat = nRepeat
 48748  	memfault.FnBenign = 0
 48749  	memfault.FnFail = 0
 48750  	memfault.FnOkBefore = 0
 48751  	memfault.FnOkAfter = 0
 48752  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 48753  
 48754  	memfault.FisBenignMode = 0
 48755  }
 48756  
 48757  func faultsimFailures(tls *libc.TLS) int32 {
 48758  	return memfault.FnFail
 48759  }
 48760  
 48761  func faultsimBenignFailures(tls *libc.TLS) int32 {
 48762  	return memfault.FnBenign
 48763  }
 48764  
 48765  func faultsimPending(tls *libc.TLS) int32 {
 48766  	if memfault.Fenable != 0 {
 48767  		return memfault.FiCountdown
 48768  	} else {
 48769  		return -1
 48770  	}
 48771  	return int32(0)
 48772  }
 48773  
 48774  func faultsimBeginBenign(tls *libc.TLS) {
 48775  	memfault.FisBenignMode++
 48776  }
 48777  
 48778  func faultsimEndBenign(tls *libc.TLS) {
 48779  	memfault.FisBenignMode--
 48780  }
 48781  
 48782  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 48783  	bp := tls.Alloc(200)
 48784  	defer tls.Free(200)
 48785  
 48786  	var rc int32
 48787  
 48788  	install = func() int32 {
 48789  		if install != 0 {
 48790  			return 1
 48791  		}
 48792  		return 0
 48793  	}()
 48794  
 48795  	if install == memfault.FisInstalled {
 48796  		return SQLITE_ERROR
 48797  	}
 48798  
 48799  	if install != 0 {
 48800  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 48801  
 48802  		if rc == SQLITE_OK {
 48803  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 48804  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 48805  				f func(*libc.TLS, int32) uintptr
 48806  			}{faultsimMalloc}))
 48807  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 48808  				f func(*libc.TLS, uintptr, int32) uintptr
 48809  			}{faultsimRealloc}))
 48810  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 48811  		}
 48812  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48813  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 48814  	} else {
 48815  		libc.Xmemset(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})))
 48816  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 48817  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 48818  
 48819  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 48820  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48821  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 48822  	}
 48823  
 48824  	if rc == SQLITE_OK {
 48825  		memfault.FisInstalled = 1
 48826  	}
 48827  	return rc
 48828  }
 48829  
 48830  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 48831  	bp := tls.Alloc(20)
 48832  	defer tls.Free(20)
 48833  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 48834  
 48835  	var i int32
 48836  	var k int32
 48837  
 48838  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 48839  		libc.Xstrcpy(tls, z, ts+14193)
 48840  		return
 48841  	}
 48842  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48843  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 48844  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48845  		libc.Xmemcpy(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48846  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 48847  	} else {
 48848  	}
 48849  	i = 0
 48850  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 48851  __1:
 48852  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 48853  		goto __3
 48854  	}
 48855  	{
 48856  		*(*int8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 48857  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 48858  
 48859  	}
 48860  	goto __2
 48861  __2:
 48862  	i++
 48863  	k--
 48864  	goto __1
 48865  	goto __3
 48866  __3:
 48867  	;
 48868  	*(*int8)(unsafe.Pointer(z + 16)) = int8(0)
 48869  }
 48870  
 48871  var zHex = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 48872  
 48873  func hexToInt(tls *libc.TLS, h int32) int32 {
 48874  	if h >= '0' && h <= '9' {
 48875  		return h - '0'
 48876  	} else if h >= 'a' && h <= 'f' {
 48877  		return h - 'a' + 10
 48878  	} else {
 48879  		return -1
 48880  	}
 48881  	return int32(0)
 48882  }
 48883  
 48884  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 48885  	bp := tls.Alloc(12)
 48886  	defer tls.Free(12)
 48887  
 48888  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 48889  	var i int32
 48890  
 48891  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*int8)(unsafe.Pointer(z)) != 0; i++ {
 48892  		var v int32
 48893  		v = hexToInt(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 48894  		if v < 0 {
 48895  			return TCL_ERROR
 48896  		}
 48897  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 48898  	}
 48899  	if int32(*(*int8)(unsafe.Pointer(z))) != 0 {
 48900  		return TCL_ERROR
 48901  	}
 48902  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48903  		libc.Xmemcpy(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 48904  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48905  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 48906  		libc.Xmemcpy(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48907  	} else {
 48908  	}
 48909  	return TCL_OK
 48910  }
 48911  
 48912  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48913  	bp := tls.Alloc(120)
 48914  	defer tls.Free(120)
 48915  
 48916  	var p uintptr
 48917  
 48918  	if objc != 2 {
 48919  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 48920  		return TCL_ERROR
 48921  	}
 48922  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48923  		return TCL_ERROR
 48924  	}
 48925  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 48926  	pointerToText(tls, p, bp+20)
 48927  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 48928  	return TCL_OK
 48929  }
 48930  
 48931  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48932  	bp := tls.Alloc(156)
 48933  	defer tls.Free(156)
 48934  
 48935  	var p uintptr
 48936  
 48937  	if objc != 3 {
 48938  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 48939  		return TCL_ERROR
 48940  	}
 48941  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 48942  		return TCL_ERROR
 48943  	}
 48944  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 48945  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48946  		return TCL_ERROR
 48947  	}
 48948  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 48949  	pointerToText(tls, p, bp+56)
 48950  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 48951  	return TCL_OK
 48952  }
 48953  
 48954  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48955  	bp := tls.Alloc(32)
 48956  	defer tls.Free(32)
 48957  
 48958  	if objc != 2 {
 48959  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 48960  		return TCL_ERROR
 48961  	}
 48962  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 48963  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48964  		return TCL_ERROR
 48965  	}
 48966  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 48967  	return TCL_OK
 48968  }
 48969  
 48970  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48971  	bp := tls.Alloc(172)
 48972  	defer tls.Free(172)
 48973  
 48974  	var i int32
 48975  	var zHex uintptr
 48976  	var zOut uintptr
 48977  
 48978  	if objc != 4 {
 48979  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 48980  		return TCL_ERROR
 48981  	}
 48982  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 48983  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48984  		return TCL_ERROR
 48985  	}
 48986  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 48987  		return TCL_ERROR
 48988  	}
 48989  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 48990  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 48991  		return TCL_ERROR
 48992  	}
 48993  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 48994  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]int8{}))*uint64(2) {
 48995  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]int8{})) * uint64(2))
 48996  	}
 48997  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 48998  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 48999  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 49000  		return TCL_ERROR
 49001  	}
 49002  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 49003  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 49004  		*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 49005  	}
 49006  	return TCL_OK
 49007  }
 49008  
 49009  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49010  	bp := tls.Alloc(168)
 49011  	defer tls.Free(168)
 49012  
 49013  	var n int32
 49014  	var zBin uintptr
 49015  
 49016  	if objc != 3 {
 49017  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 49018  		return TCL_ERROR
 49019  	}
 49020  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 49021  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 49022  		return TCL_ERROR
 49023  	}
 49024  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 49025  		return TCL_ERROR
 49026  	}
 49027  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 49028  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49029  		return TCL_ERROR
 49030  	}
 49031  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 49032  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 49033  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]int8{}))-uint64(1))/uint64(2) {
 49034  			n = int32((uint64(unsafe.Sizeof([100]int8{})) - uint64(1)) / uint64(2))
 49035  		} else {
 49036  			n = *(*int32)(unsafe.Pointer(bp + 64))
 49037  		}
 49038  		libc.Xmemcpy(tls, bp+68, zBin, uint64(n))
 49039  		zBin += uintptr(n)
 49040  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 49041  		sqlite3TestBinToHex(tls, bp+68, n)
 49042  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 49043  	}
 49044  	return TCL_OK
 49045  }
 49046  
 49047  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49048  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 49049  	return TCL_OK
 49050  }
 49051  
 49052  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49053  	bp := tls.Alloc(4)
 49054  	defer tls.Free(4)
 49055  
 49056  	*(*int32)(unsafe.Pointer(bp)) = 0
 49057  	if objc != 1 && objc != 2 {
 49058  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 49059  		return TCL_ERROR
 49060  	}
 49061  	if objc == 2 {
 49062  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49063  			return TCL_ERROR
 49064  		}
 49065  	}
 49066  	tcl.XTcl_SetObjResult(tls, interp,
 49067  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 49068  	return TCL_OK
 49069  }
 49070  
 49071  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49072  	bp := tls.Alloc(4)
 49073  	defer tls.Free(4)
 49074  
 49075  	if objc != 2 {
 49076  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 49077  		return TCL_ERROR
 49078  	}
 49079  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49080  		return TCL_ERROR
 49081  	}
 49082  	return TCL_OK
 49083  }
 49084  
 49085  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49086  	if objc != 2 {
 49087  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49088  		return TCL_ERROR
 49089  	}
 49090  	return TCL_OK
 49091  }
 49092  
 49093  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49094  	var nMalloc int32 = -1
 49095  	if objc != 1 {
 49096  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49097  		return TCL_ERROR
 49098  	}
 49099  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 49100  	return TCL_OK
 49101  }
 49102  
 49103  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49104  	bp := tls.Alloc(36)
 49105  	defer tls.Free(36)
 49106  
 49107  	var ii int32
 49108  
 49109  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 49110  	var pBenignCnt uintptr = uintptr(0)
 49111  	var nBenign int32
 49112  	var nFail int32 = 0
 49113  
 49114  	if objc < 2 {
 49115  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 49116  		return TCL_ERROR
 49117  	}
 49118  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 49119  		return TCL_ERROR
 49120  	}
 49121  
 49122  	for ii = 2; ii < objc; ii = ii + 2 {
 49123  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 49124  		var zErr uintptr = uintptr(0)
 49125  
 49126  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49127  			if ii == objc-1 {
 49128  				zErr = ts + 12638
 49129  			} else {
 49130  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 49131  					return TCL_ERROR
 49132  				}
 49133  			}
 49134  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49135  			if ii == objc-1 {
 49136  				zErr = ts + 12638
 49137  			} else {
 49138  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 49139  			}
 49140  		} else {
 49141  			zErr = ts + 12444
 49142  		}
 49143  
 49144  		if zErr != 0 {
 49145  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 49146  			return TCL_ERROR
 49147  		}
 49148  	}
 49149  
 49150  	nBenign = faultsimBenignFailures(tls)
 49151  	nFail = faultsimFailures(tls)
 49152  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 49153  
 49154  	if pBenignCnt != 0 {
 49155  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 49156  	}
 49157  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 49158  	return TCL_OK
 49159  }
 49160  
 49161  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49162  	var nPending int32
 49163  	if objc != 1 {
 49164  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49165  		return TCL_ERROR
 49166  	}
 49167  	nPending = faultsimPending(tls)
 49168  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 49169  	return TCL_OK
 49170  }
 49171  
 49172  var sqlite3_memdebug_title_count int32 = 0
 49173  
 49174  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49175  	sqlite3_memdebug_title_count++
 49176  	if objc != 2 {
 49177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 49178  		return TCL_ERROR
 49179  	}
 49180  	return TCL_OK
 49181  }
 49182  
 49183  var aMallocLog Tcl_HashTable
 49184  var mallocLogEnabled int32 = 0
 49185  
 49186  type MallocLog1 = struct {
 49187  	FnCall int32
 49188  	FnByte int32
 49189  }
 49190  
 49191  type MallocLog = MallocLog1
 49192  
 49193  func test_memdebug_log_clear(tls *libc.TLS) {
 49194  	bp := tls.Alloc(24)
 49195  	defer tls.Free(24)
 49196  
 49197  	var pEntry uintptr
 49198  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 49199  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49200  		tcl.XTcl_Free(tls, pLog)
 49201  	}
 49202  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 49203  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49204  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49205  			return uint64(1)
 49206  		}
 49207  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49208  	}()))
 49209  }
 49210  
 49211  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49212  	bp := tls.Alloc(128)
 49213  	defer tls.Free(128)
 49214  
 49215  	if !(isInit != 0) {
 49216  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 49217  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 49218  				return uint64(1)
 49219  			}
 49220  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 49221  		}()))
 49222  		isInit = 1
 49223  	}
 49224  
 49225  	if objc < 2 {
 49226  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 49227  	}
 49228  	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 {
 49229  		return TCL_ERROR
 49230  	}
 49231  
 49232  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 49233  	case uint32(0):
 49234  		mallocLogEnabled = 1
 49235  		break
 49236  	case uint32(1):
 49237  		mallocLogEnabled = 0
 49238  		break
 49239  	case uint32(2):
 49240  		{
 49241  			var pEntry uintptr
 49242  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 49243  
 49244  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 49245  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49246  				var aKey uintptr = func() uintptr {
 49247  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 49248  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 49249  					}
 49250  					return pEntry + 32
 49251  				}()
 49252  				var ii int32
 49253  
 49254  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 49255  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 49256  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 49257  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 49258  				}
 49259  
 49260  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 49261  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 49262  			}
 49263  
 49264  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 49265  			break
 49266  
 49267  		}
 49268  	case uint32(3):
 49269  		{
 49270  			test_memdebug_log_clear(tls)
 49271  			break
 49272  
 49273  		}
 49274  
 49275  	case uint32(4):
 49276  		{
 49277  			break
 49278  
 49279  		}
 49280  	}
 49281  
 49282  	return TCL_OK
 49283  }
 49284  
 49285  var isInit int32 = 0
 49286  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 49287  
 49288  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49289  	bp := tls.Alloc(56)
 49290  	defer tls.Free(56)
 49291  
 49292  	var pRes uintptr
 49293  	if objc != 3 {
 49294  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 49295  		return TCL_ERROR
 49296  	}
 49297  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 49298  		return TCL_ERROR
 49299  	}
 49300  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 49301  		return TCL_ERROR
 49302  	}
 49303  	libc.Xfree(tls, buf1)
 49304  	buf1 = uintptr(0)
 49305  
 49306  	pRes = tcl.XTcl_NewObj(tls)
 49307  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 49308  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 49309  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 49310  
 49311  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 49312  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 49313  	} else {
 49314  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 49315  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49316  	}
 49317  	return TCL_OK
 49318  }
 49319  
 49320  var buf1 uintptr = uintptr(0)
 49321  
 49322  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49323  	bp := tls.Alloc(32)
 49324  	defer tls.Free(32)
 49325  
 49326  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49327  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 49328  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 49329  	if objc < 2 || objc > 5 {
 49330  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 49331  			ts+33032)
 49332  		return TCL_ERROR
 49333  	}
 49334  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49335  		return TCL_ERROR
 49336  	}
 49337  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 49338  		return TCL_ERROR
 49339  	}
 49340  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 49341  		return TCL_ERROR
 49342  	}
 49343  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 49344  		return TCL_ERROR
 49345  	}
 49346  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 49347  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 49348  			uintptr(0)))
 49349  		return TCL_ERROR
 49350  	}
 49351  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 49352  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 49353  	return TCL_OK
 49354  }
 49355  
 49356  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49357  	bp := tls.Alloc(12)
 49358  	defer tls.Free(12)
 49359  
 49360  	var rc int32
 49361  	if objc != 2 {
 49362  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49363  		return TCL_ERROR
 49364  	}
 49365  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49366  		return TCL_ERROR
 49367  	}
 49368  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49369  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49370  	return TCL_OK
 49371  }
 49372  
 49373  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49374  	bp := tls.Alloc(24)
 49375  	defer tls.Free(24)
 49376  
 49377  	var pRet uintptr
 49378  	if objc != 3 {
 49379  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 49380  		return TCL_ERROR
 49381  	}
 49382  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 49383  		return TCL_ERROR
 49384  	}
 49385  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 49386  		return TCL_ERROR
 49387  	}
 49388  	pRet = tcl.XTcl_NewObj(tls)
 49389  	tcl.XTcl_ListObjAppendElement(tls,
 49390  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 49391  	tcl.XTcl_ListObjAppendElement(tls,
 49392  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 49393  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 49394  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 49395  	return TCL_OK
 49396  }
 49397  
 49398  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49399  	bp := tls.Alloc(84)
 49400  	defer tls.Free(84)
 49401  
 49402  	var rc int32
 49403  
 49404  	if objc != 5 {
 49405  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 49406  		return TCL_ERROR
 49407  	}
 49408  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 49409  		return TCL_ERROR
 49410  	}
 49411  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 49412  		return TCL_ERROR
 49413  	}
 49414  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 49415  		return TCL_ERROR
 49416  	}
 49417  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 49418  		return TCL_ERROR
 49419  	}
 49420  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 49421  		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))))
 49422  	} 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{})) {
 49423  		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))))
 49424  	} else {
 49425  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 49426  		return TCL_ERROR
 49427  	}
 49428  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49429  	return TCL_OK
 49430  }
 49431  
 49432  var azBuf [2][10000]int8
 49433  
 49434  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49435  	bp := tls.Alloc(56)
 49436  	defer tls.Free(56)
 49437  
 49438  	var rc int32
 49439  
 49440  	var aArg uintptr = objv + 1*8
 49441  	var nArg int32 = objc - 1
 49442  
 49443  	if nArg != 2 {
 49444  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 49445  		return TCL_ERROR
 49446  	}
 49447  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 49448  		return TCL_ERROR
 49449  	}
 49450  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 49451  		return TCL_ERROR
 49452  	}
 49453  
 49454  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 49455  		libc.Xfree(tls, zBuf)
 49456  		zBuf = uintptr(0)
 49457  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 49458  	} else {
 49459  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 49460  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49461  	}
 49462  
 49463  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49464  	return TCL_OK
 49465  }
 49466  
 49467  var zBuf uintptr
 49468  
 49469  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49470  	bp := tls.Alloc(12)
 49471  	defer tls.Free(12)
 49472  
 49473  	var rc int32
 49474  
 49475  	var aArg uintptr = objv + 1*8
 49476  	var nArg int32 = objc - 1
 49477  
 49478  	if nArg != 1 {
 49479  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 49480  		return TCL_ERROR
 49481  	}
 49482  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 49483  		return TCL_ERROR
 49484  	}
 49485  
 49486  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49487  
 49488  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49489  	return TCL_OK
 49490  }
 49491  
 49492  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49493  	bp := tls.Alloc(40)
 49494  	defer tls.Free(40)
 49495  
 49496  	if objc != 2 && objc != 1 {
 49497  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 49498  		return TCL_ERROR
 49499  	}
 49500  	if objc == 2 {
 49501  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 49502  			return TCL_ERROR
 49503  		}
 49504  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 49505  			tcl.XTcl_AppendResult(tls, interp,
 49506  				libc.VaList(bp, ts+33209,
 49507  					uintptr(0)))
 49508  			return TCL_ERROR
 49509  		}
 49510  	} else {
 49511  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 49512  			tcl.XTcl_AppendResult(tls, interp,
 49513  				libc.VaList(bp+16, ts+33267,
 49514  					uintptr(0)))
 49515  			return TCL_ERROR
 49516  		}
 49517  	}
 49518  	return TCL_OK
 49519  }
 49520  
 49521  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49522  	bp := tls.Alloc(12)
 49523  	defer tls.Free(12)
 49524  
 49525  	var rc int32
 49526  
 49527  	if objc != 2 {
 49528  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49529  		return TCL_ERROR
 49530  	}
 49531  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49532  		return TCL_ERROR
 49533  	}
 49534  
 49535  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49536  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49537  
 49538  	return TCL_OK
 49539  }
 49540  
 49541  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49542  	bp := tls.Alloc(12)
 49543  	defer tls.Free(12)
 49544  
 49545  	var rc int32
 49546  
 49547  	if objc != 2 {
 49548  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49549  		return TCL_ERROR
 49550  	}
 49551  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49552  		return TCL_ERROR
 49553  	}
 49554  
 49555  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49556  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49557  
 49558  	return TCL_OK
 49559  }
 49560  
 49561  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49562  	bp := tls.Alloc(12)
 49563  	defer tls.Free(12)
 49564  
 49565  	var rc int32
 49566  
 49567  	if objc != 2 {
 49568  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49569  		return TCL_ERROR
 49570  	}
 49571  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49572  		return TCL_ERROR
 49573  	}
 49574  
 49575  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49576  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49577  
 49578  	return TCL_OK
 49579  }
 49580  
 49581  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49582  	if objc != 2 {
 49583  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49584  		return TCL_ERROR
 49585  	}
 49586  
 49587  	switch int32(clientData) {
 49588  	case 3:
 49589  		{
 49590  		}
 49591  		fallthrough
 49592  	case 5:
 49593  		{
 49594  		}
 49595  	}
 49596  	return TCL_OK
 49597  }
 49598  
 49599  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49600  	bp := tls.Alloc(16)
 49601  	defer tls.Free(16)
 49602  
 49603  	var rc int32
 49604  
 49605  	var i int32
 49606  	*(*int32)(unsafe.Pointer(bp)) = 0
 49607  
 49608  	var zOpName uintptr
 49609  	var pResult uintptr
 49610  	if objc != 3 {
 49611  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 49612  		return TCL_ERROR
 49613  	}
 49614  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 49615  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49616  		FzName       uintptr
 49617  		Fop          int32
 49618  		F__ccgo_pad1 [4]byte
 49619  	}{}))); i++ {
 49620  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 49621  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 49622  			break
 49623  		}
 49624  	}
 49625  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49626  		FzName       uintptr
 49627  		Fop          int32
 49628  		F__ccgo_pad1 [4]byte
 49629  	}{}))) {
 49630  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49631  			return TCL_ERROR
 49632  		}
 49633  	}
 49634  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 49635  		return TCL_ERROR
 49636  	}
 49637  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49638  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 49639  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 49640  	pResult = tcl.XTcl_NewObj(tls)
 49641  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49642  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 49643  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 49644  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49645  	return TCL_OK
 49646  }
 49647  
 49648  var aOp1 = [10]struct {
 49649  	FzName       uintptr
 49650  	Fop          int32
 49651  	F__ccgo_pad1 [4]byte
 49652  }{
 49653  	{FzName: ts + 33338},
 49654  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 49655  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 49656  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 49657  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 49658  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 49659  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 49660  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 49661  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 49662  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 49663  }
 49664  
 49665  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49666  	bp := tls.Alloc(24)
 49667  	defer tls.Free(24)
 49668  
 49669  	var rc int32
 49670  
 49671  	var i int32
 49672  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49673  
 49674  	var zOpName uintptr
 49675  
 49676  	var pResult uintptr
 49677  	if objc != 4 {
 49678  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 49679  		return TCL_ERROR
 49680  	}
 49681  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 49682  		return TCL_ERROR
 49683  	}
 49684  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 49685  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint64(7)) == 0 {
 49686  		zOpName += uintptr(7)
 49687  	}
 49688  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint64(9)) == 0 {
 49689  		zOpName += uintptr(9)
 49690  	}
 49691  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49692  		FzName       uintptr
 49693  		Fop          int32
 49694  		F__ccgo_pad1 [4]byte
 49695  	}{}))); i++ {
 49696  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 49697  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 49698  			break
 49699  		}
 49700  	}
 49701  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49702  		FzName       uintptr
 49703  		Fop          int32
 49704  		F__ccgo_pad1 [4]byte
 49705  	}{}))) {
 49706  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 49707  			return TCL_ERROR
 49708  		}
 49709  	}
 49710  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 49711  		return TCL_ERROR
 49712  	}
 49713  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 49714  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49715  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 49716  	pResult = tcl.XTcl_NewObj(tls)
 49717  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49718  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 49719  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 49720  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49721  	return TCL_OK
 49722  }
 49723  
 49724  var aOp2 = [13]struct {
 49725  	FzName       uintptr
 49726  	Fop          int32
 49727  	F__ccgo_pad1 [4]byte
 49728  }{
 49729  	{FzName: ts + 33661},
 49730  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 49731  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 49732  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 49733  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 49734  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 49735  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 49736  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 49737  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 49738  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 49739  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 49740  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 49741  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 49742  }
 49743  
 49744  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49745  	bp := tls.Alloc(4)
 49746  	defer tls.Free(4)
 49747  
 49748  	var rc int32
 49749  
 49750  	if objc != 2 {
 49751  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49752  		return TCL_ERROR
 49753  	}
 49754  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 49755  		return TCL_ERROR
 49756  	}
 49757  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 49758  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49759  	return TCL_OK
 49760  }
 49761  
 49762  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49763  	var rc int32 = SQLITE_MISUSE
 49764  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49765  	return TCL_OK
 49766  }
 49767  
 49768  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49769  	bp := tls.Alloc(4)
 49770  	defer tls.Free(4)
 49771  
 49772  	if objc > 2 {
 49773  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 49774  		return TCL_ERROR
 49775  	} else if objc == 2 {
 49776  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49777  			return TCL_ERROR
 49778  		}
 49779  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 49780  	}
 49781  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 49782  	return TCL_OK
 49783  }
 49784  
 49785  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 49786  	var i int32
 49787  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 49788  		FzName       uintptr
 49789  		FxProc       uintptr
 49790  		FclientData  int32
 49791  		F__ccgo_pad1 [4]byte
 49792  	}{})); i++ {
 49793  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 49794  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 49795  	}
 49796  	return TCL_OK
 49797  }
 49798  
 49799  var aObjCmd11 = [32]struct {
 49800  	FzName       uintptr
 49801  	FxProc       uintptr
 49802  	FclientData  int32
 49803  	F__ccgo_pad1 [4]byte
 49804  }{
 49805  	{FzName: ts + 28095, FxProc: 0},
 49806  	{FzName: ts + 28110, FxProc: 0},
 49807  	{FzName: ts + 33849, FxProc: 0},
 49808  	{FzName: ts + 33862, FxProc: 0},
 49809  	{FzName: ts + 33869, FxProc: 0},
 49810  	{FzName: ts + 33876, FxProc: 0},
 49811  	{FzName: ts + 33896, FxProc: 0},
 49812  	{FzName: ts + 33921, FxProc: 0},
 49813  	{FzName: ts + 33948, FxProc: 0},
 49814  	{FzName: ts + 33970, FxProc: 0},
 49815  	{FzName: ts + 33992, FxProc: 0},
 49816  	{FzName: ts + 34017, FxProc: 0},
 49817  	{FzName: ts + 34043, FxProc: 0},
 49818  	{FzName: ts + 34073, FxProc: 0},
 49819  	{FzName: ts + 34094, FxProc: 0},
 49820  	{FzName: ts + 34119, FxProc: 0},
 49821  	{FzName: ts + 34145, FxProc: 0},
 49822  	{FzName: ts + 34160, FxProc: 0},
 49823  	{FzName: ts + 34178, FxProc: 0},
 49824  	{FzName: ts + 34202, FxProc: 0},
 49825  	{FzName: ts + 34222, FxProc: 0},
 49826  	{FzName: ts + 34247, FxProc: 0},
 49827  	{FzName: ts + 34272, FxProc: 0},
 49828  	{FzName: ts + 34297, FxProc: 0},
 49829  	{FzName: ts + 34318, FxProc: 0},
 49830  	{FzName: ts + 34337, FxProc: 0},
 49831  	{FzName: ts + 34356, FxProc: 0},
 49832  	{FzName: ts + 34377, FxProc: 0},
 49833  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 49834  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 49835  	{FzName: ts + 34447, FxProc: 0},
 49836  	{FzName: ts + 34471, FxProc: 0},
 49837  }
 49838  
 49839  type MD5Context1 = struct {
 49840  	FisInit int32
 49841  	Fbuf    [4]uint32
 49842  	Fbits   [2]uint32
 49843  	Fin     [64]uint8
 49844  }
 49845  
 49846  type MD5Context = MD5Context1
 49847  
 49848  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 49849  	var t uint32
 49850  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 49851  		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))))
 49852  		*(*uint32)(unsafe.Pointer(buf)) = t
 49853  		buf += uintptr(4)
 49854  	}
 49855  }
 49856  
 49857  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 49858  	var a uint32
 49859  	var b uint32
 49860  	var c uint32
 49861  	var d uint32
 49862  
 49863  	a = *(*uint32)(unsafe.Pointer(buf))
 49864  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 49865  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 49866  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 49867  
 49868  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 49869  	a = a<<7 | a>>(32-7)
 49870  	a = a + b
 49871  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 49872  	d = d<<12 | d>>(32-12)
 49873  	d = d + a
 49874  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 49875  	c = c<<17 | c>>(32-17)
 49876  	c = c + d
 49877  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 49878  	b = b<<22 | b>>(32-22)
 49879  	b = b + c
 49880  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 49881  	a = a<<7 | a>>(32-7)
 49882  	a = a + b
 49883  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 49884  	d = d<<12 | d>>(32-12)
 49885  	d = d + a
 49886  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 49887  	c = c<<17 | c>>(32-17)
 49888  	c = c + d
 49889  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 49890  	b = b<<22 | b>>(32-22)
 49891  	b = b + c
 49892  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 49893  	a = a<<7 | a>>(32-7)
 49894  	a = a + b
 49895  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 49896  	d = d<<12 | d>>(32-12)
 49897  	d = d + a
 49898  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 49899  	c = c<<17 | c>>(32-17)
 49900  	c = c + d
 49901  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 49902  	b = b<<22 | b>>(32-22)
 49903  	b = b + c
 49904  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 49905  	a = a<<7 | a>>(32-7)
 49906  	a = a + b
 49907  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 49908  	d = d<<12 | d>>(32-12)
 49909  	d = d + a
 49910  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 49911  	c = c<<17 | c>>(32-17)
 49912  	c = c + d
 49913  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 49914  	b = b<<22 | b>>(32-22)
 49915  	b = b + c
 49916  
 49917  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 49918  	a = a<<5 | a>>(32-5)
 49919  	a = a + b
 49920  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 49921  	d = d<<9 | d>>(32-9)
 49922  	d = d + a
 49923  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 49924  	c = c<<14 | c>>(32-14)
 49925  	c = c + d
 49926  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 49927  	b = b<<20 | b>>(32-20)
 49928  	b = b + c
 49929  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 49930  	a = a<<5 | a>>(32-5)
 49931  	a = a + b
 49932  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 49933  	d = d<<9 | d>>(32-9)
 49934  	d = d + a
 49935  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 49936  	c = c<<14 | c>>(32-14)
 49937  	c = c + d
 49938  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 49939  	b = b<<20 | b>>(32-20)
 49940  	b = b + c
 49941  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 49942  	a = a<<5 | a>>(32-5)
 49943  	a = a + b
 49944  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 49945  	d = d<<9 | d>>(32-9)
 49946  	d = d + a
 49947  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 49948  	c = c<<14 | c>>(32-14)
 49949  	c = c + d
 49950  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 49951  	b = b<<20 | b>>(32-20)
 49952  	b = b + c
 49953  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 49954  	a = a<<5 | a>>(32-5)
 49955  	a = a + b
 49956  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 49957  	d = d<<9 | d>>(32-9)
 49958  	d = d + a
 49959  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 49960  	c = c<<14 | c>>(32-14)
 49961  	c = c + d
 49962  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 49963  	b = b<<20 | b>>(32-20)
 49964  	b = b + c
 49965  
 49966  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 49967  	a = a<<4 | a>>(32-4)
 49968  	a = a + b
 49969  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 49970  	d = d<<11 | d>>(32-11)
 49971  	d = d + a
 49972  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 49973  	c = c<<16 | c>>(32-16)
 49974  	c = c + d
 49975  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 49976  	b = b<<23 | b>>(32-23)
 49977  	b = b + c
 49978  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 49979  	a = a<<4 | a>>(32-4)
 49980  	a = a + b
 49981  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 49982  	d = d<<11 | d>>(32-11)
 49983  	d = d + a
 49984  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 49985  	c = c<<16 | c>>(32-16)
 49986  	c = c + d
 49987  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 49988  	b = b<<23 | b>>(32-23)
 49989  	b = b + c
 49990  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 49991  	a = a<<4 | a>>(32-4)
 49992  	a = a + b
 49993  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 49994  	d = d<<11 | d>>(32-11)
 49995  	d = d + a
 49996  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 49997  	c = c<<16 | c>>(32-16)
 49998  	c = c + d
 49999  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 50000  	b = b<<23 | b>>(32-23)
 50001  	b = b + c
 50002  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 50003  	a = a<<4 | a>>(32-4)
 50004  	a = a + b
 50005  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 50006  	d = d<<11 | d>>(32-11)
 50007  	d = d + a
 50008  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 50009  	c = c<<16 | c>>(32-16)
 50010  	c = c + d
 50011  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 50012  	b = b<<23 | b>>(32-23)
 50013  	b = b + c
 50014  
 50015  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 50016  	a = a<<6 | a>>(32-6)
 50017  	a = a + b
 50018  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 50019  	d = d<<10 | d>>(32-10)
 50020  	d = d + a
 50021  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 50022  	c = c<<15 | c>>(32-15)
 50023  	c = c + d
 50024  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 50025  	b = b<<21 | b>>(32-21)
 50026  	b = b + c
 50027  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 50028  	a = a<<6 | a>>(32-6)
 50029  	a = a + b
 50030  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 50031  	d = d<<10 | d>>(32-10)
 50032  	d = d + a
 50033  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 50034  	c = c<<15 | c>>(32-15)
 50035  	c = c + d
 50036  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 50037  	b = b<<21 | b>>(32-21)
 50038  	b = b + c
 50039  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 50040  	a = a<<6 | a>>(32-6)
 50041  	a = a + b
 50042  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 50043  	d = d<<10 | d>>(32-10)
 50044  	d = d + a
 50045  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 50046  	c = c<<15 | c>>(32-15)
 50047  	c = c + d
 50048  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 50049  	b = b<<21 | b>>(32-21)
 50050  	b = b + c
 50051  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 50052  	a = a<<6 | a>>(32-6)
 50053  	a = a + b
 50054  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 50055  	d = d<<10 | d>>(32-10)
 50056  	d = d + a
 50057  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 50058  	c = c<<15 | c>>(32-15)
 50059  	c = c + d
 50060  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 50061  	b = b<<21 | b>>(32-21)
 50062  	b = b + c
 50063  
 50064  	*(*uint32)(unsafe.Pointer(buf)) += a
 50065  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 50066  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 50067  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 50068  }
 50069  
 50070  func MD5Init(tls *libc.TLS, ctx uintptr) {
 50071  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 50072  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 50073  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 50074  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 50075  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 50076  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 50077  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 50078  }
 50079  
 50080  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 50081  	var t uint32
 50082  
 50083  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 50084  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 50085  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 50086  	}
 50087  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 50088  
 50089  	t = t >> 3 & uint32(0x3f)
 50090  
 50091  	if t != 0 {
 50092  		var p uintptr = ctx + 28 + uintptr(t)
 50093  
 50094  		t = uint32(64) - t
 50095  		if len < t {
 50096  			libc.Xmemcpy(tls, p, buf, uint64(len))
 50097  			return
 50098  		}
 50099  		libc.Xmemcpy(tls, p, buf, uint64(t))
 50100  		byteReverse(tls, ctx+28, uint32(16))
 50101  		MD5Transform(tls, ctx+4, ctx+28)
 50102  		buf += uintptr(t)
 50103  		len = len - t
 50104  	}
 50105  
 50106  	for len >= uint32(64) {
 50107  		libc.Xmemcpy(tls, ctx+28, buf, uint64(64))
 50108  		byteReverse(tls, ctx+28, uint32(16))
 50109  		MD5Transform(tls, ctx+4, ctx+28)
 50110  		buf += uintptr(64)
 50111  		len = len - uint32(64)
 50112  	}
 50113  
 50114  	libc.Xmemcpy(tls, ctx+28, buf, uint64(len))
 50115  }
 50116  
 50117  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 50118  	var count uint32
 50119  	var p uintptr
 50120  
 50121  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 50122  
 50123  	p = ctx + 28 + uintptr(count)
 50124  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 50125  
 50126  	count = uint32(64-1) - count
 50127  
 50128  	if count < uint32(8) {
 50129  		libc.Xmemset(tls, p, 0, uint64(count))
 50130  		byteReverse(tls, ctx+28, uint32(16))
 50131  		MD5Transform(tls, ctx+4, ctx+28)
 50132  
 50133  		libc.Xmemset(tls, ctx+28, 0, uint64(56))
 50134  	} else {
 50135  		libc.Xmemset(tls, p, 0, uint64(count-uint32(8)))
 50136  	}
 50137  	byteReverse(tls, ctx+28, uint32(14))
 50138  
 50139  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8))
 50140  
 50141  	MD5Transform(tls, ctx+4, ctx+28)
 50142  	byteReverse(tls, ctx+4, uint32(4))
 50143  	libc.Xmemcpy(tls, digest, ctx+4, uint64(16))
 50144  }
 50145  
 50146  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 50147  	var i int32
 50148  	var j int32
 50149  
 50150  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 50151  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 50152  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 50153  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 50154  	}
 50155  	*(*int8)(unsafe.Pointer(zBuf + uintptr(j))) = int8(0)
 50156  }
 50157  
 50158  var zEncode = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 50159  
 50160  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 50161  	bp := tls.Alloc(8)
 50162  	defer tls.Free(8)
 50163  
 50164  	var i int32
 50165  	var j int32
 50166  	var x uint32
 50167  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 50168  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 50169  		if i > 0 {
 50170  			*(*int8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = int8('-')
 50171  		}
 50172  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 50173  		j = j + 5
 50174  	}
 50175  	*(*int8)(unsafe.Pointer(zDigest + uintptr(j))) = int8(0)
 50176  }
 50177  
 50178  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50179  	bp := tls.Alloc(206)
 50180  	defer tls.Free(206)
 50181  
 50182  	var converter uintptr
 50183  
 50184  	if argc != 2 {
 50185  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50186  			ts+15307, uintptr(0)))
 50187  		return TCL_ERROR
 50188  	}
 50189  	MD5Init(tls, bp+48)
 50190  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 50191  	MD5Final(tls, bp+140, bp+48)
 50192  	converter = cd
 50193  	(*struct {
 50194  		f func(*libc.TLS, uintptr, uintptr)
 50195  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 50196  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 50197  	return TCL_OK
 50198  }
 50199  
 50200  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50201  	bp := tls.Alloc(10428)
 50202  	defer tls.Free(10428)
 50203  
 50204  	var in uintptr
 50205  	var ofst int32
 50206  	var amt int32
 50207  
 50208  	var converter uintptr
 50209  
 50210  	if argc != 2 && argc != 4 {
 50211  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50212  			ts+34506, uintptr(0)))
 50213  		return TCL_ERROR
 50214  	}
 50215  	if argc == 4 {
 50216  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 50217  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 50218  	} else {
 50219  		ofst = 0
 50220  		amt = 2147483647
 50221  	}
 50222  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 50223  	if in == uintptr(0) {
 50224  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 50225  			ts+34552, uintptr(0)))
 50226  		return TCL_ERROR
 50227  	}
 50228  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 50229  	MD5Init(tls, bp+80)
 50230  	for amt > 0 {
 50231  		var n int32
 50232  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 50233  			if uint64(unsafe.Sizeof([10240]int8{})) <= uint64(amt) {
 50234  				return uint64(unsafe.Sizeof([10240]int8{}))
 50235  			}
 50236  			return uint64(amt)
 50237  		}(), in))
 50238  		if n <= 0 {
 50239  			break
 50240  		}
 50241  		MD5Update(tls, bp+80, bp+172, uint32(n))
 50242  		amt = amt - n
 50243  	}
 50244  	libc.Xfclose(tls, in)
 50245  	MD5Final(tls, bp+10412, bp+80)
 50246  	converter = cd
 50247  	(*struct {
 50248  		f func(*libc.TLS, uintptr, uintptr)
 50249  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 50250  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 50251  	return TCL_OK
 50252  }
 50253  
 50254  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 50255  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 50256  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50257  	}{md5_cmd})),
 50258  		*(*uintptr)(unsafe.Pointer(&struct {
 50259  			f func(*libc.TLS, uintptr, uintptr)
 50260  		}{MD5DigestToBase16})), uintptr(0))
 50261  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 50262  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50263  	}{md5_cmd})),
 50264  		*(*uintptr)(unsafe.Pointer(&struct {
 50265  			f func(*libc.TLS, uintptr, uintptr)
 50266  		}{MD5DigestToBase10x8})), uintptr(0))
 50267  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 50268  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50269  	}{md5file_cmd})),
 50270  		*(*uintptr)(unsafe.Pointer(&struct {
 50271  			f func(*libc.TLS, uintptr, uintptr)
 50272  		}{MD5DigestToBase16})), uintptr(0))
 50273  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 50274  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50275  	}{md5file_cmd})),
 50276  		*(*uintptr)(unsafe.Pointer(&struct {
 50277  			f func(*libc.TLS, uintptr, uintptr)
 50278  		}{MD5DigestToBase10x8})), uintptr(0))
 50279  	return TCL_OK
 50280  }
 50281  
 50282  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50283  	var p uintptr
 50284  	var i int32
 50285  	if argc < 1 {
 50286  		return
 50287  	}
 50288  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50289  	if p == uintptr(0) {
 50290  		return
 50291  	}
 50292  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 50293  		MD5Init(tls, p)
 50294  	}
 50295  	for i = 0; i < argc; i++ {
 50296  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 50297  		if zData != 0 {
 50298  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 50299  		}
 50300  	}
 50301  }
 50302  
 50303  func md5finalize(tls *libc.TLS, context uintptr) {
 50304  	bp := tls.Alloc(49)
 50305  	defer tls.Free(49)
 50306  
 50307  	var p uintptr
 50308  
 50309  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50310  	MD5Final(tls, bp, p)
 50311  	MD5DigestToBase16(tls, bp, bp+16)
 50312  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 50313  }
 50314  
 50315  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 50316  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 50317  		*(*uintptr)(unsafe.Pointer(&struct {
 50318  			f func(*libc.TLS, uintptr, int32, uintptr)
 50319  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 50320  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 50321  	return rc
 50322  }
 50323  
 50324  type multiplexGroup1 = struct {
 50325  	FaReal       uintptr
 50326  	FnReal       int32
 50327  	F__ccgo_pad1 [4]byte
 50328  	FzName       uintptr
 50329  	FnName       int32
 50330  	Fflags       int32
 50331  	FszChunk     uint32
 50332  	FbEnabled    uint8
 50333  	FbTruncate   uint8
 50334  	F__ccgo_pad2 [2]byte
 50335  }
 50336  
 50337  type multiplexGroup = multiplexGroup1
 50338  type multiplexConn1 = struct {
 50339  	Fbase   sqlite3_file
 50340  	FpGroup uintptr
 50341  }
 50342  
 50343  type multiplexConn = multiplexConn1
 50344  
 50345  type multiplexReal = struct {
 50346  	Fp uintptr
 50347  	Fz uintptr
 50348  }
 50349  
 50350  var gMultiplex struct {
 50351  	FpOrigVfs      uintptr
 50352  	FsThisVfs      sqlite3_vfs
 50353  	FsIoMethodsV1  sqlite3_io_methods
 50354  	FsIoMethodsV2  sqlite3_io_methods
 50355  	FisInitialized int32
 50356  	F__ccgo_pad1   [4]byte
 50357  }
 50358  
 50359  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 50360  	var z2 uintptr = z
 50361  	if z == uintptr(0) {
 50362  		return 0
 50363  	}
 50364  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 50365  		z2++
 50366  	}
 50367  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 50368  }
 50369  
 50370  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 50371  	bp := tls.Alloc(8)
 50372  	defer tls.Free(8)
 50373  
 50374  	var n int32 = nBase
 50375  	libc.Xmemcpy(tls, zOut, zBase, uint64(n+1))
 50376  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 50377  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 50378  		n = n + 3
 50379  	}
 50380  
 50381  	*(*int8)(unsafe.Pointer(zOut + uintptr(n+1))) = int8(0)
 50382  }
 50383  
 50384  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 50385  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 50386  		var p uintptr
 50387  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 50388  		if p == uintptr(0) {
 50389  			return SQLITE_NOMEM
 50390  		}
 50391  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 50392  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 50393  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 50394  	}
 50395  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50396  		var z uintptr
 50397  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 50398  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 50399  		if z == uintptr(0) {
 50400  			return SQLITE_NOMEM
 50401  		}
 50402  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 50403  		(*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))
 50404  		sqlite3.Xsqlite3_free(tls, z)
 50405  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50406  			return SQLITE_NOMEM
 50407  		}
 50408  	}
 50409  	return SQLITE_OK
 50410  }
 50411  
 50412  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 50413  	bp := tls.Alloc(20)
 50414  	defer tls.Free(20)
 50415  
 50416  	var pSubOpen uintptr = uintptr(0)
 50417  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50418  
 50419  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 50420  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 50421  		var flags int32
 50422  
 50423  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 50424  		if createFlag != 0 {
 50425  			flags = flags | SQLITE_OPEN_CREATE
 50426  		} else if iChunk == 0 {
 50427  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 50428  			return uintptr(0)
 50429  		} else {
 50430  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50431  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50432  			})(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,
 50433  				SQLITE_ACCESS_EXISTS, bp+16)
 50434  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 50435  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50436  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 50437  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 50438  				}
 50439  				return uintptr(0)
 50440  			}
 50441  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 50442  		}
 50443  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 50444  		if pSubOpen == uintptr(0) {
 50445  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 50446  			return uintptr(0)
 50447  		}
 50448  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 50449  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50450  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 50451  		})(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,
 50452  			flags, pOutFlags)
 50453  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 50454  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 50455  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 50456  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 50457  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 50458  			return uintptr(0)
 50459  		}
 50460  	}
 50461  	return pSubOpen
 50462  }
 50463  
 50464  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 50465  	bp := tls.Alloc(8)
 50466  	defer tls.Free(8)
 50467  
 50468  	var pSub uintptr
 50469  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 50470  
 50471  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50472  		return int64(0)
 50473  	}
 50474  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 50475  	if pSub == uintptr(0) {
 50476  		return int64(0)
 50477  	}
 50478  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50479  		f func(*libc.TLS, uintptr, uintptr) int32
 50480  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 50481  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 50482  }
 50483  
 50484  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50485  	bp := tls.Alloc(4)
 50486  	defer tls.Free(4)
 50487  
 50488  	var rc int32 = SQLITE_OK
 50489  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 50490  	var op int32 = 0
 50491  
 50492  	if !(db != 0) || argc != 2 {
 50493  		rc = SQLITE_ERROR
 50494  	} else {
 50495  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 50496  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 50497  
 50498  		switch op {
 50499  		case 1:
 50500  			op = MULTIPLEX_CTRL_ENABLE
 50501  			break
 50502  			fallthrough
 50503  		case 2:
 50504  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 50505  			break
 50506  			fallthrough
 50507  		case 3:
 50508  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 50509  			break
 50510  			fallthrough
 50511  		default:
 50512  			rc = SQLITE_NOTFOUND
 50513  			break
 50514  		}
 50515  	}
 50516  	if rc == SQLITE_OK {
 50517  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 50518  	}
 50519  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 50520  }
 50521  
 50522  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 50523  	var rc int32
 50524  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 50525  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 50526  			f func(*libc.TLS, uintptr, int32, uintptr)
 50527  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 50528  	return rc
 50529  }
 50530  
 50531  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 50532  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 50533  	if pSubOpen != 0 {
 50534  		(*struct {
 50535  			f func(*libc.TLS, uintptr) int32
 50536  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 50537  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 50538  			(*struct {
 50539  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 50540  			})(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)
 50541  		}
 50542  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 50543  	}
 50544  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 50545  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})))
 50546  }
 50547  
 50548  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 50549  	var i int32
 50550  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50551  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 50552  	}
 50553  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 50554  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 50555  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 50556  }
 50557  
 50558  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 50559  	bp := tls.Alloc(20)
 50560  	defer tls.Free(20)
 50561  
 50562  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50563  	var pMultiplexOpen uintptr
 50564  	var pGroup uintptr = uintptr(0)
 50565  	var pSubOpen uintptr = uintptr(0)
 50566  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50567  	var nName int32 = 0
 50568  	var sz int32 = 0
 50569  	var zToFree uintptr = uintptr(0)
 50570  
 50571  	_ = pVfs
 50572  	libc.Xmemset(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 50573  
 50574  	pMultiplexOpen = pConn
 50575  
 50576  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50577  		if zName != 0 {
 50578  			nName = multiplexStrlen30(tls, zName)
 50579  		} else {
 50580  			nName = 0
 50581  		}
 50582  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 50583  			uint64(nName) + uint64(1))
 50584  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 50585  		if pGroup == uintptr(0) {
 50586  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 50587  		}
 50588  	}
 50589  
 50590  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50591  		var zUri uintptr
 50592  		if flags&SQLITE_OPEN_URI != 0 {
 50593  			zUri = zName
 50594  		} else {
 50595  			zUri = uintptr(0)
 50596  		}
 50597  
 50598  		libc.Xmemset(tls, pGroup, 0, uint64(sz))
 50599  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 50600  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 50601  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 50602  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 50603  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 50604  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 50605  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 50606  		if zName != 0 {
 50607  			var p uintptr = pGroup + 1*40
 50608  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 50609  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1))
 50610  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 50611  		}
 50612  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50613  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 50614  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 50615  			}
 50616  		}
 50617  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 50618  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 50619  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50620  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 50621  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50622  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 50623  			}
 50624  		}
 50625  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50626  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50627  				f func(*libc.TLS, uintptr, uintptr) int32
 50628  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 50629  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 50630  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 50631  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50632  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 50633  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 50634  						var iChunk int32 = 1
 50635  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50636  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50637  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50638  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 50639  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 50640  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50641  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50642  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 50643  								})(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)
 50644  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50645  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 50646  								}
 50647  							}
 50648  						}
 50649  					}
 50650  				} else {
 50651  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50652  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50653  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 50654  						SQLITE_ACCESS_EXISTS, bp+16)
 50655  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 50656  					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) &&
 50657  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50658  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 50659  					} 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) {
 50660  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50661  					}
 50662  				}
 50663  			}
 50664  		}
 50665  
 50666  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50667  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 50668  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 50669  			} else {
 50670  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 50671  			}
 50672  		} else {
 50673  			multiplexFreeComponents(tls, pGroup)
 50674  			sqlite3.Xsqlite3_free(tls, pGroup)
 50675  		}
 50676  	}
 50677  	sqlite3.Xsqlite3_free(tls, zToFree)
 50678  	return *(*int32)(unsafe.Pointer(bp))
 50679  }
 50680  
 50681  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 50682  	bp := tls.Alloc(4)
 50683  	defer tls.Free(4)
 50684  
 50685  	var rc int32
 50686  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50687  	rc = (*struct {
 50688  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50689  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 50690  	if rc == SQLITE_OK {
 50691  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 50692  		var z uintptr
 50693  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 50694  		if z == uintptr(0) {
 50695  			rc = SQLITE_IOERR | int32(12)<<8
 50696  		} else {
 50697  			var iChunk int32 = 0
 50698  
 50699  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50700  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 50701  				rc = (*struct {
 50702  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50703  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50704  			}
 50705  			for rc == SQLITE_OK && iChunk > 1 {
 50706  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 50707  				rc = (*struct {
 50708  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 50709  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50710  			}
 50711  			if rc == SQLITE_OK {
 50712  				iChunk = 0
 50713  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50714  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 50715  					rc = (*struct {
 50716  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50717  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50718  				}
 50719  				for rc == SQLITE_OK && iChunk > 1 {
 50720  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 50721  					rc = (*struct {
 50722  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 50723  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50724  				}
 50725  			}
 50726  		}
 50727  		sqlite3.Xsqlite3_free(tls, z)
 50728  	}
 50729  	return rc
 50730  }
 50731  
 50732  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50733  	return (*struct {
 50734  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50735  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50736  }
 50737  
 50738  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50739  	return (*struct {
 50740  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50741  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50742  }
 50743  
 50744  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 50745  	return (*struct {
 50746  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50747  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 50748  }
 50749  
 50750  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 50751  	(*struct {
 50752  		f func(*libc.TLS, uintptr, int32, uintptr)
 50753  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50754  }
 50755  
 50756  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 50757  	return (*struct {
 50758  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50759  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50760  }
 50761  
 50762  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 50763  	(*struct {
 50764  		f func(*libc.TLS, uintptr, uintptr)
 50765  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 50766  }
 50767  
 50768  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50769  	return (*struct {
 50770  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50771  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50772  }
 50773  
 50774  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 50775  	return (*struct {
 50776  		f func(*libc.TLS, uintptr, int32) int32
 50777  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 50778  }
 50779  
 50780  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50781  	return (*struct {
 50782  		f func(*libc.TLS, uintptr, uintptr) int32
 50783  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 50784  }
 50785  
 50786  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50787  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 50788  		return (*struct {
 50789  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 50790  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50791  	} else {
 50792  		return 0
 50793  	}
 50794  	return int32(0)
 50795  }
 50796  
 50797  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50798  	return (*struct {
 50799  		f func(*libc.TLS, uintptr, uintptr) int32
 50800  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 50801  }
 50802  
 50803  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 50804  	var p uintptr = pConn
 50805  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50806  	var rc int32 = SQLITE_OK
 50807  	multiplexFreeComponents(tls, pGroup)
 50808  	sqlite3.Xsqlite3_free(tls, pGroup)
 50809  	return rc
 50810  }
 50811  
 50812  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50813  	bp := tls.Alloc(4)
 50814  	defer tls.Free(4)
 50815  
 50816  	var p uintptr = pConn
 50817  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50818  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50819  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50820  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50821  		if pSubOpen == uintptr(0) {
 50822  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50823  		} else {
 50824  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50825  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50826  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50827  		}
 50828  	} else {
 50829  		for iAmt > 0 {
 50830  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50831  			var pSubOpen uintptr
 50832  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50833  			if pSubOpen != 0 {
 50834  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50835  				if extra < 0 {
 50836  					extra = 0
 50837  				}
 50838  				iAmt = iAmt - extra
 50839  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50840  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50841  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 50842  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50843  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 50844  					break
 50845  				}
 50846  				pBuf = pBuf + uintptr(iAmt)
 50847  				iOfst = iOfst + sqlite3_int64(iAmt)
 50848  				iAmt = extra
 50849  			} else {
 50850  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50851  				break
 50852  			}
 50853  		}
 50854  	}
 50855  
 50856  	return *(*int32)(unsafe.Pointer(bp))
 50857  }
 50858  
 50859  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50860  	bp := tls.Alloc(4)
 50861  	defer tls.Free(4)
 50862  
 50863  	var p uintptr = pConn
 50864  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50865  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50866  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50867  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50868  		if pSubOpen == uintptr(0) {
 50869  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 50870  		} else {
 50871  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50872  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50873  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50874  		}
 50875  	} else {
 50876  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 50877  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50878  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50879  			if pSubOpen != 0 {
 50880  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50881  				if extra < 0 {
 50882  					extra = 0
 50883  				}
 50884  				iAmt = iAmt - extra
 50885  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50886  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50887  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 50888  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50889  				pBuf = pBuf + uintptr(iAmt)
 50890  				iOfst = iOfst + sqlite3_int64(iAmt)
 50891  				iAmt = extra
 50892  			}
 50893  		}
 50894  	}
 50895  	return *(*int32)(unsafe.Pointer(bp))
 50896  }
 50897  
 50898  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 50899  	bp := tls.Alloc(4)
 50900  	defer tls.Free(4)
 50901  
 50902  	var p uintptr = pConn
 50903  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50904  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50905  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50906  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50907  		if pSubOpen == uintptr(0) {
 50908  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50909  		} else {
 50910  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50911  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50912  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 50913  		}
 50914  	} else {
 50915  		var i int32
 50916  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50917  		var pSubOpen uintptr
 50918  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50919  
 50920  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 50921  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 50922  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 50923  			} else {
 50924  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 50925  				if pSubOpen != 0 {
 50926  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50927  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50928  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 50929  				}
 50930  			}
 50931  		}
 50932  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50933  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 50934  			if pSubOpen != 0 {
 50935  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50936  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50937  				})(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))
 50938  			}
 50939  		}
 50940  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 50941  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50942  		}
 50943  	}
 50944  	return *(*int32)(unsafe.Pointer(bp))
 50945  }
 50946  
 50947  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 50948  	var p uintptr = pConn
 50949  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50950  	var rc int32 = SQLITE_OK
 50951  	var i int32
 50952  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50953  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 50954  		if pSubOpen != 0 {
 50955  			var rc2 int32 = (*struct {
 50956  				f func(*libc.TLS, uintptr, int32) int32
 50957  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 50958  			if rc2 != SQLITE_OK {
 50959  				rc = rc2
 50960  			}
 50961  		}
 50962  	}
 50963  	return rc
 50964  }
 50965  
 50966  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 50967  	bp := tls.Alloc(4)
 50968  	defer tls.Free(4)
 50969  
 50970  	var p uintptr = pConn
 50971  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50972  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50973  	var i int32
 50974  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50975  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50976  		if pSubOpen == uintptr(0) {
 50977  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 50978  		} else {
 50979  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50980  				f func(*libc.TLS, uintptr, uintptr) int32
 50981  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 50982  		}
 50983  	} else {
 50984  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 50985  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 50986  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 50987  			if sz == int64(0) {
 50988  				break
 50989  			}
 50990  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 50991  		}
 50992  	}
 50993  	return *(*int32)(unsafe.Pointer(bp))
 50994  }
 50995  
 50996  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 50997  	bp := tls.Alloc(4)
 50998  	defer tls.Free(4)
 50999  
 51000  	var p uintptr = pConn
 51001  
 51002  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51003  	if pSubOpen != 0 {
 51004  		return (*struct {
 51005  			f func(*libc.TLS, uintptr, int32) int32
 51006  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 51007  	}
 51008  	return SQLITE_BUSY
 51009  }
 51010  
 51011  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51012  	bp := tls.Alloc(4)
 51013  	defer tls.Free(4)
 51014  
 51015  	var p uintptr = pConn
 51016  
 51017  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51018  	if pSubOpen != 0 {
 51019  		return (*struct {
 51020  			f func(*libc.TLS, uintptr, int32) int32
 51021  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 51022  	}
 51023  	return SQLITE_IOERR | int32(8)<<8
 51024  }
 51025  
 51026  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 51027  	bp := tls.Alloc(4)
 51028  	defer tls.Free(4)
 51029  
 51030  	var p uintptr = pConn
 51031  
 51032  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51033  	if pSubOpen != 0 {
 51034  		return (*struct {
 51035  			f func(*libc.TLS, uintptr, uintptr) int32
 51036  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 51037  	}
 51038  	return SQLITE_IOERR | int32(14)<<8
 51039  }
 51040  
 51041  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 51042  	bp := tls.Alloc(44)
 51043  	defer tls.Free(44)
 51044  
 51045  	var p uintptr = pConn
 51046  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51047  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 51048  	var pSubOpen uintptr
 51049  
 51050  	if !(gMultiplex.FisInitialized != 0) {
 51051  		return SQLITE_MISUSE
 51052  	}
 51053  	switch op {
 51054  	case MULTIPLEX_CTRL_ENABLE:
 51055  		if pArg != 0 {
 51056  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 51057  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 51058  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51059  		}
 51060  		break
 51061  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 51062  		if pArg != 0 {
 51063  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 51064  			if szChunk < uint32(1) {
 51065  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 51066  			} else {
 51067  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 51068  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 51069  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 51070  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51071  			}
 51072  		}
 51073  		break
 51074  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 51075  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51076  		break
 51077  	case SQLITE_FCNTL_SIZE_HINT:
 51078  		fallthrough
 51079  	case SQLITE_FCNTL_CHUNK_SIZE:
 51080  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51081  		break
 51082  	case SQLITE_FCNTL_PRAGMA:
 51083  		{
 51084  			var aFcntl uintptr = pArg
 51085  
 51086  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34706, 10) == 0 {
 51087  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 51088  				multiplexFileSize(tls, pConn, bp+32)
 51089  
 51090  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34717) == 0 {
 51091  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 51092  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 51093  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+28899) == 0 {
 51094  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 51095  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 51096  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 51097  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 51098  						}
 51099  					}
 51100  
 51101  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 51102  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51103  							return ts + 4178
 51104  						}
 51105  						return ts + 4542
 51106  					}(), 0)
 51107  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51108  					break
 51109  				}
 51110  
 51111  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34736) == 0 {
 51112  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 51113  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51114  					break
 51115  				}
 51116  
 51117  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34754) == 0 &&
 51118  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51119  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51120  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51121  					break
 51122  				}
 51123  
 51124  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34774) == 0 {
 51125  					var n int32 = 0
 51126  					var ii int32
 51127  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 51128  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 51129  							n++
 51130  						}
 51131  					}
 51132  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 51133  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51134  					break
 51135  				}
 51136  			}
 51137  
 51138  		}
 51139  		fallthrough
 51140  	default:
 51141  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 51142  		if pSubOpen != 0 {
 51143  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 51144  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 51145  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 51146  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 51147  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 51148  			}
 51149  		}
 51150  		break
 51151  	}
 51152  	return *(*int32)(unsafe.Pointer(bp + 40))
 51153  }
 51154  
 51155  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 51156  	bp := tls.Alloc(4)
 51157  	defer tls.Free(4)
 51158  
 51159  	var p uintptr = pConn
 51160  
 51161  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51162  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 51163  		return (*struct {
 51164  			f func(*libc.TLS, uintptr) int32
 51165  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 51166  	}
 51167  	return DEFAULT_SECTOR_SIZE
 51168  }
 51169  
 51170  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 51171  	bp := tls.Alloc(4)
 51172  	defer tls.Free(4)
 51173  
 51174  	var p uintptr = pConn
 51175  
 51176  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51177  	if pSubOpen != 0 {
 51178  		return (*struct {
 51179  			f func(*libc.TLS, uintptr) int32
 51180  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 51181  	}
 51182  	return 0
 51183  }
 51184  
 51185  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 51186  	bp := tls.Alloc(4)
 51187  	defer tls.Free(4)
 51188  
 51189  	var p uintptr = pConn
 51190  
 51191  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51192  	if pSubOpen != 0 {
 51193  		return (*struct {
 51194  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51195  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 51196  	}
 51197  	return SQLITE_IOERR
 51198  }
 51199  
 51200  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 51201  	bp := tls.Alloc(4)
 51202  	defer tls.Free(4)
 51203  
 51204  	var p uintptr = pConn
 51205  
 51206  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51207  	if pSubOpen != 0 {
 51208  		return (*struct {
 51209  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51210  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 51211  	}
 51212  	return SQLITE_BUSY
 51213  }
 51214  
 51215  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 51216  	bp := tls.Alloc(4)
 51217  	defer tls.Free(4)
 51218  
 51219  	var p uintptr = pConn
 51220  
 51221  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51222  	if pSubOpen != 0 {
 51223  		(*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)
 51224  	}
 51225  }
 51226  
 51227  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 51228  	bp := tls.Alloc(4)
 51229  	defer tls.Free(4)
 51230  
 51231  	var p uintptr = pConn
 51232  
 51233  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51234  	if pSubOpen != 0 {
 51235  		return (*struct {
 51236  			f func(*libc.TLS, uintptr, int32) int32
 51237  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 51238  	}
 51239  	return SQLITE_OK
 51240  }
 51241  
 51242  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 51243  	var pOrigVfs uintptr
 51244  	if gMultiplex.FisInitialized != 0 {
 51245  		return SQLITE_MISUSE
 51246  	}
 51247  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 51248  	if pOrigVfs == uintptr(0) {
 51249  		return SQLITE_ERROR
 51250  	}
 51251  
 51252  	gMultiplex.FisInitialized = 1
 51253  	gMultiplex.FpOrigVfs = pOrigVfs
 51254  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 51255  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 51256  	gMultiplex.FsThisVfs.FzName = ts + 34807
 51257  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51258  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51259  	}{multiplexOpen}))
 51260  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 51261  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51262  	}{multiplexDelete}))
 51263  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 51264  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51265  	}{multiplexAccess}))
 51266  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 51267  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51268  	}{multiplexFullPathname}))
 51269  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51270  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51271  	}{multiplexDlOpen}))
 51272  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 51273  		f func(*libc.TLS, uintptr, int32, uintptr)
 51274  	}{multiplexDlError}))
 51275  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 51276  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51277  	}{multiplexDlSym}))
 51278  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 51279  		f func(*libc.TLS, uintptr, uintptr)
 51280  	}{multiplexDlClose}))
 51281  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 51282  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51283  	}{multiplexRandomness}))
 51284  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 51285  		f func(*libc.TLS, uintptr, int32) int32
 51286  	}{multiplexSleep}))
 51287  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 51288  		f func(*libc.TLS, uintptr, uintptr) int32
 51289  	}{multiplexCurrentTime}))
 51290  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 51291  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51292  	}{multiplexGetLastError}))
 51293  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 51294  		f func(*libc.TLS, uintptr, uintptr) int32
 51295  	}{multiplexCurrentTimeInt64}))
 51296  
 51297  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 51298  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 51299  		f func(*libc.TLS, uintptr) int32
 51300  	}{multiplexClose}))
 51301  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 51302  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51303  	}{multiplexRead}))
 51304  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 51305  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51306  	}{multiplexWrite}))
 51307  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 51308  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51309  	}{multiplexTruncate}))
 51310  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 51311  		f func(*libc.TLS, uintptr, int32) int32
 51312  	}{multiplexSync}))
 51313  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 51314  		f func(*libc.TLS, uintptr, uintptr) int32
 51315  	}{multiplexFileSize}))
 51316  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 51317  		f func(*libc.TLS, uintptr, int32) int32
 51318  	}{multiplexLock}))
 51319  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 51320  		f func(*libc.TLS, uintptr, int32) int32
 51321  	}{multiplexUnlock}))
 51322  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 51323  		f func(*libc.TLS, uintptr, uintptr) int32
 51324  	}{multiplexCheckReservedLock}))
 51325  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 51326  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51327  	}{multiplexFileControl}))
 51328  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 51329  		f func(*libc.TLS, uintptr) int32
 51330  	}{multiplexSectorSize}))
 51331  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 51332  		f func(*libc.TLS, uintptr) int32
 51333  	}{multiplexDeviceCharacteristics}))
 51334  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 51335  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 51336  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 51337  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51338  	}{multiplexShmMap}))
 51339  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 51340  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51341  	}{multiplexShmLock}))
 51342  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 51343  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 51344  		f func(*libc.TLS, uintptr, int32) int32
 51345  	}{multiplexShmUnmap}))
 51346  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 51347  
 51348  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 51349  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 51350  	}{multiplexFuncInit})))
 51351  
 51352  	return SQLITE_OK
 51353  }
 51354  
 51355  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 51356  	var rc int32 = SQLITE_OK
 51357  	if gMultiplex.FisInitialized == 0 {
 51358  		return SQLITE_MISUSE
 51359  	}
 51360  	gMultiplex.FisInitialized = 0
 51361  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 51362  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)))
 51363  	return rc
 51364  }
 51365  
 51366  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51367  	bp := tls.Alloc(4)
 51368  	defer tls.Free(4)
 51369  
 51370  	var zName uintptr
 51371  
 51372  	var rc int32
 51373  
 51374  	_ = clientData
 51375  
 51376  	if objc != 3 {
 51377  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 51378  		return TCL_ERROR
 51379  	}
 51380  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51381  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 51382  		return TCL_ERROR
 51383  	}
 51384  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 51385  		zName = uintptr(0)
 51386  	}
 51387  
 51388  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 51389  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51390  
 51391  	return TCL_OK
 51392  }
 51393  
 51394  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51395  	var rc int32
 51396  
 51397  	_ = clientData
 51398  
 51399  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+34834) != 0 {
 51400  		objc = 3
 51401  	}
 51402  	if objc != 1 && objc != 2 {
 51403  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 51404  		return TCL_ERROR
 51405  	}
 51406  
 51407  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 51408  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51409  
 51410  	return TCL_OK
 51411  }
 51412  
 51413  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 51414  	bp := tls.Alloc(176)
 51415  	defer tls.Free(176)
 51416  
 51417  	var rc int32
 51418  
 51419  	var db uintptr
 51420  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 51421  	var pArg uintptr = uintptr(0)
 51422  
 51423  	*(*[4]struct {
 51424  		FzName   uintptr
 51425  		Fop      int32
 51426  		Fargtype int32
 51427  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 51428  		FzName   uintptr
 51429  		Fop      int32
 51430  		Fargtype int32
 51431  	}{
 51432  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 51433  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 51434  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 51435  		{},
 51436  	}
 51437  
 51438  	if objc != 5 {
 51439  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 51440  		return TCL_ERROR
 51441  	}
 51442  
 51443  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 51444  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 51445  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 51446  		return TCL_ERROR
 51447  	} else {
 51448  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 51449  	}
 51450  
 51451  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 51452  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 51453  			FzName   uintptr
 51454  			Fop      int32
 51455  			Fargtype int32
 51456  		}{})), ts+2014, 0, bp+168)
 51457  	if rc != TCL_OK {
 51458  		return rc
 51459  	}
 51460  
 51461  	switch (*struct {
 51462  		FzName   uintptr
 51463  		Fop      int32
 51464  		Fargtype int32
 51465  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 51466  	case 1:
 51467  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 51468  			return TCL_ERROR
 51469  		}
 51470  		pArg = bp + 172
 51471  		break
 51472  	default:
 51473  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 51474  		return TCL_ERROR
 51475  	}
 51476  
 51477  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 51478  		FzName   uintptr
 51479  		Fop      int32
 51480  		Fargtype int32
 51481  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 51482  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51483  	if rc == SQLITE_OK {
 51484  		return TCL_OK
 51485  	}
 51486  	return TCL_ERROR
 51487  }
 51488  
 51489  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 51490  	var i int32
 51491  
 51492  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 51493  		FzName uintptr
 51494  		FxProc uintptr
 51495  	}{})); i++ {
 51496  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 51497  	}
 51498  
 51499  	return TCL_OK
 51500  }
 51501  
 51502  var aCmd7 = [3]struct {
 51503  	FzName uintptr
 51504  	FxProc uintptr
 51505  }{
 51506  	{FzName: ts + 34940, FxProc: 0},
 51507  	{FzName: ts + 34969, FxProc: 0},
 51508  	{FzName: ts + 34996, FxProc: 0},
 51509  }
 51510  
 51511  type sqlite3_mutex = sqlite3_mutex1
 51512  
 51513  var aName = [15]uintptr{
 51514  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 51515  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 51516  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 51517  	ts + 35155, ts + 35167, uintptr(0),
 51518  }
 51519  
 51520  type test_mutex_globals = struct {
 51521  	FisInstalled int32
 51522  	FdisableInit int32
 51523  	FdisableTry  int32
 51524  	FisInit      int32
 51525  	Fm           sqlite3_mutex_methods
 51526  	FaCounter    [14]int32
 51527  	FaStatic     [12]sqlite3_mutex
 51528  }
 51529  
 51530  var g3 = test_mutex_globals{}
 51531  
 51532  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 51533  	return (*struct {
 51534  		f func(*libc.TLS, uintptr) int32
 51535  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51536  }
 51537  
 51538  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 51539  	return (*struct {
 51540  		f func(*libc.TLS, uintptr) int32
 51541  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51542  }
 51543  
 51544  func counterMutexInit(tls *libc.TLS) int32 {
 51545  	var rc int32
 51546  	if g3.FdisableInit != 0 {
 51547  		return g3.FdisableInit
 51548  	}
 51549  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 51550  	g3.FisInit = 1
 51551  	return rc
 51552  }
 51553  
 51554  func counterMutexEnd(tls *libc.TLS) int32 {
 51555  	g3.FisInit = 0
 51556  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 51557  }
 51558  
 51559  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 51560  	var pReal uintptr
 51561  	var pRet uintptr = uintptr(0)
 51562  
 51563  	pReal = (*struct {
 51564  		f func(*libc.TLS, int32) uintptr
 51565  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 51566  	if !(pReal != 0) {
 51567  		return uintptr(0)
 51568  	}
 51569  
 51570  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 51571  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 51572  	} else {
 51573  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 51574  
 51575  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 51576  	}
 51577  
 51578  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 51579  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 51580  	return pRet
 51581  }
 51582  
 51583  func counterMutexFree(tls *libc.TLS, p uintptr) {
 51584  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51585  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 51586  		libc.Xfree(tls, p)
 51587  	}
 51588  }
 51589  
 51590  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 51591  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51592  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51593  }
 51594  
 51595  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 51596  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51597  	if g3.FdisableTry != 0 {
 51598  		return SQLITE_BUSY
 51599  	}
 51600  	return (*struct {
 51601  		f func(*libc.TLS, uintptr) int32
 51602  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51603  }
 51604  
 51605  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 51606  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51607  }
 51608  
 51609  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51610  	var rc int32
 51611  
 51612  	if objc != 1 {
 51613  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51614  		return TCL_ERROR
 51615  	}
 51616  
 51617  	rc = sqlite3.Xsqlite3_shutdown(tls)
 51618  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51619  	return TCL_OK
 51620  }
 51621  
 51622  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51623  	var rc int32
 51624  
 51625  	if objc != 1 {
 51626  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51627  		return TCL_ERROR
 51628  	}
 51629  
 51630  	rc = sqlite3.Xsqlite3_initialize(tls)
 51631  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51632  	return TCL_OK
 51633  }
 51634  
 51635  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51636  	bp := tls.Alloc(136)
 51637  	defer tls.Free(136)
 51638  
 51639  	var rc int32 = SQLITE_OK
 51640  
 51641  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 51642  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 51643  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 51644  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 51645  			f func(*libc.TLS, int32) uintptr
 51646  		}{counterMutexAlloc})),
 51647  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 51648  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 51649  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 51650  			f func(*libc.TLS, uintptr) int32
 51651  		}{counterMutexTry})),
 51652  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 51653  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 51654  			f func(*libc.TLS, uintptr) int32
 51655  		}{counterMutexHeld})),
 51656  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 51657  			f func(*libc.TLS, uintptr) int32
 51658  		}{counterMutexNotheld})),
 51659  	}
 51660  
 51661  	if objc != 2 {
 51662  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 51663  		return TCL_ERROR
 51664  	}
 51665  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 51666  		return TCL_ERROR
 51667  	}
 51668  
 51669  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 51670  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 51671  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 51672  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51673  				return ts + 35199
 51674  			}
 51675  			return ts + 35217
 51676  		}(), 0))
 51677  		return TCL_ERROR
 51678  	}
 51679  
 51680  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51681  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 51682  		if rc == SQLITE_OK {
 51683  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 51684  		}
 51685  		g3.FdisableTry = 0
 51686  	} else {
 51687  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 51688  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})))
 51689  	}
 51690  
 51691  	if rc == SQLITE_OK {
 51692  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 51693  	}
 51694  
 51695  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51696  	return TCL_OK
 51697  }
 51698  
 51699  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51700  	var pRet uintptr
 51701  	var ii int32
 51702  
 51703  	if objc != 1 {
 51704  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51705  		return TCL_ERROR
 51706  	}
 51707  
 51708  	pRet = tcl.XTcl_NewObj(tls)
 51709  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 51710  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51711  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 51712  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 51713  	}
 51714  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 51715  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 51716  		var _objPtr uintptr = pRet
 51717  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 51718  			tcl.XTclFreeObj(tls, _objPtr)
 51719  		}
 51720  	}
 51721  
 51722  	return TCL_OK
 51723  }
 51724  
 51725  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51726  	var ii int32
 51727  
 51728  	if objc != 1 {
 51729  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51730  		return TCL_ERROR
 51731  	}
 51732  
 51733  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51734  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 51735  	}
 51736  	return TCL_OK
 51737  }
 51738  
 51739  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51740  	bp := tls.Alloc(124)
 51741  	defer tls.Free(124)
 51742  
 51743  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 51744  
 51745  	sqlite3.Xsqlite3_mutex_free(tls, p)
 51746  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+9889, libc.VaList(bp, p))
 51747  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 51748  	return TCL_OK
 51749  }
 51750  
 51751  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51752  	bp := tls.Alloc(68)
 51753  	defer tls.Free(68)
 51754  
 51755  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 51756  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 51757  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 51758  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 51759  		{},
 51760  	}
 51761  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 51762  
 51763  	var rc int32
 51764  
 51765  	if objc != 2 {
 51766  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51767  		return TCL_ERROR
 51768  	}
 51769  
 51770  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 51771  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 51772  			return TCL_ERROR
 51773  		}
 51774  	} else {
 51775  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 51776  	}
 51777  
 51778  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 51779  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51780  	return TCL_OK
 51781  }
 51782  
 51783  type ConfigOption = struct {
 51784  	FzName       uintptr
 51785  	FiValue      int32
 51786  	F__ccgo_pad1 [4]byte
 51787  }
 51788  
 51789  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51790  	bp := tls.Alloc(64)
 51791  	defer tls.Free(64)
 51792  
 51793  	var db uintptr
 51794  
 51795  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 51796  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 51797  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 51798  	} else {
 51799  		db = sqlite3TestTextToPtr(tls, zCmd)
 51800  	}
 51801  
 51802  	return db
 51803  }
 51804  
 51805  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51806  	bp := tls.Alloc(4)
 51807  	defer tls.Free(4)
 51808  
 51809  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 51810  		return uintptr(0)
 51811  	}
 51812  
 51813  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 51814  }
 51815  
 51816  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51817  	var pMutex uintptr
 51818  	if objc != 2 {
 51819  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51820  		return TCL_ERROR
 51821  	}
 51822  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51823  	if !(pMutex != 0) {
 51824  		return TCL_ERROR
 51825  	}
 51826  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 51827  	return TCL_OK
 51828  }
 51829  
 51830  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51831  	var pMutex uintptr
 51832  	if objc != 2 {
 51833  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51834  		return TCL_ERROR
 51835  	}
 51836  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51837  	if !(pMutex != 0) {
 51838  		return TCL_ERROR
 51839  	}
 51840  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 51841  	return TCL_OK
 51842  }
 51843  
 51844  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51845  	var db uintptr
 51846  	if objc != 2 {
 51847  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51848  		return TCL_ERROR
 51849  	}
 51850  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51851  	if !(db != 0) {
 51852  		return TCL_ERROR
 51853  	}
 51854  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51855  	return TCL_OK
 51856  }
 51857  
 51858  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51859  	var db uintptr
 51860  	if objc != 2 {
 51861  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51862  		return TCL_ERROR
 51863  	}
 51864  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51865  	if !(db != 0) {
 51866  		return TCL_ERROR
 51867  	}
 51868  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51869  	return TCL_OK
 51870  }
 51871  
 51872  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 51873  	var i int32
 51874  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 51875  		FzName uintptr
 51876  		FxProc uintptr
 51877  	}{})); i++ {
 51878  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 51879  	}
 51880  
 51881  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 51882  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 51883  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 51884  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 51885  	return SQLITE_OK
 51886  }
 51887  
 51888  var aCmd8 = [11]struct {
 51889  	FzName uintptr
 51890  	FxProc uintptr
 51891  }{
 51892  	{FzName: ts + 35315, FxProc: 0},
 51893  	{FzName: ts + 35332, FxProc: 0},
 51894  	{FzName: ts + 35351, FxProc: 0},
 51895  	{FzName: ts + 35366, FxProc: 0},
 51896  	{FzName: ts + 35385, FxProc: 0},
 51897  	{FzName: ts + 35404, FxProc: 0},
 51898  	{FzName: ts + 35419, FxProc: 0},
 51899  	{FzName: ts + 35434, FxProc: 0},
 51900  	{FzName: ts + 35454, FxProc: 0},
 51901  	{FzName: ts + 35477, FxProc: 0},
 51902  	{FzName: ts + 35497, FxProc: 0},
 51903  }
 51904  
 51905  type fs_real_file1 = struct {
 51906  	FpFile     uintptr
 51907  	FzName     uintptr
 51908  	FnDatabase int32
 51909  	FnJournal  int32
 51910  	FnBlob     int32
 51911  	FnRef      int32
 51912  	FpNext     uintptr
 51913  	FppThis    uintptr
 51914  }
 51915  
 51916  type fs_real_file = fs_real_file1
 51917  
 51918  type fs_file1 = struct {
 51919  	Fbase        sqlite3_file
 51920  	FeType       int32
 51921  	F__ccgo_pad1 [4]byte
 51922  	FpReal       uintptr
 51923  }
 51924  
 51925  type fs_file = fs_file1
 51926  
 51927  type tmp_file1 = struct {
 51928  	Fbase   sqlite3_file
 51929  	FnSize  int32
 51930  	FnAlloc int32
 51931  	FzAlloc uintptr
 51932  }
 51933  
 51934  type tmp_file = tmp_file1
 51935  
 51936  type fs_vfs_t1 = struct {
 51937  	Fbase      sqlite3_vfs
 51938  	FpFileList uintptr
 51939  	FpParent   uintptr
 51940  }
 51941  
 51942  type fs_vfs_t = fs_vfs_t1
 51943  
 51944  var fs_vfs = fs_vfs_t{
 51945  	Fbase: sqlite3_vfs{
 51946  		FiVersion:      1,
 51947  		FzName:         ts + 31055,
 51948  		FxOpen:         0,
 51949  		FxDelete:       0,
 51950  		FxAccess:       0,
 51951  		FxFullPathname: 0,
 51952  		FxDlOpen:       0,
 51953  		FxDlError:      0,
 51954  		FxDlSym:        0,
 51955  		FxDlClose:      0,
 51956  		FxRandomness:   0,
 51957  		FxSleep:        0,
 51958  		FxCurrentTime:  0,
 51959  	},
 51960  }
 51961  
 51962  var fs_io_methods = sqlite3_io_methods{
 51963  	FiVersion:               1,
 51964  	FxClose:                 0,
 51965  	FxRead:                  0,
 51966  	FxWrite:                 0,
 51967  	FxTruncate:              0,
 51968  	FxSync:                  0,
 51969  	FxFileSize:              0,
 51970  	FxLock:                  0,
 51971  	FxUnlock:                0,
 51972  	FxCheckReservedLock:     0,
 51973  	FxFileControl:           0,
 51974  	FxSectorSize:            0,
 51975  	FxDeviceCharacteristics: 0,
 51976  }
 51977  
 51978  var tmp_io_methods = sqlite3_io_methods{
 51979  	FiVersion:               1,
 51980  	FxClose:                 0,
 51981  	FxRead:                  0,
 51982  	FxWrite:                 0,
 51983  	FxTruncate:              0,
 51984  	FxSync:                  0,
 51985  	FxFileSize:              0,
 51986  	FxLock:                  0,
 51987  	FxUnlock:                0,
 51988  	FxCheckReservedLock:     0,
 51989  	FxFileControl:           0,
 51990  	FxSectorSize:            0,
 51991  	FxDeviceCharacteristics: 0,
 51992  }
 51993  
 51994  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 51995  	var pTmp uintptr = pFile
 51996  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 51997  	return SQLITE_OK
 51998  }
 51999  
 52000  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52001  	var pTmp uintptr = pFile
 52002  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 52003  		return SQLITE_IOERR | int32(2)<<8
 52004  	}
 52005  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt))
 52006  	return SQLITE_OK
 52007  }
 52008  
 52009  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52010  	var pTmp uintptr = pFile
 52011  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 52012  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 52013  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 52014  		if !(zNew != 0) {
 52015  			return SQLITE_NOMEM
 52016  		}
 52017  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 52018  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 52019  	}
 52020  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt))
 52021  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52022  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 52023  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52024  		}
 52025  		return int32(iOfst + sqlite_int64(iAmt))
 52026  	}()
 52027  	return SQLITE_OK
 52028  }
 52029  
 52030  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52031  	var pTmp uintptr = pFile
 52032  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52033  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 52034  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52035  		}
 52036  		return int32(size)
 52037  	}()
 52038  	return SQLITE_OK
 52039  }
 52040  
 52041  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52042  	return SQLITE_OK
 52043  }
 52044  
 52045  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52046  	var pTmp uintptr = pFile
 52047  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 52048  	return SQLITE_OK
 52049  }
 52050  
 52051  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52052  	return SQLITE_OK
 52053  }
 52054  
 52055  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52056  	return SQLITE_OK
 52057  }
 52058  
 52059  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52060  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52061  	return SQLITE_OK
 52062  }
 52063  
 52064  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52065  	return SQLITE_OK
 52066  }
 52067  
 52068  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52069  	return 0
 52070  }
 52071  
 52072  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52073  	return 0
 52074  }
 52075  
 52076  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 52077  	var rc int32 = SQLITE_OK
 52078  	var p uintptr = pFile
 52079  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52080  
 52081  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 52082  
 52083  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 52084  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52085  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 52086  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 52087  		}
 52088  		rc = (*struct {
 52089  			f func(*libc.TLS, uintptr) int32
 52090  		})(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)
 52091  		sqlite3.Xsqlite3_free(tls, pReal)
 52092  	}
 52093  
 52094  	return rc
 52095  }
 52096  
 52097  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52098  	var rc int32 = SQLITE_OK
 52099  	var p uintptr = pFile
 52100  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52101  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52102  
 52103  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 52104  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52105  		rc = SQLITE_IOERR | int32(2)<<8
 52106  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52107  		rc = (*struct {
 52108  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52109  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52110  	} else {
 52111  		var iRem int32 = iAmt
 52112  		var iBuf int32 = 0
 52113  		var ii int32 = int32(iOfst)
 52114  		for iRem > 0 && rc == SQLITE_OK {
 52115  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52116  			var iRealAmt int32 = func() int32 {
 52117  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52118  					return iRem
 52119  				}
 52120  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52121  			}()
 52122  
 52123  			rc = (*struct {
 52124  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52125  			})(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))
 52126  			ii = ii + iRealAmt
 52127  			iBuf = iBuf + iRealAmt
 52128  			iRem = iRem - iRealAmt
 52129  		}
 52130  	}
 52131  
 52132  	return rc
 52133  }
 52134  
 52135  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52136  	var rc int32 = SQLITE_OK
 52137  	var p uintptr = pFile
 52138  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52139  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52140  
 52141  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52142  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52143  			rc = SQLITE_FULL
 52144  		} else {
 52145  			rc = (*struct {
 52146  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52147  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52148  			if rc == SQLITE_OK {
 52149  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52150  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 52151  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52152  					}
 52153  					return int32(sqlite_int64(iAmt) + iOfst)
 52154  				}()
 52155  			}
 52156  		}
 52157  	} else {
 52158  		var iRem int32 = iAmt
 52159  		var iBuf int32 = 0
 52160  		var ii int32 = int32(iOfst)
 52161  		for iRem > 0 && rc == SQLITE_OK {
 52162  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52163  			var iRealAmt int32 = func() int32 {
 52164  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52165  					return iRem
 52166  				}
 52167  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52168  			}()
 52169  
 52170  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 52171  				rc = SQLITE_FULL
 52172  			} else {
 52173  				rc = (*struct {
 52174  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52175  				})(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))
 52176  				ii = ii + iRealAmt
 52177  				iBuf = iBuf + iRealAmt
 52178  				iRem = iRem - iRealAmt
 52179  			}
 52180  		}
 52181  		if rc == SQLITE_OK {
 52182  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52183  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 52184  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52185  				}
 52186  				return int32(sqlite_int64(iAmt) + iOfst)
 52187  			}()
 52188  		}
 52189  	}
 52190  
 52191  	return rc
 52192  }
 52193  
 52194  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52195  	var p uintptr = pFile
 52196  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52197  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52198  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52199  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 52200  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52201  			}
 52202  			return int32(size)
 52203  		}()
 52204  	} else {
 52205  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52206  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 52207  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52208  			}
 52209  			return int32(size)
 52210  		}()
 52211  	}
 52212  	return SQLITE_OK
 52213  }
 52214  
 52215  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52216  	bp := tls.Alloc(4)
 52217  	defer tls.Free(4)
 52218  
 52219  	var p uintptr = pFile
 52220  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52221  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52222  	var rc int32 = SQLITE_OK
 52223  
 52224  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52225  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 52226  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 52227  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 52228  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 52229  		rc = (*struct {
 52230  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52231  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 52232  	}
 52233  	if rc == SQLITE_OK {
 52234  		rc = (*struct {
 52235  			f func(*libc.TLS, uintptr, int32) int32
 52236  		})(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))
 52237  	}
 52238  
 52239  	return rc
 52240  }
 52241  
 52242  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52243  	var p uintptr = pFile
 52244  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52245  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52246  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 52247  	} else {
 52248  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 52249  	}
 52250  	return SQLITE_OK
 52251  }
 52252  
 52253  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52254  	return SQLITE_OK
 52255  }
 52256  
 52257  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52258  	return SQLITE_OK
 52259  }
 52260  
 52261  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52262  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52263  	return SQLITE_OK
 52264  }
 52265  
 52266  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52267  	if op == SQLITE_FCNTL_PRAGMA {
 52268  		return SQLITE_NOTFOUND
 52269  	}
 52270  	return SQLITE_OK
 52271  }
 52272  
 52273  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52274  	return BLOCKSIZE
 52275  }
 52276  
 52277  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52278  	return 0
 52279  }
 52280  
 52281  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52282  	bp := tls.Alloc(12)
 52283  	defer tls.Free(12)
 52284  
 52285  	var pFsVfs uintptr
 52286  	var p uintptr
 52287  	var pReal uintptr
 52288  	var eType int32
 52289  	var nName int32
 52290  	var rc int32
 52291  	var p2 uintptr
 52292  
 52293  	var real_flags int32
 52294  
 52295  	var pRealFile uintptr
 52296  	var pParent uintptr
 52297  	pFsVfs = pVfs
 52298  	p = pFile
 52299  	pReal = uintptr(0)
 52300  	rc = SQLITE_OK
 52301  
 52302  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 52303  		goto __1
 52304  	}
 52305  	p2 = pFile
 52306  	libc.Xmemset(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})))
 52307  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 52308  	return SQLITE_OK
 52309  __1:
 52310  	;
 52311  	eType = func() int32 {
 52312  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 52313  			return DATABASE_FILE
 52314  		}
 52315  		return JOURNAL_FILE
 52316  	}()
 52317  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 52318  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 52319  
 52320  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 52321  		if eType == JOURNAL_FILE {
 52322  			return 8
 52323  		}
 52324  		return 0
 52325  	}()
 52326  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52327  __2:
 52328  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 52329  		goto __4
 52330  	}
 52331  	goto __3
 52332  __3:
 52333  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52334  	goto __2
 52335  	goto __4
 52336  __4:
 52337  	;
 52338  	if !!(pReal != 0) {
 52339  		goto __5
 52340  	}
 52341  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 52342  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 52343  
 52344  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 52345  	if !!(pReal != 0) {
 52346  		goto __6
 52347  	}
 52348  	rc = SQLITE_NOMEM
 52349  	goto open_out
 52350  __6:
 52351  	;
 52352  	libc.Xmemset(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 52353  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 52354  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 52355  
 52356  	rc = (*struct {
 52357  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52358  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 52359  	if !(rc != SQLITE_OK) {
 52360  		goto __7
 52361  	}
 52362  	goto open_out
 52363  __7:
 52364  	;
 52365  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52366  
 52367  	rc = (*struct {
 52368  		f func(*libc.TLS, uintptr, uintptr) int32
 52369  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 52370  	if !(rc != SQLITE_OK) {
 52371  		goto __8
 52372  	}
 52373  	goto open_out
 52374  __8:
 52375  	;
 52376  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 52377  		goto __9
 52378  	}
 52379  	rc = (*struct {
 52380  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52381  	})(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))
 52382  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 52383  	goto __10
 52384  __9:
 52385  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 52386  	rc = (*struct {
 52387  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52388  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 52389  	(*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)))
 52390  	if !(rc == SQLITE_OK) {
 52391  		goto __11
 52392  	}
 52393  	rc = (*struct {
 52394  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52395  	})(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))
 52396  	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) {
 52397  		goto __12
 52398  	}
 52399  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 52400  __12:
 52401  	;
 52402  __11:
 52403  	;
 52404  __10:
 52405  	;
 52406  	if !(rc == SQLITE_OK) {
 52407  		goto __13
 52408  	}
 52409  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52410  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 52411  		goto __14
 52412  	}
 52413  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 52414  __14:
 52415  	;
 52416  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 52417  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 52418  __13:
 52419  	;
 52420  __5:
 52421  	;
 52422  open_out:
 52423  	if !(pReal != 0) {
 52424  		goto __15
 52425  	}
 52426  	if !(rc == SQLITE_OK) {
 52427  		goto __16
 52428  	}
 52429  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 52430  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 52431  	goto __17
 52432  __16:
 52433  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 52434  		goto __18
 52435  	}
 52436  	(*struct {
 52437  		f func(*libc.TLS, uintptr) int32
 52438  	})(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)
 52439  __18:
 52440  	;
 52441  	sqlite3.Xsqlite3_free(tls, pReal)
 52442  __17:
 52443  	;
 52444  __15:
 52445  	;
 52446  	return rc
 52447  }
 52448  
 52449  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52450  	var rc int32 = SQLITE_OK
 52451  	var pFsVfs uintptr = pVfs
 52452  	var pReal uintptr
 52453  	var pF uintptr
 52454  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 52455  
 52456  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52457  	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 {
 52458  	}
 52459  	if pReal != 0 {
 52460  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52461  		rc = (*struct {
 52462  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52463  		})(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))
 52464  		if rc == SQLITE_OK {
 52465  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 52466  		}
 52467  	}
 52468  	return rc
 52469  }
 52470  
 52471  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52472  	var pFsVfs uintptr = pVfs
 52473  	var pReal uintptr
 52474  	var isJournal int32 = 0
 52475  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 52476  
 52477  	if flags != SQLITE_ACCESS_EXISTS {
 52478  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52479  		return (*struct {
 52480  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52481  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 52482  	}
 52483  
 52484  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 52485  		nName = nName - 8
 52486  		isJournal = 1
 52487  	}
 52488  
 52489  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52490  	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 {
 52491  	}
 52492  
 52493  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 52494  	return SQLITE_OK
 52495  }
 52496  
 52497  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52498  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52499  	return (*struct {
 52500  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52501  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 52502  }
 52503  
 52504  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52505  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52506  	return (*struct {
 52507  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52508  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 52509  }
 52510  
 52511  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52512  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52513  	(*struct {
 52514  		f func(*libc.TLS, uintptr, int32, uintptr)
 52515  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 52516  }
 52517  
 52518  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 52519  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52520  	return (*struct {
 52521  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52522  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 52523  }
 52524  
 52525  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52526  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52527  	(*struct {
 52528  		f func(*libc.TLS, uintptr, uintptr)
 52529  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 52530  }
 52531  
 52532  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52533  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52534  	return (*struct {
 52535  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52536  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 52537  }
 52538  
 52539  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52540  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52541  	return (*struct {
 52542  		f func(*libc.TLS, uintptr, int32) int32
 52543  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 52544  }
 52545  
 52546  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52547  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52548  	return (*struct {
 52549  		f func(*libc.TLS, uintptr, uintptr) int32
 52550  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 52551  }
 52552  
 52553  func fs_register(tls *libc.TLS) int32 {
 52554  	if fs_vfs.FpParent != 0 {
 52555  		return SQLITE_OK
 52556  	}
 52557  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52558  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 52559  	fs_vfs.Fbase.FszOsFile = func() int32 {
 52560  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 52561  			return int32(unsafe.Sizeof(tmp_file{}))
 52562  		}
 52563  		return int32(unsafe.Sizeof(fs_file{}))
 52564  	}()
 52565  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 52566  }
 52567  
 52568  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 52569  	return fs_register(tls)
 52570  }
 52571  
 52572  type VfslogVfs1 = struct {
 52573  	Fbase        sqlite3_vfs
 52574  	FpVfs        uintptr
 52575  	FiNextFileId int32
 52576  	F__ccgo_pad1 [4]byte
 52577  	FpLog        uintptr
 52578  	FiOffset     sqlite3_int64
 52579  	FnBuf        int32
 52580  	FaBuf        [8192]int8
 52581  	F__ccgo_pad2 [4]byte
 52582  }
 52583  
 52584  type VfslogVfs = VfslogVfs1
 52585  type VfslogFile1 = struct {
 52586  	Fbase        sqlite3_file
 52587  	FpReal       uintptr
 52588  	FpVfslog     uintptr
 52589  	FiFileId     int32
 52590  	F__ccgo_pad1 [4]byte
 52591  }
 52592  
 52593  type VfslogFile = VfslogFile1
 52594  
 52595  var vfslog_vfs = sqlite3_vfs{
 52596  	FiVersion:          1,
 52597  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 52598  	FmxPathname:        INST_MAX_PATHNAME,
 52599  	FxOpen:             0,
 52600  	FxDelete:           0,
 52601  	FxAccess:           0,
 52602  	FxFullPathname:     0,
 52603  	FxDlOpen:           0,
 52604  	FxDlError:          0,
 52605  	FxDlSym:            0,
 52606  	FxDlClose:          0,
 52607  	FxRandomness:       0,
 52608  	FxSleep:            0,
 52609  	FxCurrentTime:      0,
 52610  	FxGetLastError:     0,
 52611  	FxCurrentTimeInt64: 0,
 52612  }
 52613  
 52614  var vfslog_io_methods = sqlite3_io_methods{
 52615  	FiVersion:               2,
 52616  	FxClose:                 0,
 52617  	FxRead:                  0,
 52618  	FxWrite:                 0,
 52619  	FxTruncate:              0,
 52620  	FxSync:                  0,
 52621  	FxFileSize:              0,
 52622  	FxLock:                  0,
 52623  	FxUnlock:                0,
 52624  	FxCheckReservedLock:     0,
 52625  	FxFileControl:           0,
 52626  	FxSectorSize:            0,
 52627  	FxDeviceCharacteristics: 0,
 52628  	FxShmMap:                0,
 52629  	FxShmLock:               0,
 52630  	FxShmBarrier:            0,
 52631  	FxShmUnmap:              0,
 52632  }
 52633  
 52634  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 52635  	bp := tls.Alloc(16)
 52636  	defer tls.Free(16)
 52637  
 52638  	libc.Xgettimeofday(tls, bp, uintptr(0))
 52639  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 52640  }
 52641  
 52642  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 52643  	var t sqlite3_uint64
 52644  	var rc int32 = SQLITE_OK
 52645  	var p uintptr = pFile
 52646  
 52647  	t = vfslog_time(tls)
 52648  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 52649  		rc = (*struct {
 52650  			f func(*libc.TLS, uintptr) int32
 52651  		})(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)
 52652  	}
 52653  	t = vfslog_time(tls) - t
 52654  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52655  	return rc
 52656  }
 52657  
 52658  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52659  	var rc int32
 52660  	var t sqlite3_uint64
 52661  	var p uintptr = pFile
 52662  	t = vfslog_time(tls)
 52663  	rc = (*struct {
 52664  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52665  	})(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)
 52666  	t = vfslog_time(tls) - t
 52667  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52668  	return rc
 52669  }
 52670  
 52671  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52672  	var rc int32
 52673  	var t sqlite3_uint64
 52674  	var p uintptr = pFile
 52675  	t = vfslog_time(tls)
 52676  	rc = (*struct {
 52677  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52678  	})(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)
 52679  	t = vfslog_time(tls) - t
 52680  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52681  	return rc
 52682  }
 52683  
 52684  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52685  	var rc int32
 52686  	var t sqlite3_uint64
 52687  	var p uintptr = pFile
 52688  	t = vfslog_time(tls)
 52689  	rc = (*struct {
 52690  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 52691  	})(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)
 52692  	t = vfslog_time(tls) - t
 52693  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 52694  	return rc
 52695  }
 52696  
 52697  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52698  	var rc int32
 52699  	var t sqlite3_uint64
 52700  	var p uintptr = pFile
 52701  	t = vfslog_time(tls)
 52702  	rc = (*struct {
 52703  		f func(*libc.TLS, uintptr, int32) int32
 52704  	})(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)
 52705  	t = vfslog_time(tls) - t
 52706  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 52707  	return rc
 52708  }
 52709  
 52710  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52711  	var rc int32
 52712  	var t sqlite3_uint64
 52713  	var p uintptr = pFile
 52714  	t = vfslog_time(tls)
 52715  	rc = (*struct {
 52716  		f func(*libc.TLS, uintptr, uintptr) int32
 52717  	})(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)
 52718  	t = vfslog_time(tls) - t
 52719  	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))))
 52720  	return rc
 52721  }
 52722  
 52723  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52724  	var rc int32
 52725  	var t sqlite3_uint64
 52726  	var p uintptr = pFile
 52727  	t = vfslog_time(tls)
 52728  	rc = (*struct {
 52729  		f func(*libc.TLS, uintptr, int32) int32
 52730  	})(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)
 52731  	t = vfslog_time(tls) - t
 52732  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52733  	return rc
 52734  }
 52735  
 52736  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52737  	var rc int32
 52738  	var t sqlite3_uint64
 52739  	var p uintptr = pFile
 52740  	t = vfslog_time(tls)
 52741  	rc = (*struct {
 52742  		f func(*libc.TLS, uintptr, int32) int32
 52743  	})(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)
 52744  	t = vfslog_time(tls) - t
 52745  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52746  	return rc
 52747  }
 52748  
 52749  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52750  	var rc int32
 52751  	var t sqlite3_uint64
 52752  	var p uintptr = pFile
 52753  	t = vfslog_time(tls)
 52754  	rc = (*struct {
 52755  		f func(*libc.TLS, uintptr, uintptr) int32
 52756  	})(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)
 52757  	t = vfslog_time(tls) - t
 52758  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 52759  	return rc
 52760  }
 52761  
 52762  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52763  	bp := tls.Alloc(8)
 52764  	defer tls.Free(8)
 52765  
 52766  	var p uintptr = pFile
 52767  	var rc int32 = (*struct {
 52768  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52769  	})(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)
 52770  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 52771  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 52772  	}
 52773  	return rc
 52774  }
 52775  
 52776  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52777  	var rc int32
 52778  	var t sqlite3_uint64
 52779  	var p uintptr = pFile
 52780  	t = vfslog_time(tls)
 52781  	rc = (*struct {
 52782  		f func(*libc.TLS, uintptr) int32
 52783  	})(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)
 52784  	t = vfslog_time(tls) - t
 52785  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52786  	return rc
 52787  }
 52788  
 52789  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52790  	var rc int32
 52791  	var t sqlite3_uint64
 52792  	var p uintptr = pFile
 52793  	t = vfslog_time(tls)
 52794  	rc = (*struct {
 52795  		f func(*libc.TLS, uintptr) int32
 52796  	})(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)
 52797  	t = vfslog_time(tls) - t
 52798  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52799  	return rc
 52800  }
 52801  
 52802  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 52803  	var rc int32
 52804  	var t sqlite3_uint64
 52805  	var p uintptr = pFile
 52806  	t = vfslog_time(tls)
 52807  	rc = (*struct {
 52808  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 52809  	})(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)
 52810  	t = vfslog_time(tls) - t
 52811  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52812  	return rc
 52813  }
 52814  
 52815  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 52816  	var rc int32
 52817  	var t sqlite3_uint64
 52818  	var p uintptr = pFile
 52819  	t = vfslog_time(tls)
 52820  	rc = (*struct {
 52821  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 52822  	})(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)
 52823  	t = vfslog_time(tls) - t
 52824  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52825  	return rc
 52826  }
 52827  
 52828  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 52829  	var t sqlite3_uint64
 52830  	var p uintptr = pFile
 52831  	t = vfslog_time(tls)
 52832  	(*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)
 52833  	t = vfslog_time(tls) - t
 52834  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 52835  }
 52836  
 52837  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 52838  	var rc int32
 52839  	var t sqlite3_uint64
 52840  	var p uintptr = pFile
 52841  	t = vfslog_time(tls)
 52842  	rc = (*struct {
 52843  		f func(*libc.TLS, uintptr, int32) int32
 52844  	})(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)
 52845  	t = vfslog_time(tls) - t
 52846  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52847  	return rc
 52848  }
 52849  
 52850  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52851  	var rc int32
 52852  	var t sqlite3_uint64
 52853  	var p uintptr = pFile
 52854  	var pLog uintptr = pVfs
 52855  
 52856  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 52857  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 52858  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 52859  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 52860  
 52861  	t = vfslog_time(tls)
 52862  	rc = (*struct {
 52863  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52864  	})(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)
 52865  	t = vfslog_time(tls) - t
 52866  
 52867  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52868  	vfslog_string(tls, pVfs, zName)
 52869  	return rc
 52870  }
 52871  
 52872  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52873  	var rc int32
 52874  	var t sqlite3_uint64
 52875  	t = vfslog_time(tls)
 52876  	rc = (*struct {
 52877  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 52878  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 52879  	t = vfslog_time(tls) - t
 52880  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 52881  	vfslog_string(tls, pVfs, zPath)
 52882  	return rc
 52883  }
 52884  
 52885  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52886  	var rc int32
 52887  	var t sqlite3_uint64
 52888  	t = vfslog_time(tls)
 52889  	rc = (*struct {
 52890  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52891  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 52892  	t = vfslog_time(tls) - t
 52893  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 52894  	vfslog_string(tls, pVfs, zPath)
 52895  	return rc
 52896  }
 52897  
 52898  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52899  	return (*struct {
 52900  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52901  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 52902  }
 52903  
 52904  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52905  	return (*struct {
 52906  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52907  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 52908  }
 52909  
 52910  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52911  	(*struct {
 52912  		f func(*libc.TLS, uintptr, int32, uintptr)
 52913  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 52914  }
 52915  
 52916  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 52917  	return (*struct {
 52918  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52919  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 52920  }
 52921  
 52922  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52923  	(*struct {
 52924  		f func(*libc.TLS, uintptr, uintptr)
 52925  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 52926  }
 52927  
 52928  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52929  	return (*struct {
 52930  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52931  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 52932  }
 52933  
 52934  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52935  	return (*struct {
 52936  		f func(*libc.TLS, uintptr, int32) int32
 52937  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 52938  }
 52939  
 52940  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52941  	return (*struct {
 52942  		f func(*libc.TLS, uintptr, uintptr) int32
 52943  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 52944  }
 52945  
 52946  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 52947  	return (*struct {
 52948  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52949  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 52950  }
 52951  
 52952  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 52953  	return (*struct {
 52954  		f func(*libc.TLS, uintptr, uintptr) int32
 52955  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 52956  }
 52957  
 52958  func vfslog_flush(tls *libc.TLS, p uintptr) {
 52959  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 52960  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 52961  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 52962  
 52963  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 52964  	sqlite3.Xsqlite3_io_error_persist = 0
 52965  	sqlite3.Xsqlite3_diskfull_pending = 0
 52966  
 52967  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 52968  		(*struct {
 52969  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52970  		})(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)
 52971  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52972  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 52973  	}
 52974  
 52975  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 52976  	sqlite3.Xsqlite3_io_error_persist = persist
 52977  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 52978  }
 52979  
 52980  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 52981  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 52982  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 52983  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 52984  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 52985  }
 52986  
 52987  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 52988  	var p uintptr = pVfs
 52989  	var zRec uintptr
 52990  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 52991  		vfslog_flush(tls, p)
 52992  	}
 52993  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52994  	put32bits(tls, zRec, uint32(eEvent))
 52995  	put32bits(tls, zRec+4, uint32(iFileid))
 52996  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 52997  	put32bits(tls, zRec+12, uint32(return_code))
 52998  	put32bits(tls, zRec+16, uint32(size))
 52999  	put32bits(tls, zRec+20, uint32(offset))
 53000  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 53001  }
 53002  
 53003  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 53004  	var p uintptr = pVfs
 53005  	var zRec uintptr
 53006  	var nStr int32
 53007  	if zStr != 0 {
 53008  		nStr = int32(libc.Xstrlen(tls, zStr))
 53009  	} else {
 53010  		nStr = 0
 53011  	}
 53012  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 53013  		vfslog_flush(tls, p)
 53014  	}
 53015  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53016  	put32bits(tls, zRec, uint32(nStr))
 53017  	if zStr != 0 {
 53018  		libc.Xmemcpy(tls, zRec+4, zStr, uint64(nStr))
 53019  	}
 53020  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 53021  }
 53022  
 53023  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 53024  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 53025  		vfslog_flush(tls, p)
 53026  		(*struct {
 53027  			f func(*libc.TLS, uintptr) int32
 53028  		})(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)
 53029  	}
 53030  	sqlite3.Xsqlite3_free(tls, p)
 53031  }
 53032  
 53033  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 53034  	var pVfs uintptr
 53035  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53036  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53037  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53038  	}{vfslogOpen})) {
 53039  		return SQLITE_ERROR
 53040  	}
 53041  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 53042  	vfslog_finalize(tls, pVfs)
 53043  	return SQLITE_OK
 53044  }
 53045  
 53046  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 53047  	bp := tls.Alloc(4)
 53048  	defer tls.Free(4)
 53049  
 53050  	var p uintptr
 53051  	var pParent uintptr
 53052  	var nByte int32
 53053  
 53054  	var rc int32
 53055  	var zFile uintptr
 53056  	var nVfs int32
 53057  
 53058  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 53059  	if !(pParent != 0) {
 53060  		return SQLITE_ERROR
 53061  	}
 53062  
 53063  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 53064  	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))
 53065  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53066  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53067  
 53068  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 53069  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 53070  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 53071  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 53072  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 53073  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs))
 53074  
 53075  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 53076  	(*struct {
 53077  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53078  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 53079  
 53080  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 53081  	(*struct {
 53082  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53083  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 53084  	rc = (*struct {
 53085  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53086  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 53087  	if rc == SQLITE_OK {
 53088  		libc.Xmemcpy(tls, p+204, ts+35535, uint64(20))
 53089  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 53090  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 53091  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 53092  	}
 53093  	if rc != 0 {
 53094  		vfslog_finalize(tls, p)
 53095  	}
 53096  	return rc
 53097  }
 53098  
 53099  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 53100  	var pVfs uintptr
 53101  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53102  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53103  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53104  	}{vfslogOpen})) {
 53105  		return SQLITE_ERROR
 53106  	}
 53107  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 53108  	vfslog_string(tls, pVfs, zMsg)
 53109  	return SQLITE_OK
 53110  }
 53111  
 53112  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 53113  	var zEvent uintptr = uintptr(0)
 53114  
 53115  	switch eEvent {
 53116  	case OS_CLOSE:
 53117  		zEvent = ts + 35556
 53118  		break
 53119  	case OS_READ:
 53120  		zEvent = ts + 35563
 53121  		break
 53122  	case OS_WRITE:
 53123  		zEvent = ts + 35569
 53124  		break
 53125  	case OS_TRUNCATE:
 53126  		zEvent = ts + 35576
 53127  		break
 53128  	case OS_SYNC:
 53129  		zEvent = ts + 27843
 53130  		break
 53131  	case OS_FILESIZE:
 53132  		zEvent = ts + 35586
 53133  		break
 53134  	case OS_LOCK:
 53135  		zEvent = ts + 35596
 53136  		break
 53137  	case OS_UNLOCK:
 53138  		zEvent = ts + 35602
 53139  		break
 53140  	case OS_CHECKRESERVEDLOCK:
 53141  		zEvent = ts + 35610
 53142  		break
 53143  	case OS_FILECONTROL:
 53144  		zEvent = ts + 35624
 53145  		break
 53146  	case OS_SECTORSIZE:
 53147  		zEvent = ts + 35637
 53148  		break
 53149  	case OS_DEVCHAR:
 53150  		zEvent = ts + 35649
 53151  		break
 53152  	case OS_OPEN:
 53153  		zEvent = ts + 27421
 53154  		break
 53155  	case OS_DELETE:
 53156  		zEvent = ts + 35661
 53157  		break
 53158  	case OS_ACCESS:
 53159  		zEvent = ts + 35669
 53160  		break
 53161  	case OS_FULLPATHNAME:
 53162  		zEvent = ts + 35677
 53163  		break
 53164  	case OS_RANDOMNESS:
 53165  		zEvent = ts + 35691
 53166  		break
 53167  	case OS_SLEEP:
 53168  		zEvent = ts + 35703
 53169  		break
 53170  	case OS_CURRENTTIME:
 53171  		zEvent = ts + 35710
 53172  		break
 53173  
 53174  	case OS_SHMUNMAP:
 53175  		zEvent = ts + 35723
 53176  		break
 53177  	case OS_SHMLOCK:
 53178  		zEvent = ts + 35733
 53179  		break
 53180  	case OS_SHMBARRIER:
 53181  		zEvent = ts + 35742
 53182  		break
 53183  	case OS_SHMMAP:
 53184  		zEvent = ts + 35754
 53185  		break
 53186  
 53187  	case OS_ANNOTATE:
 53188  		zEvent = ts + 35762
 53189  		break
 53190  	}
 53191  
 53192  	return zEvent
 53193  }
 53194  
 53195  type VfslogVtab1 = struct {
 53196  	Fbase  sqlite3_vtab
 53197  	FpFd   uintptr
 53198  	FnByte sqlite3_int64
 53199  	FzFile uintptr
 53200  }
 53201  
 53202  type VfslogVtab = VfslogVtab1
 53203  type VfslogCsr1 = struct {
 53204  	Fbase        sqlite3_vtab_cursor
 53205  	FiRowid      sqlite3_int64
 53206  	FiOffset     sqlite3_int64
 53207  	FzTransient  uintptr
 53208  	FnFile       int32
 53209  	F__ccgo_pad1 [4]byte
 53210  	FazFile      uintptr
 53211  	FaBuf        [1024]uint8
 53212  }
 53213  
 53214  type VfslogCsr = VfslogCsr1
 53215  
 53216  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 53217  	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))))
 53218  }
 53219  
 53220  func dequote(tls *libc.TLS, z uintptr) {
 53221  	var quote int8
 53222  	quote = *(*int8)(unsafe.Pointer(z))
 53223  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 53224  		var iIn int32 = 1
 53225  		var iOut int32 = 0
 53226  		if int32(quote) == '[' {
 53227  			quote = int8(']')
 53228  		}
 53229  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 53230  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 53231  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 53232  					break
 53233  				}
 53234  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 53235  				iIn = iIn + 2
 53236  			} else {
 53237  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 53238  			}
 53239  		}
 53240  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 53241  	}
 53242  }
 53243  
 53244  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 53245  	bp := tls.Alloc(12)
 53246  	defer tls.Free(12)
 53247  
 53248  	var pVfs uintptr
 53249  
 53250  	var p uintptr
 53251  	var rc int32
 53252  	var nByte int32
 53253  	var zFile uintptr
 53254  
 53255  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 53256  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 53257  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 53258  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53259  	if p == uintptr(0) {
 53260  		return SQLITE_NOMEM
 53261  	}
 53262  	libc.Xmemset(tls, p, 0, uint64(nByte))
 53263  
 53264  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 53265  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 53266  
 53267  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 53268  	if !(zFile != 0) {
 53269  		sqlite3.Xsqlite3_free(tls, p)
 53270  		return SQLITE_NOMEM
 53271  	}
 53272  	dequote(tls, zFile)
 53273  	(*struct {
 53274  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53275  	})(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)
 53276  	sqlite3.Xsqlite3_free(tls, zFile)
 53277  
 53278  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 53279  	rc = (*struct {
 53280  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53281  	})(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)
 53282  
 53283  	if rc == SQLITE_OK {
 53284  		(*struct {
 53285  			f func(*libc.TLS, uintptr, uintptr) int32
 53286  		})(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)
 53287  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 53288  			ts+35773)
 53289  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 53290  	} else {
 53291  		sqlite3.Xsqlite3_free(tls, p)
 53292  	}
 53293  
 53294  	return rc
 53295  }
 53296  
 53297  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 53298  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 53299  	return SQLITE_OK
 53300  }
 53301  
 53302  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 53303  	var p uintptr = pVtab
 53304  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 53305  		(*struct {
 53306  			f func(*libc.TLS, uintptr) int32
 53307  		})(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)
 53308  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 53309  	}
 53310  	sqlite3.Xsqlite3_free(tls, p)
 53311  	return SQLITE_OK
 53312  }
 53313  
 53314  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 53315  	var pCsr uintptr
 53316  
 53317  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 53318  	if !(pCsr != 0) {
 53319  		return SQLITE_NOMEM
 53320  	}
 53321  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})))
 53322  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 53323  	return SQLITE_OK
 53324  }
 53325  
 53326  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 53327  	var p uintptr = pCursor
 53328  	var i int32
 53329  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 53330  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 53331  	}
 53332  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 53333  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 53334  	sqlite3.Xsqlite3_free(tls, p)
 53335  	return SQLITE_OK
 53336  }
 53337  
 53338  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 53339  	bp := tls.Alloc(4)
 53340  	defer tls.Free(4)
 53341  
 53342  	var pCsr uintptr = pCursor
 53343  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53344  	var rc int32 = SQLITE_OK
 53345  	var nRead int32
 53346  
 53347  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 53348  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 53349  
 53350  	nRead = 24
 53351  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 53352  		var eEvent int32
 53353  		rc = (*struct {
 53354  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53355  		})(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)
 53356  
 53357  		eEvent = int32(get32bits(tls, pCsr+48))
 53358  		if rc == SQLITE_OK &&
 53359  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 53360  			rc = (*struct {
 53361  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53362  			})(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))
 53363  			nRead = nRead + 4
 53364  			if rc == SQLITE_OK {
 53365  				var nStr int32 = int32(get32bits(tls, bp))
 53366  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 53367  				rc = (*struct {
 53368  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53369  				})(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))
 53370  				*(*int8)(unsafe.Pointer(zStr + uintptr(nStr))) = int8(0)
 53371  				nRead = nRead + nStr
 53372  
 53373  				if eEvent == OS_OPEN {
 53374  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 53375  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 53376  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 53377  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 53378  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 53379  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew))
 53380  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 53381  					}
 53382  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 53383  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 53384  				} else {
 53385  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 53386  				}
 53387  			}
 53388  		}
 53389  	}
 53390  
 53391  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 53392  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 53393  	return rc
 53394  }
 53395  
 53396  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 53397  	var pCsr uintptr = pCursor
 53398  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53399  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 53400  }
 53401  
 53402  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 53403  	var pCsr uintptr = pCursor
 53404  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 53405  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 53406  	return vlogNext(tls, pCursor)
 53407  }
 53408  
 53409  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 53410  	var val uint32
 53411  	var pCsr uintptr = pCursor
 53412  
 53413  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 53414  
 53415  	switch i {
 53416  	case 0:
 53417  		{
 53418  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 53419  			break
 53420  
 53421  		}
 53422  	case 1:
 53423  		{
 53424  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 53425  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 53426  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 53427  			}
 53428  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 53429  			break
 53430  
 53431  		}
 53432  	default:
 53433  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 53434  		break
 53435  	}
 53436  
 53437  	return SQLITE_OK
 53438  }
 53439  
 53440  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 53441  	var pCsr uintptr = pCursor
 53442  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 53443  	return SQLITE_OK
 53444  }
 53445  
 53446  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 53447  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 53448  	return SQLITE_OK
 53449  }
 53450  
 53451  var vfslog_module = sqlite3_module{
 53452  	FxCreate:     0,
 53453  	FxConnect:    0,
 53454  	FxBestIndex:  0,
 53455  	FxDisconnect: 0,
 53456  	FxDestroy:    0,
 53457  	FxOpen:       0,
 53458  	FxClose:      0,
 53459  	FxFilter:     0,
 53460  	FxNext:       0,
 53461  	FxEof:        0,
 53462  	FxColumn:     0,
 53463  	FxRowid:      0,
 53464  }
 53465  
 53466  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 53467  	bp := tls.Alloc(144)
 53468  	defer tls.Free(144)
 53469  
 53470  	var db uintptr
 53471  
 53472  	var rc int32 = SQLITE_ERROR
 53473  
 53474  	if objc < 2 {
 53475  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 53476  		return TCL_ERROR
 53477  	}
 53478  	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 {
 53479  		return TCL_ERROR
 53480  	}
 53481  
 53482  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 53483  	case uint32(0):
 53484  		{
 53485  			var zVfs uintptr
 53486  			var zMsg uintptr
 53487  			if objc != 4 {
 53488  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 53489  				return TCL_ERROR
 53490  			}
 53491  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53492  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 53493  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 53494  			if rc != SQLITE_OK {
 53495  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 53496  				return TCL_ERROR
 53497  			}
 53498  			break
 53499  
 53500  		}
 53501  	case uint32(1):
 53502  		{
 53503  			var zVfs uintptr
 53504  			if objc != 3 {
 53505  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 53506  				return TCL_ERROR
 53507  			}
 53508  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53509  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 53510  			if rc != SQLITE_OK {
 53511  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 53512  				return TCL_ERROR
 53513  			}
 53514  			break
 53515  
 53516  		}
 53517  
 53518  	case uint32(2):
 53519  		{
 53520  			var zVfs uintptr
 53521  			var zParent uintptr
 53522  			var zLog uintptr
 53523  			if objc != 5 {
 53524  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 53525  				return TCL_ERROR
 53526  			}
 53527  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53528  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 53529  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 53530  			if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 53531  				zParent = uintptr(0)
 53532  			}
 53533  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 53534  			if rc != SQLITE_OK {
 53535  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 53536  				return TCL_ERROR
 53537  			}
 53538  			break
 53539  
 53540  		}
 53541  
 53542  	case uint32(3):
 53543  		{
 53544  			var zDb uintptr
 53545  			if objc != 3 {
 53546  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 53547  				return TCL_ERROR
 53548  			}
 53549  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 53550  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 53551  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 53552  				rc = sqlite3_vfslog_register(tls, db)
 53553  			}
 53554  			if rc != SQLITE_OK {
 53555  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 53556  				return TCL_ERROR
 53557  			}
 53558  			break
 53559  
 53560  		}
 53561  	}
 53562  
 53563  	return TCL_OK
 53564  }
 53565  
 53566  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 53567  
 53568  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 53569  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 53570  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53571  	}{test_vfslog})), uintptr(0), uintptr(0))
 53572  	return TCL_OK
 53573  }
 53574  
 53575  type testpcacheGlobalType1 = struct {
 53576  	FpDummy        uintptr
 53577  	FnInstance     int32
 53578  	FdiscardChance uint32
 53579  	FprngSeed      uint32
 53580  	FhighStress    uint32
 53581  }
 53582  
 53583  type testpcacheGlobalType = testpcacheGlobalType1
 53584  
 53585  var testpcacheGlobal testpcacheGlobalType
 53586  
 53587  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 53588  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 53589  	if testpcacheGlobal.FpDummy == uintptr(0) {
 53590  		return SQLITE_NOMEM
 53591  	}
 53592  	return SQLITE_OK
 53593  }
 53594  
 53595  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 53596  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 53597  	testpcacheGlobal.FpDummy = uintptr(0)
 53598  }
 53599  
 53600  type testpcache1 = struct {
 53601  	FszPage      int32
 53602  	FszExtra     int32
 53603  	FbPurgeable  int32
 53604  	FnFree       int32
 53605  	FnPinned     int32
 53606  	FiRand       uint32
 53607  	FiMagic      uint32
 53608  	F__ccgo_pad1 [4]byte
 53609  	Fa           [217]struct {
 53610  		Fpage     sqlite3_pcache_page
 53611  		Fkey      uint32
 53612  		FisPinned int32
 53613  	}
 53614  }
 53615  
 53616  type testpcache = testpcache1
 53617  type testpcachePage = struct {
 53618  	Fpage     sqlite3_pcache_page
 53619  	Fkey      uint32
 53620  	FisPinned int32
 53621  }
 53622  
 53623  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 53624  	var x uint32 = uint32(0)
 53625  	var i int32
 53626  	for i = 0; i < 4; i++ {
 53627  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 53628  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 53629  	}
 53630  	return x
 53631  }
 53632  
 53633  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 53634  	var nMem int32
 53635  	var x uintptr
 53636  	var p uintptr
 53637  	var i int32
 53638  
 53639  	szPage = (szPage + 7) & libc.CplInt32(7)
 53640  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 53641  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 53642  	if p == uintptr(0) {
 53643  		return uintptr(0)
 53644  	}
 53645  	x = p + 1*5240
 53646  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 53647  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 53648  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 53649  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 53650  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 53651  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 53652  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 53653  	i = 0
 53654  __1:
 53655  	if !(i < TESTPCACHE_NPAGE) {
 53656  		goto __3
 53657  	}
 53658  	{
 53659  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53660  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53661  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 53662  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 53663  
 53664  	}
 53665  	goto __2
 53666  __2:
 53667  	i++
 53668  	x += uintptr(szPage + szExtra)
 53669  	goto __1
 53670  	goto __3
 53671  __3:
 53672  	;
 53673  	testpcacheGlobal.FnInstance++
 53674  	return p
 53675  }
 53676  
 53677  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 53678  	var p uintptr = pCache
 53679  	_ = p
 53680  
 53681  }
 53682  
 53683  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 53684  	var p uintptr = pCache
 53685  
 53686  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 53687  }
 53688  
 53689  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 53690  	var p uintptr = pCache
 53691  	var i int32
 53692  	var j int32
 53693  
 53694  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53695  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 53696  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 53697  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53698  
 53699  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 53700  			}
 53701  			return p + 32 + uintptr(i)*24
 53702  		}
 53703  	}
 53704  
 53705  	if createFlag == 0 {
 53706  		return uintptr(0)
 53707  	}
 53708  
 53709  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 53710  		return uintptr(0)
 53711  	}
 53712  
 53713  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 53714  		return uintptr(0)
 53715  	}
 53716  
 53717  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 53718  		return uintptr(0)
 53719  	}
 53720  
 53721  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 53722  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53723  		i = 0
 53724  	__1:
 53725  		if !(i < TESTPCACHE_NPAGE) {
 53726  			goto __3
 53727  		}
 53728  		{
 53729  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 53730  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53731  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53732  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53733  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53734  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53735  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 53736  
 53737  				return p + 32 + uintptr(j)*24
 53738  			}
 53739  
 53740  		}
 53741  		goto __2
 53742  	__2:
 53743  		i++
 53744  		j = (j + 1) % TESTPCACHE_NPAGE
 53745  		goto __1
 53746  		goto __3
 53747  	__3:
 53748  	}
 53749  
 53750  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 53751  		return uintptr(0)
 53752  	}
 53753  
 53754  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53755  	i = 0
 53756  __4:
 53757  	if !(i < TESTPCACHE_NPAGE) {
 53758  		goto __6
 53759  	}
 53760  	{
 53761  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 53762  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53763  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53764  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53765  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53766  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53767  
 53768  			return p + 32 + uintptr(j)*24
 53769  		}
 53770  
 53771  	}
 53772  	goto __5
 53773  __5:
 53774  	i++
 53775  	j = (j + 1) % TESTPCACHE_NPAGE
 53776  	goto __4
 53777  	goto __6
 53778  __6:
 53779  	;
 53780  	return uintptr(0)
 53781  }
 53782  
 53783  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 53784  	var p uintptr = pCache
 53785  	var i int32
 53786  
 53787  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 53788  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 53789  		discard = 1
 53790  	}
 53791  
 53792  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53793  		if p+32+uintptr(i)*24 == pOldPage {
 53794  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53795  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53796  
 53797  			if discard != 0 {
 53798  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53799  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 53800  
 53801  			}
 53802  			return
 53803  		}
 53804  	}
 53805  
 53806  }
 53807  
 53808  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 53809  	var p uintptr = pCache
 53810  	var i int32
 53811  
 53812  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53813  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 53814  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53815  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53816  
 53817  			break
 53818  		}
 53819  	}
 53820  
 53821  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53822  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 53823  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 53824  			return
 53825  		}
 53826  	}
 53827  
 53828  }
 53829  
 53830  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 53831  	var p uintptr = pCache
 53832  	var i uint32
 53833  
 53834  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 53835  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 53836  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53837  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 53838  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53839  
 53840  			}
 53841  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53842  
 53843  		}
 53844  	}
 53845  }
 53846  
 53847  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 53848  	var p uintptr = pCache
 53849  
 53850  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 53851  	sqlite3.Xsqlite3_free(tls, p)
 53852  	testpcacheGlobal.FnInstance--
 53853  }
 53854  
 53855  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 53856  	bp := tls.Alloc(24)
 53857  	defer tls.Free(24)
 53858  
 53859  	testpcacheGlobal.FdiscardChance = discardChance
 53860  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 53861  	testpcacheGlobal.FhighStress = highStress
 53862  	if installFlag != isInstalled {
 53863  		if installFlag != 0 {
 53864  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 53865  
 53866  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 53867  		} else {
 53868  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 53869  		}
 53870  		isInstalled = installFlag
 53871  	}
 53872  }
 53873  
 53874  var testPcache = sqlite3_pcache_methods2{
 53875  	FiVersion:   1,
 53876  	FpArg:       0,
 53877  	FxInit:      0,
 53878  	FxShutdown:  0,
 53879  	FxCreate:    0,
 53880  	FxCachesize: 0,
 53881  	FxPagecount: 0,
 53882  	FxFetch:     0,
 53883  	FxUnpin:     0,
 53884  	FxRekey:     0,
 53885  	FxTruncate:  0,
 53886  	FxDestroy:   0,
 53887  }
 53888  var defaultPcache sqlite3_pcache_methods2
 53889  var isInstalled int32 = 0
 53890  
 53891  type quota_FILE1 = struct {
 53892  	Ff     uintptr
 53893  	FiOfst sqlite3_int64
 53894  	FpFile uintptr
 53895  }
 53896  
 53897  type quota_FILE = quota_FILE1
 53898  
 53899  type quotaGroup1 = struct {
 53900  	FzPattern  uintptr
 53901  	FiLimit    sqlite3_int64
 53902  	FiSize     sqlite3_int64
 53903  	FxCallback uintptr
 53904  	FpArg      uintptr
 53905  	FxDestroy  uintptr
 53906  	FpNext     uintptr
 53907  	FppPrev    uintptr
 53908  	FpFiles    uintptr
 53909  }
 53910  
 53911  type quotaGroup = quotaGroup1
 53912  type quotaConn1 = struct {
 53913  	Fbase  sqlite3_file
 53914  	FpFile uintptr
 53915  }
 53916  
 53917  type quotaConn = quotaConn1
 53918  type quotaFile1 = struct {
 53919  	FzFilename     uintptr
 53920  	FpGroup        uintptr
 53921  	FiSize         sqlite3_int64
 53922  	FnRef          int32
 53923  	FdeleteOnClose int32
 53924  	FpNext         uintptr
 53925  	FppPrev        uintptr
 53926  }
 53927  
 53928  type quotaFile = quotaFile1
 53929  
 53930  var gQuota struct {
 53931  	FpOrigVfs      uintptr
 53932  	FsThisVfs      sqlite3_vfs
 53933  	FsIoMethodsV1  sqlite3_io_methods
 53934  	FsIoMethodsV2  sqlite3_io_methods
 53935  	FisInitialized int32
 53936  	F__ccgo_pad1   [4]byte
 53937  	FpMutex        uintptr
 53938  	FpGroup        uintptr
 53939  }
 53940  
 53941  func quotaEnter(tls *libc.TLS) {
 53942  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 53943  }
 53944  
 53945  func quotaLeave(tls *libc.TLS) {
 53946  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 53947  }
 53948  
 53949  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 53950  	var N int32 = 0
 53951  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53952  	for pFile != 0 {
 53953  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 53954  			N++
 53955  		}
 53956  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53957  	}
 53958  	return N
 53959  }
 53960  
 53961  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 53962  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53963  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53964  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53965  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 53966  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 53967  	}
 53968  	sqlite3.Xsqlite3_free(tls, pFile)
 53969  }
 53970  
 53971  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 53972  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 53973  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 53974  	}
 53975  }
 53976  
 53977  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 53978  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 53979  		quotaRemoveAllFiles(tls, pGroup)
 53980  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53981  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 53982  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 53983  		}
 53984  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 53985  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53986  		}
 53987  		sqlite3.Xsqlite3_free(tls, pGroup)
 53988  	}
 53989  }
 53990  
 53991  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 53992  	var c int32
 53993  	var c2 int32
 53994  	var cx int32
 53995  	var invert int32
 53996  	var seen int32
 53997  
 53998  	for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 53999  		if c == '*' {
 54000  			for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 54001  				if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54002  					return 0
 54003  				}
 54004  			}
 54005  			if c == 0 {
 54006  				return 1
 54007  			} else if c == '[' {
 54008  				for *(*int8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 54009  					z++
 54010  				}
 54011  				return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
 54012  			}
 54013  			if c == '/' {
 54014  				cx = '\\'
 54015  			} else {
 54016  				cx = c
 54017  			}
 54018  			for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 54019  				for c2 != c && c2 != cx {
 54020  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54021  					if c2 == 0 {
 54022  						return 0
 54023  					}
 54024  				}
 54025  				if quotaStrglob(tls, zGlob, z) != 0 {
 54026  					return 1
 54027  				}
 54028  			}
 54029  			return 0
 54030  		} else if c == '?' {
 54031  			if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54032  				return 0
 54033  			}
 54034  		} else if c == '[' {
 54035  			var prior_c int32 = 0
 54036  			seen = 0
 54037  			invert = 0
 54038  			c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54039  			if c == 0 {
 54040  				return 0
 54041  			}
 54042  			c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54043  			if c2 == '^' {
 54044  				invert = 1
 54045  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54046  			}
 54047  			if c2 == ']' {
 54048  				if c == ']' {
 54049  					seen = 1
 54050  				}
 54051  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54052  			}
 54053  			for c2 != 0 && c2 != ']' {
 54054  				if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 54055  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54056  					if c >= prior_c && c <= c2 {
 54057  						seen = 1
 54058  					}
 54059  					prior_c = 0
 54060  				} else {
 54061  					if c == c2 {
 54062  						seen = 1
 54063  					}
 54064  					prior_c = c2
 54065  				}
 54066  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54067  			}
 54068  			if c2 == 0 || seen^invert == 0 {
 54069  				return 0
 54070  			}
 54071  		} else if c == '/' {
 54072  			if int32(*(*int8)(unsafe.Pointer(z))) != '/' && int32(*(*int8)(unsafe.Pointer(z))) != '\\' {
 54073  				return 0
 54074  			}
 54075  			z++
 54076  		} else {
 54077  			if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 54078  				return 0
 54079  			}
 54080  		}
 54081  	}
 54082  	return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
 54083  }
 54084  
 54085  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 54086  	var p uintptr
 54087  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 54088  	}
 54089  	return p
 54090  }
 54091  
 54092  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 54093  	var p uintptr = pConn
 54094  	return p + 1*16
 54095  }
 54096  
 54097  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 54098  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54099  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 54100  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54101  	}
 54102  	if pFile == uintptr(0) && createFlag != 0 {
 54103  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 54104  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 54105  		if pFile != 0 {
 54106  			libc.Xmemset(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})))
 54107  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 54108  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1))
 54109  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54110  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54111  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 54112  			}
 54113  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 54114  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 54115  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 54116  		}
 54117  	}
 54118  	return pFile
 54119  }
 54120  
 54121  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 54122  	return zUtf8
 54123  }
 54124  
 54125  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 54126  }
 54127  
 54128  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 54129  	var rc int32
 54130  	var pQuotaOpen uintptr
 54131  	var pFile uintptr
 54132  	var pGroup uintptr
 54133  	var pSubOpen uintptr
 54134  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54135  
 54136  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 54137  		return (*struct {
 54138  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54139  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54140  	}
 54141  
 54142  	quotaEnter(tls)
 54143  	pGroup = quotaGroupFind(tls, zName)
 54144  	if pGroup == uintptr(0) {
 54145  		rc = (*struct {
 54146  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54147  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54148  	} else {
 54149  		pQuotaOpen = pConn
 54150  		pSubOpen = quotaSubOpen(tls, pConn)
 54151  		rc = (*struct {
 54152  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54153  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 54154  		if rc == SQLITE_OK {
 54155  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 54156  			if pFile == uintptr(0) {
 54157  				quotaLeave(tls)
 54158  				(*struct {
 54159  					f func(*libc.TLS, uintptr) int32
 54160  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54161  				return SQLITE_NOMEM
 54162  			}
 54163  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 54164  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54165  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 54166  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 54167  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 54168  			} else {
 54169  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 54170  			}
 54171  		}
 54172  	}
 54173  	quotaLeave(tls)
 54174  	return rc
 54175  }
 54176  
 54177  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 54178  	var rc int32
 54179  	var pFile uintptr
 54180  	var pGroup uintptr
 54181  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54182  
 54183  	rc = (*struct {
 54184  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54185  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 54186  
 54187  	if rc == SQLITE_OK {
 54188  		quotaEnter(tls)
 54189  		pGroup = quotaGroupFind(tls, zName)
 54190  		if pGroup != 0 {
 54191  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 54192  			if pFile != 0 {
 54193  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54194  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54195  				} else {
 54196  					quotaRemoveFile(tls, pFile)
 54197  					quotaGroupDeref(tls, pGroup)
 54198  				}
 54199  			}
 54200  		}
 54201  		quotaLeave(tls)
 54202  	}
 54203  	return rc
 54204  }
 54205  
 54206  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 54207  	var p uintptr = pConn
 54208  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54209  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54210  	var rc int32
 54211  	rc = (*struct {
 54212  		f func(*libc.TLS, uintptr) int32
 54213  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54214  	quotaEnter(tls)
 54215  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54216  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54217  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54218  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54219  			(*struct {
 54220  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 54221  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54222  			quotaRemoveFile(tls, pFile)
 54223  		}
 54224  		quotaGroupDeref(tls, pGroup)
 54225  	}
 54226  	quotaLeave(tls)
 54227  	return rc
 54228  }
 54229  
 54230  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54231  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54232  	return (*struct {
 54233  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54234  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54235  }
 54236  
 54237  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54238  	var p uintptr = pConn
 54239  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54240  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 54241  	var pGroup uintptr
 54242  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54243  	var szNew sqlite3_int64
 54244  
 54245  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54246  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54247  		quotaEnter(tls)
 54248  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54249  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54250  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54251  				(*struct {
 54252  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54253  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54254  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54255  			}
 54256  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54257  				quotaLeave(tls)
 54258  				return SQLITE_FULL
 54259  			}
 54260  		}
 54261  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54262  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54263  		quotaLeave(tls)
 54264  	}
 54265  	return (*struct {
 54266  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54267  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54268  }
 54269  
 54270  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 54271  	var p uintptr = pConn
 54272  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54273  	var rc int32 = (*struct {
 54274  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54275  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 54276  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54277  	var pGroup uintptr
 54278  	if rc == SQLITE_OK {
 54279  		quotaEnter(tls)
 54280  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54281  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54282  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 54283  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 54284  		quotaLeave(tls)
 54285  	}
 54286  	return rc
 54287  }
 54288  
 54289  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 54290  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54291  	return (*struct {
 54292  		f func(*libc.TLS, uintptr, int32) int32
 54293  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 54294  }
 54295  
 54296  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 54297  	bp := tls.Alloc(8)
 54298  	defer tls.Free(8)
 54299  
 54300  	var p uintptr = pConn
 54301  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54302  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54303  	var pGroup uintptr
 54304  
 54305  	var rc int32
 54306  
 54307  	rc = (*struct {
 54308  		f func(*libc.TLS, uintptr, uintptr) int32
 54309  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 54310  	if rc == SQLITE_OK {
 54311  		quotaEnter(tls)
 54312  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54313  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54314  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54315  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 54316  		quotaLeave(tls)
 54317  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54318  	}
 54319  	return rc
 54320  }
 54321  
 54322  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54323  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54324  	return (*struct {
 54325  		f func(*libc.TLS, uintptr, int32) int32
 54326  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 54327  }
 54328  
 54329  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54330  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54331  	return (*struct {
 54332  		f func(*libc.TLS, uintptr, int32) int32
 54333  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 54334  }
 54335  
 54336  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 54337  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54338  	return (*struct {
 54339  		f func(*libc.TLS, uintptr, uintptr) int32
 54340  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 54341  }
 54342  
 54343  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 54344  	bp := tls.Alloc(8)
 54345  	defer tls.Free(8)
 54346  
 54347  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54348  	var rc int32 = (*struct {
 54349  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54350  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 54351  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 54352  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 54353  	}
 54354  	return rc
 54355  }
 54356  
 54357  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 54358  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54359  	return (*struct {
 54360  		f func(*libc.TLS, uintptr) int32
 54361  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 54362  }
 54363  
 54364  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 54365  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54366  	return (*struct {
 54367  		f func(*libc.TLS, uintptr) int32
 54368  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 54369  }
 54370  
 54371  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 54372  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54373  	return (*struct {
 54374  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54375  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 54376  }
 54377  
 54378  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 54379  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54380  	return (*struct {
 54381  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54382  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 54383  }
 54384  
 54385  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 54386  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54387  	(*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)
 54388  }
 54389  
 54390  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 54391  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54392  	return (*struct {
 54393  		f func(*libc.TLS, uintptr, int32) int32
 54394  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 54395  }
 54396  
 54397  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 54398  	var pOrigVfs uintptr
 54399  	if gQuota.FisInitialized != 0 {
 54400  		return SQLITE_MISUSE
 54401  	}
 54402  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 54403  	if pOrigVfs == uintptr(0) {
 54404  		return SQLITE_ERROR
 54405  	}
 54406  
 54407  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 54408  	if !(int32(gQuota.FpMutex) != 0) {
 54409  		return SQLITE_NOMEM
 54410  	}
 54411  	gQuota.FisInitialized = 1
 54412  	gQuota.FpOrigVfs = pOrigVfs
 54413  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 54414  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 54415  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54416  	}{quotaOpen}))
 54417  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 54418  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54419  	}{quotaDelete}))
 54420  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 54421  	gQuota.FsThisVfs.FzName = ts + 35922
 54422  	gQuota.FsIoMethodsV1.FiVersion = 1
 54423  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 54424  		f func(*libc.TLS, uintptr) int32
 54425  	}{quotaClose}))
 54426  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 54427  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54428  	}{quotaRead}))
 54429  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 54430  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54431  	}{quotaWrite}))
 54432  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 54433  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54434  	}{quotaTruncate}))
 54435  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 54436  		f func(*libc.TLS, uintptr, int32) int32
 54437  	}{quotaSync}))
 54438  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 54439  		f func(*libc.TLS, uintptr, uintptr) int32
 54440  	}{quotaFileSize}))
 54441  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 54442  		f func(*libc.TLS, uintptr, int32) int32
 54443  	}{quotaLock}))
 54444  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 54445  		f func(*libc.TLS, uintptr, int32) int32
 54446  	}{quotaUnlock}))
 54447  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 54448  		f func(*libc.TLS, uintptr, uintptr) int32
 54449  	}{quotaCheckReservedLock}))
 54450  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 54451  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54452  	}{quotaFileControl}))
 54453  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 54454  		f func(*libc.TLS, uintptr) int32
 54455  	}{quotaSectorSize}))
 54456  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 54457  		f func(*libc.TLS, uintptr) int32
 54458  	}{quotaDeviceCharacteristics}))
 54459  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 54460  	gQuota.FsIoMethodsV2.FiVersion = 2
 54461  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 54462  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54463  	}{quotaShmMap}))
 54464  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 54465  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54466  	}{quotaShmLock}))
 54467  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 54468  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 54469  		f func(*libc.TLS, uintptr, int32) int32
 54470  	}{quotaShmUnmap}))
 54471  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 54472  	return SQLITE_OK
 54473  }
 54474  
 54475  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 54476  	var pGroup uintptr
 54477  	if gQuota.FisInitialized == 0 {
 54478  		return SQLITE_MISUSE
 54479  	}
 54480  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 54481  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 54482  			return SQLITE_MISUSE
 54483  		}
 54484  	}
 54485  	for gQuota.FpGroup != 0 {
 54486  		pGroup = gQuota.FpGroup
 54487  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54488  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 54489  
 54490  		quotaGroupDeref(tls, pGroup)
 54491  	}
 54492  	gQuota.FisInitialized = 0
 54493  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 54494  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 54495  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)))
 54496  	return SQLITE_OK
 54497  }
 54498  
 54499  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 54500  	var pGroup uintptr
 54501  	quotaEnter(tls)
 54502  	pGroup = gQuota.FpGroup
 54503  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 54504  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54505  	}
 54506  	if pGroup == uintptr(0) {
 54507  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 54508  		if iLimit <= int64(0) {
 54509  			quotaLeave(tls)
 54510  			return SQLITE_OK
 54511  		}
 54512  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 54513  		if pGroup == uintptr(0) {
 54514  			quotaLeave(tls)
 54515  			return SQLITE_NOMEM
 54516  		}
 54517  		libc.Xmemset(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})))
 54518  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 54519  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1))
 54520  		if gQuota.FpGroup != 0 {
 54521  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 54522  		}
 54523  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 54524  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 54525  		gQuota.FpGroup = pGroup
 54526  	}
 54527  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 54528  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 54529  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 54530  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54531  	}
 54532  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 54533  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 54534  	quotaGroupDeref(tls, pGroup)
 54535  	quotaLeave(tls)
 54536  	return SQLITE_OK
 54537  }
 54538  
 54539  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 54540  	bp := tls.Alloc(16)
 54541  	defer tls.Free(16)
 54542  
 54543  	var zFull uintptr = uintptr(0)
 54544  	var fd uintptr
 54545  	var rc int32
 54546  	*(*int32)(unsafe.Pointer(bp)) = 0
 54547  
 54548  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 54549  
 54550  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 54551  	if fd == uintptr(0) {
 54552  		rc = SQLITE_NOMEM
 54553  	} else {
 54554  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 54555  		rc = (*struct {
 54556  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54557  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54558  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 54559  	}
 54560  
 54561  	if rc == SQLITE_OK {
 54562  		*(*int8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = int8(0)
 54563  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 54564  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 54565  		if rc == SQLITE_OK {
 54566  			(*struct {
 54567  				f func(*libc.TLS, uintptr, uintptr) int32
 54568  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 54569  			(*struct {
 54570  				f func(*libc.TLS, uintptr) int32
 54571  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 54572  		} else if rc == SQLITE_CANTOPEN {
 54573  			var pGroup uintptr
 54574  			var pFile uintptr
 54575  			quotaEnter(tls)
 54576  			pGroup = quotaGroupFind(tls, zFull)
 54577  			if pGroup != 0 {
 54578  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 54579  				if pFile != 0 {
 54580  					quotaRemoveFile(tls, pFile)
 54581  				}
 54582  			}
 54583  			quotaLeave(tls)
 54584  		}
 54585  	}
 54586  
 54587  	sqlite3.Xsqlite3_free(tls, fd)
 54588  	return rc
 54589  }
 54590  
 54591  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 54592  	var p uintptr
 54593  	var zFull uintptr
 54594  	var zFullTranslated uintptr
 54595  	var rc int32
 54596  	var pGroup uintptr
 54597  	var pFile uintptr
 54598  	p = uintptr(0)
 54599  	zFull = uintptr(0)
 54600  	zFullTranslated = uintptr(0)
 54601  
 54602  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54603  	if !(zFull == uintptr(0)) {
 54604  		goto __1
 54605  	}
 54606  	return uintptr(0)
 54607  __1:
 54608  	;
 54609  	rc = (*struct {
 54610  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54611  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54612  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54613  	if !(rc != 0) {
 54614  		goto __2
 54615  	}
 54616  	goto quota_fopen_error
 54617  __2:
 54618  	;
 54619  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 54620  	if !(p == uintptr(0)) {
 54621  		goto __3
 54622  	}
 54623  	goto quota_fopen_error
 54624  __3:
 54625  	;
 54626  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})))
 54627  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 54628  	if !(zFullTranslated == uintptr(0)) {
 54629  		goto __4
 54630  	}
 54631  	goto quota_fopen_error
 54632  __4:
 54633  	;
 54634  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 54635  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 54636  		goto __5
 54637  	}
 54638  	goto quota_fopen_error
 54639  __5:
 54640  	;
 54641  	quotaEnter(tls)
 54642  	pGroup = quotaGroupFind(tls, zFull)
 54643  	if !(pGroup != 0) {
 54644  		goto __6
 54645  	}
 54646  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 54647  	if !(pFile == uintptr(0)) {
 54648  		goto __7
 54649  	}
 54650  	quotaLeave(tls)
 54651  	goto quota_fopen_error
 54652  __7:
 54653  	;
 54654  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54655  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 54656  __6:
 54657  	;
 54658  	quotaLeave(tls)
 54659  	sqlite3.Xsqlite3_free(tls, zFull)
 54660  	return p
 54661  
 54662  quota_fopen_error:
 54663  	quota_mbcs_free(tls, zFullTranslated)
 54664  	sqlite3.Xsqlite3_free(tls, zFull)
 54665  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 54666  		goto __8
 54667  	}
 54668  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54669  __8:
 54670  	;
 54671  	sqlite3.Xsqlite3_free(tls, p)
 54672  	return uintptr(0)
 54673  }
 54674  
 54675  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54676  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54677  }
 54678  
 54679  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54680  	var iOfst sqlite3_int64
 54681  	var iEnd sqlite3_int64
 54682  	var szNew sqlite3_int64
 54683  	var pFile uintptr
 54684  	var rc size_t
 54685  
 54686  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54687  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54688  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54689  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54690  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54691  		quotaEnter(tls)
 54692  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54693  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54694  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54695  				(*struct {
 54696  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54697  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54698  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54699  			}
 54700  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54701  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54702  				nmemb = uint64(iEnd-iOfst) / size
 54703  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54704  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54705  			}
 54706  		}
 54707  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54708  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54709  		quotaLeave(tls)
 54710  	} else {
 54711  		pFile = uintptr(0)
 54712  	}
 54713  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54714  
 54715  	if rc < nmemb && pFile != 0 {
 54716  		var nWritten size_t = rc
 54717  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 54718  		if iNewEnd < iEnd {
 54719  			iNewEnd = iEnd
 54720  		}
 54721  		quotaEnter(tls)
 54722  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54723  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 54724  		quotaLeave(tls)
 54725  	}
 54726  	return rc
 54727  }
 54728  
 54729  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 54730  	var rc int32
 54731  	var pFile uintptr
 54732  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54733  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54734  	if pFile != 0 {
 54735  		quotaEnter(tls)
 54736  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54737  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54738  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54739  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54740  				(*struct {
 54741  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 54742  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54743  				quotaRemoveFile(tls, pFile)
 54744  			}
 54745  			quotaGroupDeref(tls, pGroup)
 54746  		}
 54747  		quotaLeave(tls)
 54748  	}
 54749  	sqlite3.Xsqlite3_free(tls, p)
 54750  	return rc
 54751  }
 54752  
 54753  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 54754  	var rc int32
 54755  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54756  	if rc == 0 && doFsync != 0 {
 54757  		rc = libc.Xfsync(tls, func() int32 {
 54758  			if !(libc.X__isthreaded != 0) {
 54759  				return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54760  			}
 54761  			return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54762  		}())
 54763  	}
 54764  	return libc.Bool32(rc != 0)
 54765  }
 54766  
 54767  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 54768  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 54769  }
 54770  
 54771  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 54772  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54773  }
 54774  
 54775  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 54776  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54777  }
 54778  
 54779  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 54780  	return func() int32 {
 54781  		if !(libc.X__isthreaded != 0) {
 54782  			return libc.Bool32(int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_flags)&0x0040 != 0)
 54783  		}
 54784  		return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54785  	}()
 54786  }
 54787  
 54788  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 54789  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54790  	var rc int32
 54791  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54792  		var pGroup uintptr
 54793  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54794  			return -1
 54795  		}
 54796  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54797  		quotaEnter(tls)
 54798  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54799  		quotaLeave(tls)
 54800  	}
 54801  	rc = libc.Xftruncate(tls, func() int32 {
 54802  		if !(libc.X__isthreaded != 0) {
 54803  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54804  		}
 54805  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54806  	}(), szNew)
 54807  	if pFile != 0 && rc == 0 {
 54808  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54809  		quotaEnter(tls)
 54810  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54811  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 54812  		quotaLeave(tls)
 54813  	}
 54814  	return rc
 54815  }
 54816  
 54817  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 54818  	bp := tls.Alloc(224)
 54819  	defer tls.Free(224)
 54820  
 54821  	var rc int32
 54822  
 54823  	rc = libc.Xfstat(tls, func() int32 {
 54824  		if !(libc.X__isthreaded != 0) {
 54825  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54826  		}
 54827  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54828  	}(), bp)
 54829  	if rc == 0 {
 54830  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 54831  	}
 54832  	return rc
 54833  }
 54834  
 54835  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54836  	bp := tls.Alloc(224)
 54837  	defer tls.Free(224)
 54838  
 54839  	var rc int32
 54840  
 54841  	rc = libc.Xfstat(tls, func() int32 {
 54842  		if !(libc.X__isthreaded != 0) {
 54843  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54844  		}
 54845  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54846  	}(), bp)
 54847  	if rc == 0 {
 54848  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 54849  	}
 54850  	return int64(-1)
 54851  }
 54852  
 54853  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54854  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 54855  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 54856  	}
 54857  	return int64(-1)
 54858  }
 54859  
 54860  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 54861  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 54862  	var pos1 int64
 54863  	var pos2 int64
 54864  	var rc int32
 54865  	pos1 = libc.Xftell(tls, f)
 54866  	if pos1 < int64(0) {
 54867  		return int64(-1)
 54868  	}
 54869  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 54870  	if rc != 0 {
 54871  		return int64(-1)
 54872  	}
 54873  	pos2 = libc.Xftell(tls, f)
 54874  	if pos2 < int64(0) {
 54875  		return int64(-1)
 54876  	}
 54877  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 54878  	if rc != 0 {
 54879  		return int64(-1)
 54880  	}
 54881  	return pos2 - pos1
 54882  }
 54883  
 54884  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 54885  	var zFull uintptr
 54886  	var nFull size_t
 54887  	var rc int32
 54888  	var pGroup uintptr
 54889  	var pFile uintptr
 54890  	var pNextFile uintptr
 54891  	var diff int32
 54892  	var c int8
 54893  
 54894  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54895  	if zFull == uintptr(0) {
 54896  		return SQLITE_NOMEM
 54897  	}
 54898  	rc = (*struct {
 54899  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54900  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54901  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54902  	if rc != 0 {
 54903  		sqlite3.Xsqlite3_free(tls, zFull)
 54904  		return rc
 54905  	}
 54906  
 54907  	nFull = libc.Xstrlen(tls, zFull)
 54908  	if nFull > uint64(0) && (int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 54909  		nFull--
 54910  		*(*int8)(unsafe.Pointer(zFull + uintptr(nFull))) = int8(0)
 54911  	}
 54912  
 54913  	quotaEnter(tls)
 54914  	pGroup = quotaGroupFind(tls, zFull)
 54915  	if pGroup != 0 {
 54916  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 54917  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54918  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 54919  			if diff == 0 && (int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 54920  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54921  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54922  				} else {
 54923  					rc = (*struct {
 54924  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 54925  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54926  					quotaRemoveFile(tls, pFile)
 54927  					quotaGroupDeref(tls, pGroup)
 54928  				}
 54929  			}
 54930  		}
 54931  	}
 54932  	quotaLeave(tls)
 54933  	sqlite3.Xsqlite3_free(tls, zFull)
 54934  	return rc
 54935  }
 54936  
 54937  type TclQuotaCallback1 = struct {
 54938  	Finterp  uintptr
 54939  	FpScript uintptr
 54940  }
 54941  
 54942  type TclQuotaCallback = TclQuotaCallback1
 54943  
 54944  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 54945  	bp := tls.Alloc(16)
 54946  	defer tls.Free(16)
 54947  
 54948  	var p uintptr
 54949  	var pEval uintptr
 54950  	var pVarname uintptr
 54951  
 54952  	var rc int32
 54953  
 54954  	p = pArg
 54955  	if p == uintptr(0) {
 54956  		return
 54957  	}
 54958  
 54959  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 54960  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 54961  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 54962  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 54963  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 54964  
 54965  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 54966  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 54967  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 54968  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 54969  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 54970  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 54971  
 54972  	if rc == TCL_OK {
 54973  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 54974  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 54975  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 54976  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 54977  	}
 54978  
 54979  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54980  		var _objPtr uintptr = pEval
 54981  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54982  			tcl.XTclFreeObj(tls, _objPtr)
 54983  		}
 54984  	}
 54985  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 54986  		var _objPtr uintptr = pVarname
 54987  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54988  			tcl.XTclFreeObj(tls, _objPtr)
 54989  		}
 54990  	}
 54991  	if rc != TCL_OK {
 54992  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 54993  	}
 54994  }
 54995  
 54996  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 54997  	var p uintptr = pObj
 54998  	if p != 0 {
 54999  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55000  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 55001  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55002  				tcl.XTclFreeObj(tls, _objPtr)
 55003  			}
 55004  		}
 55005  		sqlite3.Xsqlite3_free(tls, p)
 55006  	}
 55007  }
 55008  
 55009  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55010  	bp := tls.Alloc(4)
 55011  	defer tls.Free(4)
 55012  
 55013  	var zName uintptr
 55014  
 55015  	var rc int32
 55016  
 55017  	if objc != 3 {
 55018  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 55019  		return TCL_ERROR
 55020  	}
 55021  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55022  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55023  		return TCL_ERROR
 55024  	}
 55025  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 55026  		zName = uintptr(0)
 55027  	}
 55028  
 55029  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 55030  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55031  
 55032  	return TCL_OK
 55033  }
 55034  
 55035  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55036  	var rc int32
 55037  
 55038  	if objc != 1 {
 55039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 55040  		return TCL_ERROR
 55041  	}
 55042  
 55043  	rc = sqlite3_quota_shutdown(tls)
 55044  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55045  
 55046  	return TCL_OK
 55047  }
 55048  
 55049  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55050  	bp := tls.Alloc(12)
 55051  	defer tls.Free(12)
 55052  
 55053  	var zPattern uintptr
 55054  
 55055  	var pScript uintptr
 55056  	var rc int32
 55057  	var p uintptr
 55058  
 55059  	var xDestroy uintptr
 55060  	var xCallback uintptr
 55061  
 55062  	if objc != 4 {
 55063  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 55064  		return TCL_ERROR
 55065  	}
 55066  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55067  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55068  		return TCL_ERROR
 55069  	}
 55070  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 55071  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 55072  
 55073  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 55074  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 55075  		if !(p != 0) {
 55076  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 55077  			return TCL_OK
 55078  		}
 55079  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})))
 55080  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 55081  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 55082  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 55083  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 55084  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 55085  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55086  		}{tclQuotaCallback}))
 55087  	} else {
 55088  		p = uintptr(0)
 55089  		xDestroy = uintptr(0)
 55090  		xCallback = uintptr(0)
 55091  	}
 55092  
 55093  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 55094  
 55095  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55096  	return TCL_OK
 55097  }
 55098  
 55099  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55100  	var zFilename uintptr
 55101  	var rc int32
 55102  
 55103  	if objc != 2 {
 55104  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55105  		return TCL_ERROR
 55106  	}
 55107  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55108  
 55109  	rc = sqlite3_quota_file(tls, zFilename)
 55110  
 55111  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55112  	return TCL_OK
 55113  }
 55114  
 55115  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55116  	bp := tls.Alloc(1008)
 55117  	defer tls.Free(1008)
 55118  
 55119  	var pResult uintptr
 55120  	var pGroupTerm uintptr
 55121  	var pFileTerm uintptr
 55122  	var pGroup uintptr
 55123  	var pFile uintptr
 55124  
 55125  	pResult = tcl.XTcl_NewObj(tls)
 55126  	quotaEnter(tls)
 55127  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 55128  		pGroupTerm = tcl.XTcl_NewObj(tls)
 55129  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55130  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 55131  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55132  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 55133  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55134  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 55135  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 55136  			var i int32
 55137  
 55138  			pFileTerm = tcl.XTcl_NewObj(tls)
 55139  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 55140  			for i = 0; *(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 55141  				if int32(*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 55142  					*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8('/')
 55143  				}
 55144  			}
 55145  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55146  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 55147  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55148  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 55149  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55150  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 55151  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55152  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 55153  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 55154  		}
 55155  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 55156  	}
 55157  	quotaLeave(tls)
 55158  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 55159  	return TCL_OK
 55160  }
 55161  
 55162  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55163  	bp := tls.Alloc(58)
 55164  	defer tls.Free(58)
 55165  
 55166  	var zFilename uintptr
 55167  	var zMode uintptr
 55168  	var p uintptr
 55169  
 55170  	if objc != 3 {
 55171  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 55172  		return TCL_ERROR
 55173  	}
 55174  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55175  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 55176  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 55177  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+8, ts+9889, libc.VaList(bp, p))
 55178  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 55179  	return TCL_OK
 55180  }
 55181  
 55182  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55183  	bp := tls.Alloc(8)
 55184  	defer tls.Free(8)
 55185  
 55186  	var p uintptr
 55187  	var zBuf uintptr
 55188  
 55189  	var got size_t
 55190  
 55191  	if objc != 4 {
 55192  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 55193  		return TCL_ERROR
 55194  	}
 55195  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55196  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55197  		return TCL_ERROR
 55198  	}
 55199  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55200  		return TCL_ERROR
 55201  	}
 55202  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 55203  	if zBuf == uintptr(0) {
 55204  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 55205  		return TCL_ERROR
 55206  	}
 55207  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55208  	*(*int8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = int8(0)
 55209  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 55210  	sqlite3.Xsqlite3_free(tls, zBuf)
 55211  	return TCL_OK
 55212  }
 55213  
 55214  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55215  	bp := tls.Alloc(8)
 55216  	defer tls.Free(8)
 55217  
 55218  	var p uintptr
 55219  	var zBuf uintptr
 55220  
 55221  	var got size_t
 55222  
 55223  	if objc != 5 {
 55224  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 55225  		return TCL_ERROR
 55226  	}
 55227  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55228  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55229  		return TCL_ERROR
 55230  	}
 55231  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 55232  		return TCL_ERROR
 55233  	}
 55234  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 55235  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55236  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 55237  	return TCL_OK
 55238  }
 55239  
 55240  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55241  	var p uintptr
 55242  	var rc int32
 55243  
 55244  	if objc != 2 {
 55245  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55246  		return TCL_ERROR
 55247  	}
 55248  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55249  	rc = sqlite3_quota_fclose(tls, p)
 55250  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55251  	return TCL_OK
 55252  }
 55253  
 55254  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55255  	bp := tls.Alloc(4)
 55256  	defer tls.Free(4)
 55257  
 55258  	var p uintptr
 55259  	var rc int32
 55260  	*(*int32)(unsafe.Pointer(bp)) = 0
 55261  
 55262  	if objc != 2 && objc != 3 {
 55263  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 55264  		return TCL_ERROR
 55265  	}
 55266  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55267  	if objc == 3 {
 55268  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55269  			return TCL_ERROR
 55270  		}
 55271  	}
 55272  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 55273  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55274  	return TCL_OK
 55275  }
 55276  
 55277  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55278  	bp := tls.Alloc(20)
 55279  	defer tls.Free(20)
 55280  
 55281  	var p uintptr
 55282  
 55283  	var zWhence uintptr
 55284  	var whence int32
 55285  	var rc int32
 55286  
 55287  	if objc != 4 {
 55288  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 55289  		return TCL_ERROR
 55290  	}
 55291  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55292  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 55293  		return TCL_ERROR
 55294  	}
 55295  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 55296  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 55297  		whence = SEEK_SET
 55298  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 55299  		whence = SEEK_CUR
 55300  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 55301  		whence = SEEK_END
 55302  	} else {
 55303  		tcl.XTcl_AppendResult(tls, interp,
 55304  			libc.VaList(bp, ts+36084, uintptr(0)))
 55305  		return TCL_ERROR
 55306  	}
 55307  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 55308  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55309  	return TCL_OK
 55310  }
 55311  
 55312  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55313  	var p uintptr
 55314  	if objc != 2 {
 55315  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55316  		return TCL_ERROR
 55317  	}
 55318  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55319  	sqlite3_quota_rewind(tls, p)
 55320  	return TCL_OK
 55321  }
 55322  
 55323  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55324  	var p uintptr
 55325  	var x sqlite3_int64
 55326  	if objc != 2 {
 55327  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55328  		return TCL_ERROR
 55329  	}
 55330  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55331  	x = sqlite3_quota_ftell(tls, p)
 55332  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55333  	return TCL_OK
 55334  }
 55335  
 55336  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55337  	bp := tls.Alloc(8)
 55338  	defer tls.Free(8)
 55339  
 55340  	var p uintptr
 55341  	var x sqlite3_int64
 55342  
 55343  	var rc int32
 55344  	if objc != 3 {
 55345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 55346  		return TCL_ERROR
 55347  	}
 55348  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55349  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 55350  		return TCL_ERROR
 55351  	}
 55352  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 55353  	rc = sqlite3_quota_ftruncate(tls, p, x)
 55354  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55355  	return TCL_OK
 55356  }
 55357  
 55358  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55359  	var p uintptr
 55360  	var x sqlite3_int64
 55361  	if objc != 2 {
 55362  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55363  		return TCL_ERROR
 55364  	}
 55365  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55366  	x = sqlite3_quota_file_size(tls, p)
 55367  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55368  	return TCL_OK
 55369  }
 55370  
 55371  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55372  	var p uintptr
 55373  	var x sqlite3_int64
 55374  	if objc != 2 {
 55375  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55376  		return TCL_ERROR
 55377  	}
 55378  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55379  	x = sqlite3_quota_file_truesize(tls, p)
 55380  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55381  	return TCL_OK
 55382  }
 55383  
 55384  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55385  	bp := tls.Alloc(8)
 55386  	defer tls.Free(8)
 55387  
 55388  	var p uintptr
 55389  
 55390  	if objc != 2 {
 55391  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55392  		return TCL_ERROR
 55393  	}
 55394  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55395  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 55396  	sqlite3_quota_file_mtime(tls, p, bp)
 55397  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 55398  	return TCL_OK
 55399  }
 55400  
 55401  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55402  	var zFilename uintptr
 55403  	var rc int32
 55404  	if objc != 2 {
 55405  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55406  		return TCL_ERROR
 55407  	}
 55408  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55409  	rc = sqlite3_quota_remove(tls, zFilename)
 55410  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55411  	return TCL_OK
 55412  }
 55413  
 55414  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55415  	var zPattern uintptr
 55416  	var zText uintptr
 55417  	var rc int32
 55418  	if objc != 3 {
 55419  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 55420  		return TCL_ERROR
 55421  	}
 55422  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 55423  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 55424  	rc = quotaStrglob(tls, zPattern, zText)
 55425  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55426  	return TCL_OK
 55427  }
 55428  
 55429  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55430  	var p uintptr
 55431  	var x sqlite3_int64
 55432  	if objc != 2 {
 55433  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55434  		return TCL_ERROR
 55435  	}
 55436  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55437  	x = sqlite3_quota_file_available(tls, p)
 55438  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55439  	return TCL_OK
 55440  }
 55441  
 55442  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55443  	var p uintptr
 55444  	var x int32
 55445  	if objc != 2 {
 55446  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55447  		return TCL_ERROR
 55448  	}
 55449  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 55450  	x = sqlite3_quota_ferror(tls, p)
 55451  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 55452  	return TCL_OK
 55453  }
 55454  
 55455  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 55456  	var i int32
 55457  
 55458  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 55459  		FzName uintptr
 55460  		FxProc uintptr
 55461  	}{})); i++ {
 55462  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 55463  	}
 55464  
 55465  	return TCL_OK
 55466  }
 55467  
 55468  var aCmd9 = [21]struct {
 55469  	FzName uintptr
 55470  	FxProc uintptr
 55471  }{
 55472  	{FzName: ts + 36158, FxProc: 0},
 55473  	{FzName: ts + 36183, FxProc: 0},
 55474  	{FzName: ts + 36206, FxProc: 0},
 55475  	{FzName: ts + 36224, FxProc: 0},
 55476  	{FzName: ts + 36243, FxProc: 0},
 55477  	{FzName: ts + 36262, FxProc: 0},
 55478  	{FzName: ts + 36282, FxProc: 0},
 55479  	{FzName: ts + 36302, FxProc: 0},
 55480  	{FzName: ts + 36323, FxProc: 0},
 55481  	{FzName: ts + 36344, FxProc: 0},
 55482  	{FzName: ts + 36365, FxProc: 0},
 55483  	{FzName: ts + 36385, FxProc: 0},
 55484  	{FzName: ts + 36406, FxProc: 0},
 55485  	{FzName: ts + 36426, FxProc: 0},
 55486  	{FzName: ts + 36450, FxProc: 0},
 55487  	{FzName: ts + 36474, FxProc: 0},
 55488  	{FzName: ts + 36502, FxProc: 0},
 55489  	{FzName: ts + 36527, FxProc: 0},
 55490  	{FzName: ts + 36548, FxProc: 0},
 55491  	{FzName: ts + 36567, FxProc: 0},
 55492  	{FzName: ts + 36596, FxProc: 0},
 55493  }
 55494  
 55495  type Circle1 = struct {
 55496  	FaBox [2]struct {
 55497  		Fxmin float64
 55498  		Fxmax float64
 55499  		Fymin float64
 55500  		Fymax float64
 55501  	}
 55502  	Fcenterx     float64
 55503  	Fcentery     float64
 55504  	Fradius      float64
 55505  	FmxArea      float64
 55506  	FeScoreType  int32
 55507  	F__ccgo_pad1 [4]byte
 55508  }
 55509  
 55510  type Circle = Circle1
 55511  type Box = struct {
 55512  	Fxmin float64
 55513  	Fxmax float64
 55514  	Fymin float64
 55515  	Fymax float64
 55516  }
 55517  
 55518  func circle_del(tls *libc.TLS, p uintptr) {
 55519  	sqlite3.Xsqlite3_free(tls, p)
 55520  }
 55521  
 55522  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 55523  	var i int32
 55524  	var pCircle uintptr
 55525  	var xmin float64
 55526  	var xmax float64
 55527  	var ymin float64
 55528  	var ymax float64
 55529  
 55530  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 55531  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 55532  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 55533  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 55534  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55535  	if pCircle == uintptr(0) {
 55536  		if nCoord != 4 {
 55537  			return SQLITE_ERROR
 55538  		}
 55539  
 55540  		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 {
 55541  			return SQLITE_ERROR
 55542  		}
 55543  
 55544  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55545  		if !(pCircle != 0) {
 55546  			return SQLITE_NOMEM
 55547  		}
 55548  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55549  
 55550  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55551  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55552  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55553  
 55554  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55555  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55556  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55557  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55558  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55559  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55560  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55561  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55562  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 55563  	}
 55564  
 55565  	for i = 0; i < 4; i++ {
 55566  		var x float64
 55567  		if i&0x01 != 0 {
 55568  			x = xmax
 55569  		} else {
 55570  			x = xmin
 55571  		}
 55572  		var y float64
 55573  		if i&0x02 != 0 {
 55574  			y = ymax
 55575  		} else {
 55576  			y = ymin
 55577  		}
 55578  		var d2 float64
 55579  
 55580  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55581  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55582  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55583  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55584  			return SQLITE_OK
 55585  		}
 55586  	}
 55587  
 55588  	for i = 0; i < 2; i++ {
 55589  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55590  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55591  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55592  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55593  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55594  			return SQLITE_OK
 55595  		}
 55596  	}
 55597  
 55598  	*(*int32)(unsafe.Pointer(pRes)) = 0
 55599  	return SQLITE_OK
 55600  }
 55601  
 55602  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 55603  	var i int32
 55604  	var pCircle uintptr
 55605  	var xmin float64
 55606  	var xmax float64
 55607  	var ymin float64
 55608  	var ymax float64
 55609  	var nWithin int32 = 0
 55610  
 55611  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55612  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55613  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55614  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55615  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 55616  	if pCircle == uintptr(0) {
 55617  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 55618  			return SQLITE_ERROR
 55619  		}
 55620  
 55621  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 55622  			return SQLITE_ERROR
 55623  		}
 55624  
 55625  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55626  		if !(pCircle != 0) {
 55627  			return SQLITE_NOMEM
 55628  		}
 55629  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55630  
 55631  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 55632  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55633  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55634  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55635  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 55636  		} else {
 55637  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 55638  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 55639  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 55640  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 55641  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 55642  			for z != 0 && *(*int8)(unsafe.Pointer(z)) != 0 {
 55643  				if int32(*(*int8)(unsafe.Pointer(z))) == 'r' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55644  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 55645  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'x' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55646  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 55647  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'y' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55648  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 55649  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'e' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55650  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 55651  				} else if int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55652  					z++
 55653  					continue
 55654  				}
 55655  				for int32(*(*int8)(unsafe.Pointer(z))) != 0 && int32(*(*int8)(unsafe.Pointer(z))) != ' ' {
 55656  					z++
 55657  				}
 55658  				for int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55659  					z++
 55660  				}
 55661  			}
 55662  		}
 55663  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 55664  			sqlite3.Xsqlite3_free(tls, pCircle)
 55665  			return SQLITE_NOMEM
 55666  		}
 55667  
 55668  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55669  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55670  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55671  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55672  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55673  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55674  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55675  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55676  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 55677  	}
 55678  
 55679  	for i = 0; i < 4; i++ {
 55680  		var x float64
 55681  		if i&0x01 != 0 {
 55682  			x = xmax
 55683  		} else {
 55684  			x = xmin
 55685  		}
 55686  		var y float64
 55687  		if i&0x02 != 0 {
 55688  			y = ymax
 55689  		} else {
 55690  			y = ymin
 55691  		}
 55692  		var d2 float64
 55693  
 55694  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55695  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55696  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55697  			nWithin++
 55698  		}
 55699  	}
 55700  
 55701  	if nWithin == 0 {
 55702  		for i = 0; i < 2; i++ {
 55703  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55704  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55705  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55706  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55707  				nWithin = 1
 55708  				break
 55709  			}
 55710  		}
 55711  	}
 55712  
 55713  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 55714  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55715  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 55716  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55717  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 55718  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 55719  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 55720  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 55721  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 55722  			}
 55723  		} else {
 55724  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 55725  		}
 55726  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 55727  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55728  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55729  			nWithin = 0
 55730  		}
 55731  	} else {
 55732  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55733  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55734  			nWithin = 0
 55735  		}
 55736  	}
 55737  	if nWithin == 0 {
 55738  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55739  	} else if nWithin >= 4 {
 55740  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55741  	} else {
 55742  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55743  	}
 55744  	return SQLITE_OK
 55745  }
 55746  
 55747  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 55748  	var x0 float64
 55749  	var x1 float64
 55750  	var y0 float64
 55751  	var y1 float64
 55752  	var bx0 float64
 55753  	var bx1 float64
 55754  	var by0 float64
 55755  	var by1 float64
 55756  
 55757  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 55758  		return SQLITE_ERROR
 55759  	}
 55760  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55761  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55762  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55763  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55764  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55765  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55766  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55767  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 55768  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55769  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 55770  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55771  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 55772  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55773  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 55774  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55775  	} else {
 55776  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55777  	}
 55778  	return SQLITE_OK
 55779  }
 55780  
 55781  type Cube1 = struct {
 55782  	Fx      float64
 55783  	Fy      float64
 55784  	Fz      float64
 55785  	Fwidth  float64
 55786  	Fheight float64
 55787  	Fdepth  float64
 55788  }
 55789  
 55790  type Cube = Cube1
 55791  
 55792  func cube_context_free(tls *libc.TLS, p uintptr) {
 55793  	sqlite3.Xsqlite3_free(tls, p)
 55794  }
 55795  
 55796  var gHere int32 = 42
 55797  
 55798  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 55799  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55800  
 55801  	if pCube == uintptr(0) {
 55802  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 55803  			*(*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 {
 55804  			return SQLITE_ERROR
 55805  		}
 55806  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 55807  		if !(pCube != 0) {
 55808  			return SQLITE_NOMEM
 55809  		}
 55810  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55811  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55812  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55813  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 55814  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 55815  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 55816  
 55817  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 55818  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 55819  	}
 55820  
 55821  	*(*int32)(unsafe.Pointer(piRes)) = 0
 55822  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 55823  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 55824  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 55825  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 55826  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 55827  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 55828  		*(*int32)(unsafe.Pointer(piRes)) = 1
 55829  	}
 55830  
 55831  	return SQLITE_OK
 55832  }
 55833  
 55834  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55835  	bp := tls.Alloc(8)
 55836  	defer tls.Free(8)
 55837  
 55838  	var rc int32
 55839  
 55840  	if objc != 2 {
 55841  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55842  		return TCL_ERROR
 55843  	}
 55844  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55845  		return TCL_ERROR
 55846  	}
 55847  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 55848  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55849  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 55850  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55851  	return TCL_OK
 55852  }
 55853  
 55854  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55855  	bp := tls.Alloc(8)
 55856  	defer tls.Free(8)
 55857  
 55858  	var rc int32
 55859  
 55860  	if objc != 2 {
 55861  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55862  		return TCL_ERROR
 55863  	}
 55864  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55865  		return TCL_ERROR
 55866  	}
 55867  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 55868  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55869  	}{circle_geom})), uintptr(0))
 55870  	if rc == SQLITE_OK {
 55871  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 55872  			*(*uintptr)(unsafe.Pointer(&struct {
 55873  				f func(*libc.TLS, uintptr) int32
 55874  			}{circle_query_func})), uintptr(0), uintptr(0))
 55875  	}
 55876  	if rc == SQLITE_OK {
 55877  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 55878  			*(*uintptr)(unsafe.Pointer(&struct {
 55879  				f func(*libc.TLS, uintptr) int32
 55880  			}{bfs_query_func})), uintptr(0), uintptr(0))
 55881  	}
 55882  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55883  	return TCL_OK
 55884  }
 55885  
 55886  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 55887  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 55888  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55889  	}{register_cube_geom})), uintptr(0), uintptr(0))
 55890  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 55891  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55892  	}{register_circle_geom})), uintptr(0), uintptr(0))
 55893  	return TCL_OK
 55894  }
 55895  
 55896  type schema_vtab1 = struct {
 55897  	Fbase sqlite3_vtab
 55898  	Fdb   uintptr
 55899  }
 55900  
 55901  type schema_vtab = schema_vtab1
 55902  type schema_cursor1 = struct {
 55903  	Fbase        sqlite3_vtab_cursor
 55904  	FpDbList     uintptr
 55905  	FpTableList  uintptr
 55906  	FpColumnList uintptr
 55907  	Frowid       int32
 55908  	F__ccgo_pad1 [4]byte
 55909  }
 55910  
 55911  type schema_cursor = schema_cursor1
 55912  
 55913  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 55914  	sqlite3.Xsqlite3_free(tls, pVtab)
 55915  	return 0
 55916  }
 55917  
 55918  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 55919  	var rc int32 = SQLITE_NOMEM
 55920  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 55921  	if pVtab != 0 {
 55922  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})))
 55923  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 55924  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 55925  	}
 55926  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 55927  	return rc
 55928  }
 55929  
 55930  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 55931  	var rc int32 = SQLITE_NOMEM
 55932  	var pCur uintptr
 55933  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 55934  	if pCur != 0 {
 55935  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})))
 55936  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 55937  		rc = SQLITE_OK
 55938  	}
 55939  	return rc
 55940  }
 55941  
 55942  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 55943  	var pCur uintptr = cur
 55944  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 55945  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 55946  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 55947  	sqlite3.Xsqlite3_free(tls, pCur)
 55948  	return SQLITE_OK
 55949  }
 55950  
 55951  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 55952  	var pCur uintptr = cur
 55953  	switch i {
 55954  	case 0:
 55955  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 55956  		break
 55957  	case 1:
 55958  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 55959  		break
 55960  	default:
 55961  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 55962  		break
 55963  	}
 55964  	return SQLITE_OK
 55965  }
 55966  
 55967  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 55968  	var pCur uintptr = cur
 55969  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 55970  	return SQLITE_OK
 55971  }
 55972  
 55973  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 55974  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 55975  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 55976  	return rc
 55977  }
 55978  
 55979  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 55980  	var pCur uintptr = cur
 55981  	return func() int32 {
 55982  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 55983  			return 0
 55984  		}
 55985  		return 1
 55986  	}()
 55987  }
 55988  
 55989  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 55990  	bp := tls.Alloc(24)
 55991  	defer tls.Free(24)
 55992  
 55993  	var rc int32
 55994  	var pCur uintptr
 55995  	var pVtab uintptr
 55996  	var zSql uintptr
 55997  	var pDbList uintptr
 55998  	rc = SQLITE_OK
 55999  	pCur = cur
 56000  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 56001  	zSql = uintptr(0)
 56002  
 56003  __1:
 56004  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 56005  		goto __2
 56006  	}
 56007  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 56008  		goto __3
 56009  	}
 56010  	goto next_exit
 56011  __3:
 56012  	;
 56013  __4:
 56014  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 56015  		goto __5
 56016  	}
 56017  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 56018  		goto __6
 56019  	}
 56020  	goto next_exit
 56021  __6:
 56022  	;
 56023  __7:
 56024  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 56025  		goto __8
 56026  	}
 56027  	rc = finalize(tls, pCur+8)
 56028  	goto next_exit
 56029  	goto __7
 56030  __8:
 56031  	;
 56032  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 56033  		goto __9
 56034  	}
 56035  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56036  		ts+36768, 0)
 56037  	goto __10
 56038  __9:
 56039  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 56040  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56041  		ts+36823,
 56042  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 56043  __10:
 56044  	;
 56045  	if !!(zSql != 0) {
 56046  		goto __11
 56047  	}
 56048  	rc = SQLITE_NOMEM
 56049  	goto next_exit
 56050  __11:
 56051  	;
 56052  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 56053  	sqlite3.Xsqlite3_free(tls, zSql)
 56054  	if !(rc != SQLITE_OK) {
 56055  		goto __12
 56056  	}
 56057  	goto next_exit
 56058  __12:
 56059  	;
 56060  	goto __4
 56061  __5:
 56062  	;
 56063  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 56064  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 56065  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 56066  
 56067  	if !!(zSql != 0) {
 56068  		goto __13
 56069  	}
 56070  	rc = SQLITE_NOMEM
 56071  	goto next_exit
 56072  __13:
 56073  	;
 56074  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 56075  	sqlite3.Xsqlite3_free(tls, zSql)
 56076  	if !(rc != SQLITE_OK) {
 56077  		goto __14
 56078  	}
 56079  	goto next_exit
 56080  __14:
 56081  	;
 56082  	goto __1
 56083  __2:
 56084  	;
 56085  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 56086  
 56087  next_exit:
 56088  	return rc
 56089  }
 56090  
 56091  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56092  	var rc int32
 56093  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 56094  	var pCur uintptr = pVtabCursor
 56095  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 56096  	finalize(tls, pCur+16)
 56097  	finalize(tls, pCur+24)
 56098  	finalize(tls, pCur+8)
 56099  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+8, uintptr(0))
 56100  	return func() int32 {
 56101  		if rc == SQLITE_OK {
 56102  			return schemaNext(tls, pVtabCursor)
 56103  		}
 56104  		return rc
 56105  	}()
 56106  }
 56107  
 56108  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 56109  	return SQLITE_OK
 56110  }
 56111  
 56112  var schemaModule = sqlite3_module{
 56113  	FxCreate:     0,
 56114  	FxConnect:    0,
 56115  	FxBestIndex:  0,
 56116  	FxDisconnect: 0,
 56117  	FxDestroy:    0,
 56118  	FxOpen:       0,
 56119  	FxClose:      0,
 56120  	FxFilter:     0,
 56121  	FxNext:       0,
 56122  	FxEof:        0,
 56123  	FxColumn:     0,
 56124  	FxRowid:      0,
 56125  }
 56126  
 56127  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56128  	bp := tls.Alloc(8)
 56129  	defer tls.Free(8)
 56130  
 56131  	if objc != 2 {
 56132  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56133  		return TCL_ERROR
 56134  	}
 56135  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 56136  		return TCL_ERROR
 56137  	}
 56138  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 56139  	return TCL_OK
 56140  }
 56141  
 56142  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 56143  	var i int32
 56144  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 56145  		FzName      uintptr
 56146  		FxProc      uintptr
 56147  		FclientData uintptr
 56148  	}{})); i++ {
 56149  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 56150  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 56151  	}
 56152  	return TCL_OK
 56153  }
 56154  
 56155  var aObjCmd12 = [1]struct {
 56156  	FzName      uintptr
 56157  	FxProc      uintptr
 56158  	FclientData uintptr
 56159  }{
 56160  	{FzName: ts + 36922, FxProc: 0},
 56161  }
 56162  
 56163  type SqlMessage1 = struct {
 56164  	Fop           int32
 56165  	F__ccgo_pad1  [4]byte
 56166  	FpDb          uintptr
 56167  	FpStmt        uintptr
 56168  	FerrCode      int32
 56169  	F__ccgo_pad2  [4]byte
 56170  	FzIn          uintptr
 56171  	FnByte        int32
 56172  	F__ccgo_pad3  [4]byte
 56173  	FzOut         uintptr
 56174  	FpNext        uintptr
 56175  	FpPrev        uintptr
 56176  	FclientMutex  pthread_mutex_t
 56177  	FclientWakeup pthread_cond_t
 56178  }
 56179  
 56180  type SqlMessage = SqlMessage1
 56181  
 56182  type ServerState = struct {
 56183  	FqueueMutex   pthread_mutex_t
 56184  	FserverMutex  pthread_mutex_t
 56185  	FserverWakeup pthread_cond_t
 56186  	FserverHalt   int32
 56187  	F__ccgo_pad1  [4]byte
 56188  	FpQueueHead   uintptr
 56189  	FpQueueTail   uintptr
 56190  }
 56191  
 56192  var g4 = ServerState{}
 56193  
 56194  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 56195  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 56196  	libc.Xpthread_cond_init(tls, pMsg+80, uintptr(0))
 56197  
 56198  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56199  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 56200  	if g4.FpQueueHead == uintptr(0) {
 56201  		g4.FpQueueTail = pMsg
 56202  	} else {
 56203  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 56204  	}
 56205  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 56206  	g4.FpQueueHead = pMsg
 56207  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56208  
 56209  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 56210  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+16)
 56211  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 56212  		libc.Xpthread_cond_wait(tls, pMsg+80, pMsg+72)
 56213  	}
 56214  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 56215  
 56216  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 56217  	libc.Xpthread_cond_destroy(tls, pMsg+80)
 56218  }
 56219  
 56220  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 56221  	bp := tls.Alloc(88)
 56222  	defer tls.Free(88)
 56223  
 56224  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 56225  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 56226  	sendToServer(tls, bp)
 56227  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 56228  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56229  }
 56230  
 56231  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 56232  	bp := tls.Alloc(88)
 56233  	defer tls.Free(88)
 56234  
 56235  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 56236  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56237  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 56238  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 56239  	sendToServer(tls, bp)
 56240  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 56241  	if pzTail != 0 {
 56242  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 56243  	}
 56244  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56245  }
 56246  
 56247  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 56248  	bp := tls.Alloc(88)
 56249  	defer tls.Free(88)
 56250  
 56251  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 56252  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56253  	sendToServer(tls, bp)
 56254  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56255  }
 56256  
 56257  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 56258  	bp := tls.Alloc(88)
 56259  	defer tls.Free(88)
 56260  
 56261  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 56262  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56263  	sendToServer(tls, bp)
 56264  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56265  }
 56266  
 56267  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 56268  	bp := tls.Alloc(88)
 56269  	defer tls.Free(88)
 56270  
 56271  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 56272  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56273  	sendToServer(tls, bp)
 56274  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56275  }
 56276  
 56277  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 56278  	bp := tls.Alloc(88)
 56279  	defer tls.Free(88)
 56280  
 56281  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 56282  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56283  	sendToServer(tls, bp)
 56284  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56285  }
 56286  
 56287  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 56288  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+8) != 0 {
 56289  		return uintptr(0)
 56290  	}
 56291  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 56292  	for !(g4.FserverHalt != 0) {
 56293  		var pMsg uintptr
 56294  
 56295  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56296  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 56297  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+16, uintptr(unsafe.Pointer(&g4)))
 56298  		}
 56299  		pMsg = g4.FpQueueTail
 56300  		if pMsg != 0 {
 56301  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 56302  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 56303  			} else {
 56304  				g4.FpQueueHead = uintptr(0)
 56305  			}
 56306  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 56307  		}
 56308  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56309  		if pMsg == uintptr(0) {
 56310  			break
 56311  		}
 56312  
 56313  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 56314  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 56315  		case MSG_Open:
 56316  			{
 56317  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 56318  				break
 56319  
 56320  			}
 56321  		case MSG_Prepare:
 56322  			{
 56323  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 56324  					pMsg+16, pMsg+48)
 56325  				break
 56326  
 56327  			}
 56328  		case MSG_Step:
 56329  			{
 56330  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56331  				break
 56332  
 56333  			}
 56334  		case MSG_Reset:
 56335  			{
 56336  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56337  				break
 56338  
 56339  			}
 56340  		case MSG_Finalize:
 56341  			{
 56342  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56343  				break
 56344  
 56345  			}
 56346  		case MSG_Close:
 56347  			{
 56348  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 56349  				break
 56350  
 56351  			}
 56352  		}
 56353  
 56354  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 56355  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 56356  		libc.Xpthread_cond_signal(tls, pMsg+80)
 56357  	}
 56358  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 56359  	return uintptr(0)
 56360  }
 56361  
 56362  func sqlite3_server_start(tls *libc.TLS) {
 56363  	bp := tls.Alloc(8)
 56364  	defer tls.Free(8)
 56365  
 56366  	var rc int32
 56367  	g4.FserverHalt = 0
 56368  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56369  		f func(*libc.TLS, uintptr) uintptr
 56370  	}{sqlite3_server})), uintptr(0))
 56371  	if rc == 0 {
 56372  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56373  	}
 56374  }
 56375  
 56376  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 56377  	var p uintptr = sqlite3_server(tls, uintptr(0))
 56378  	*(*int32)(unsafe.Pointer(pnDecr))--
 56379  	return p
 56380  }
 56381  
 56382  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 56383  	bp := tls.Alloc(8)
 56384  	defer tls.Free(8)
 56385  
 56386  	var rc int32
 56387  	g4.FserverHalt = 0
 56388  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56389  		f func(*libc.TLS, uintptr) uintptr
 56390  	}{serverWrapper})), pnDecr)
 56391  	if rc == 0 {
 56392  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56393  	}
 56394  }
 56395  
 56396  func sqlite3_server_stop(tls *libc.TLS) {
 56397  	g4.FserverHalt = 1
 56398  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+16)
 56399  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+8)
 56400  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 56401  }
 56402  
 56403  type SuperlockBusy1 = struct {
 56404  	FxBusy       uintptr
 56405  	FpBusyArg    uintptr
 56406  	FnBusy       int32
 56407  	F__ccgo_pad1 [4]byte
 56408  }
 56409  
 56410  type SuperlockBusy = SuperlockBusy1
 56411  
 56412  type Superlock1 = struct {
 56413  	Fdb          uintptr
 56414  	FbWal        int32
 56415  	F__ccgo_pad1 [4]byte
 56416  }
 56417  
 56418  type Superlock = Superlock1
 56419  
 56420  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 56421  	var pBusy uintptr = pCtx
 56422  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 56423  		return 0
 56424  	}
 56425  	return (*struct {
 56426  		f func(*libc.TLS, uintptr, int32) int32
 56427  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 56428  }
 56429  
 56430  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 56431  	bp := tls.Alloc(8)
 56432  	defer tls.Free(8)
 56433  
 56434  	var rc int32
 56435  
 56436  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 56437  	if rc != SQLITE_OK {
 56438  		return rc
 56439  	}
 56440  
 56441  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 56442  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 56443  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 56444  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 56445  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 56446  		}
 56447  	}
 56448  
 56449  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 56450  }
 56451  
 56452  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 56453  	var rc int32
 56454  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 56455  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 56456  		rc = (*struct {
 56457  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56458  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 56459  	}
 56460  	return rc
 56461  }
 56462  
 56463  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 56464  	bp := tls.Alloc(16)
 56465  	defer tls.Free(16)
 56466  
 56467  	var rc int32
 56468  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56469  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 56470  
 56471  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56472  	if rc != SQLITE_OK {
 56473  		return rc
 56474  	}
 56475  
 56476  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 56477  	if rc != SQLITE_OK {
 56478  		return rc
 56479  	}
 56480  
 56481  	rc = (*struct {
 56482  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 56483  	})(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)
 56484  	if rc != SQLITE_OK {
 56485  		return rc
 56486  	}
 56487  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32))
 56488  
 56489  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 56490  	return rc
 56491  }
 56492  
 56493  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 56494  	bp := tls.Alloc(8)
 56495  	defer tls.Free(8)
 56496  
 56497  	var p uintptr = pLock
 56498  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 56499  		var rc int32
 56500  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 56501  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56502  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56503  		if rc == SQLITE_OK {
 56504  			(*struct {
 56505  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56506  			})(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)
 56507  			(*struct {
 56508  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56509  			})(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)
 56510  		}
 56511  	}
 56512  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 56513  	sqlite3.Xsqlite3_free(tls, p)
 56514  }
 56515  
 56516  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 56517  	bp := tls.Alloc(24)
 56518  	defer tls.Free(24)
 56519  
 56520  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 56521  	var rc int32
 56522  	var pLock uintptr
 56523  
 56524  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 56525  	if !(pLock != 0) {
 56526  		return SQLITE_NOMEM
 56527  	}
 56528  	libc.Xmemset(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})))
 56529  
 56530  	rc = sqlite3.Xsqlite3_open_v2(tls,
 56531  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 56532  
 56533  	if rc == SQLITE_OK {
 56534  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 56535  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 56536  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 56537  			f func(*libc.TLS, uintptr, int32) int32
 56538  		}{superlockBusyHandler})), bp)
 56539  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 56540  	}
 56541  
 56542  	if rc == SQLITE_OK {
 56543  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 56544  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 56545  			if rc == SQLITE_OK {
 56546  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 56547  			}
 56548  		}
 56549  	}
 56550  
 56551  	if rc != SQLITE_OK {
 56552  		sqlite3demo_superunlock(tls, pLock)
 56553  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 56554  	} else {
 56555  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 56556  	}
 56557  
 56558  	return rc
 56559  }
 56560  
 56561  type InterpAndScript1 = struct {
 56562  	Finterp  uintptr
 56563  	FpScript uintptr
 56564  }
 56565  
 56566  type InterpAndScript = InterpAndScript1
 56567  
 56568  func superunlock_del(tls *libc.TLS, cd ClientData) {
 56569  	sqlite3demo_superunlock(tls, cd)
 56570  }
 56571  
 56572  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56573  	if objc != 1 {
 56574  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 56575  		return TCL_ERROR
 56576  	}
 56577  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 56578  	return TCL_OK
 56579  }
 56580  
 56581  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 56582  	bp := tls.Alloc(4)
 56583  	defer tls.Free(4)
 56584  
 56585  	var p uintptr = pCtx
 56586  	var pEval uintptr
 56587  	*(*int32)(unsafe.Pointer(bp)) = 0
 56588  
 56589  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 56590  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 56591  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 56592  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 56593  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 56594  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56595  		var _objPtr uintptr = pEval
 56596  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56597  			tcl.XTclFreeObj(tls, _objPtr)
 56598  		}
 56599  	}
 56600  
 56601  	return *(*int32)(unsafe.Pointer(bp))
 56602  }
 56603  
 56604  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56605  	bp := tls.Alloc(40)
 56606  	defer tls.Free(40)
 56607  
 56608  	var zPath uintptr
 56609  	var zVfs uintptr = uintptr(0)
 56610  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 56611  	var xBusy uintptr = uintptr(0)
 56612  	var rc int32
 56613  
 56614  	if objc < 3 || objc > 5 {
 56615  		tcl.XTcl_WrongNumArgs(tls,
 56616  			interp, 1, objv, ts+36970)
 56617  		return TCL_ERROR
 56618  	}
 56619  
 56620  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56621  
 56622  	if objc > 3 {
 56623  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56624  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 56625  			zVfs = uintptr(0)
 56626  		}
 56627  	}
 56628  	if objc > 4 {
 56629  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 56630  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 56631  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 56632  			f func(*libc.TLS, uintptr, int32) int32
 56633  		}{superlock_busy}))
 56634  	}
 56635  
 56636  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 56637  
 56638  	if rc != SQLITE_OK {
 56639  		tcl.XTcl_ResetResult(tls, interp)
 56640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 56641  		return TCL_ERROR
 56642  	}
 56643  
 56644  	tcl.XTcl_CreateObjCommand(tls,
 56645  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 56646  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56647  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 56648  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 56649  	return TCL_OK
 56650  }
 56651  
 56652  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 56653  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 56654  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56655  	}{superlock_cmd})), uintptr(0), uintptr(0))
 56656  	return TCL_OK
 56657  }
 56658  
 56659  type shm_largepage_conf = struct {
 56660  	Fpsind        int32
 56661  	Falloc_policy int32
 56662  	Fpad          [10]int32
 56663  }
 56664  
 56665  type TestSyscallGlobal = struct {
 56666  	FbPersist         int32
 56667  	FnCount           int32
 56668  	FnFail            int32
 56669  	Fpgsz             int32
 56670  	Forig_getpagesize sqlite3_syscall_ptr
 56671  }
 56672  
 56673  var gSyscall = TestSyscallGlobal{}
 56674  
 56675  type TestSyscallArray = struct {
 56676  	FzName         uintptr
 56677  	FxTest         sqlite3_syscall_ptr
 56678  	FxOrig         sqlite3_syscall_ptr
 56679  	Fdefault_errno int32
 56680  	Fcustom_errno  int32
 56681  }
 56682  
 56683  var aSyscall = [19]TestSyscallArray{
 56684  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 56685  	{FzName: ts + 9490, FxTest: 0},
 56686  	{FzName: ts + 37038, FxTest: 0},
 56687  	{FzName: ts + 37045, FxTest: 0},
 56688  	{FzName: ts + 37052, FxTest: 0},
 56689  	{FzName: ts + 37057, FxTest: 0},
 56690  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 56691  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 56692  	{FzName: ts + 25126, FxTest: 0},
 56693  	{FzName: ts + 37079, FxTest: 0},
 56694  	{FzName: ts + 37085, FxTest: 0},
 56695  	{FzName: ts + 25131, FxTest: 0},
 56696  	{FzName: ts + 37093, FxTest: 0},
 56697  	{FzName: ts + 37100, FxTest: 0},
 56698  	{FzName: ts + 37109, FxTest: 0},
 56699  	{FzName: ts + 37116, FxTest: 0},
 56700  	{FzName: ts + 29040, FxTest: 0},
 56701  	{FzName: ts + 37126, FxTest: 0},
 56702  	{},
 56703  }
 56704  
 56705  func tsIsFail(tls *libc.TLS) int32 {
 56706  	gSyscall.FnCount--
 56707  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 56708  		gSyscall.FnFail++
 56709  		return 1
 56710  	}
 56711  	return 0
 56712  }
 56713  
 56714  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56715  	var i int32
 56716  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 56717  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56718  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 56719  			continue
 56720  		}
 56721  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 56722  			continue
 56723  		}
 56724  		return aSyscall[i].Fcustom_errno
 56725  	}
 56726  
 56727  	return 0
 56728  }
 56729  
 56730  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56731  	if tsIsFail(tls) != 0 {
 56732  		*(*int32)(unsafe.Pointer(libc.X__error(tls))) = tsErrno(tls, zFunc)
 56733  		return 1
 56734  	}
 56735  	return 0
 56736  }
 56737  
 56738  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 56739  	if tsIsFailErrno(tls, ts+37033) != 0 {
 56740  		return -1
 56741  	}
 56742  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 56743  }
 56744  
 56745  func ts_close(tls *libc.TLS, fd int32) int32 {
 56746  	if tsIsFail(tls) != 0 {
 56747  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56748  		return -1
 56749  	}
 56750  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56751  }
 56752  
 56753  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 56754  	if tsIsFail(tls) != 0 {
 56755  		return -1
 56756  	}
 56757  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 56758  }
 56759  
 56760  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 56761  	if tsIsFail(tls) != 0 {
 56762  		return uintptr(0)
 56763  	}
 56764  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 56765  }
 56766  
 56767  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 56768  	if tsIsFail(tls) != 0 {
 56769  		return -1
 56770  	}
 56771  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 56772  }
 56773  
 56774  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 56775  	if tsIsFailErrno(tls, ts+37057) != 0 {
 56776  		return -1
 56777  	}
 56778  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 56779  }
 56780  
 56781  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 56782  	if tsIsFailErrno(tls, ts+37063) != 0 {
 56783  		return -1
 56784  	}
 56785  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 56786  }
 56787  
 56788  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 56789  	bp := tls.Alloc(8)
 56790  	defer tls.Free(8)
 56791  
 56792  	var ap va_list
 56793  	_ = ap
 56794  	var pArg uintptr
 56795  	if tsIsFailErrno(tls, ts+37073) != 0 {
 56796  		return -1
 56797  	}
 56798  	ap = va
 56799  	pArg = libc.VaUintptr(&ap)
 56800  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 56801  }
 56802  
 56803  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56804  	if tsIsFailErrno(tls, ts+25126) != 0 {
 56805  		return -1
 56806  	}
 56807  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 56808  }
 56809  
 56810  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56811  	if tsIsFailErrno(tls, ts+37079) != 0 {
 56812  		return -1
 56813  	}
 56814  	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))
 56815  }
 56816  
 56817  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56818  	if tsIsFailErrno(tls, ts+37085) != 0 {
 56819  		return -1
 56820  	}
 56821  	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))
 56822  }
 56823  
 56824  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56825  	if tsIsFailErrno(tls, ts+25131) != 0 {
 56826  		if tsErrno(tls, ts+25131) == EINTR {
 56827  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 56828  		}
 56829  		return -1
 56830  	}
 56831  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 56832  }
 56833  
 56834  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56835  	if tsIsFailErrno(tls, ts+37093) != 0 {
 56836  		return -1
 56837  	}
 56838  	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))
 56839  }
 56840  
 56841  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56842  	if tsIsFailErrno(tls, ts+37100) != 0 {
 56843  		return -1
 56844  	}
 56845  	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))
 56846  }
 56847  
 56848  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 56849  	if tsIsFail(tls) != 0 {
 56850  		return -1
 56851  	}
 56852  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 56853  }
 56854  
 56855  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 56856  	if tsIsFail(tls) != 0 {
 56857  		return tsErrno(tls, ts+37116)
 56858  	}
 56859  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 56860  }
 56861  
 56862  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 56863  	if tsIsFailErrno(tls, ts+29040) != 0 {
 56864  		return libc.UintptrFromInt32(-1)
 56865  	}
 56866  	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)
 56867  }
 56868  
 56869  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 56870  	bp := tls.Alloc(8)
 56871  	defer tls.Free(8)
 56872  
 56873  	var ap va_list
 56874  	_ = ap
 56875  	var pArg uintptr
 56876  	if tsIsFailErrno(tls, ts+37126) != 0 {
 56877  		return libc.UintptrFromInt32(-1)
 56878  	}
 56879  	ap = va
 56880  	pArg = libc.VaUintptr(&ap)
 56881  	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))
 56882  }
 56883  
 56884  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56885  	bp := tls.Alloc(20)
 56886  	defer tls.Free(20)
 56887  
 56888  	var pVfs uintptr
 56889  
 56890  	var i int32
 56891  
 56892  	if objc != 3 {
 56893  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 56894  		return TCL_ERROR
 56895  	}
 56896  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 56897  		return TCL_ERROR
 56898  	}
 56899  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56900  
 56901  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 56902  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56903  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+16)
 56904  		if rc != 0 {
 56905  			return rc
 56906  		}
 56907  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 56908  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 56909  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56910  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 56911  			(*struct {
 56912  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56913  			})(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)
 56914  		}
 56915  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 56916  	}
 56917  
 56918  	return TCL_OK
 56919  }
 56920  
 56921  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56922  	var pVfs uintptr
 56923  	var i int32
 56924  
 56925  	if objc != 2 {
 56926  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56927  		return TCL_ERROR
 56928  	}
 56929  
 56930  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56931  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56932  		if aSyscall[i].FxOrig != 0 {
 56933  			(*struct {
 56934  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56935  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 56936  			aSyscall[i].FxOrig = uintptr(0)
 56937  		}
 56938  	}
 56939  	return TCL_OK
 56940  }
 56941  
 56942  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56943  	bp := tls.Alloc(4)
 56944  	defer tls.Free(4)
 56945  
 56946  	var pVfs uintptr
 56947  	var i int32
 56948  	var rc int32
 56949  
 56950  	if objc != 2 && objc != 3 {
 56951  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56952  		return TCL_ERROR
 56953  	}
 56954  
 56955  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56956  	if objc == 2 {
 56957  		rc = (*struct {
 56958  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56959  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 56960  		for i = 0; aSyscall[i].FzName != 0; i++ {
 56961  			aSyscall[i].FxOrig = uintptr(0)
 56962  		}
 56963  	} else {
 56964  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 56965  		rc = (*struct {
 56966  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56967  		})(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))
 56968  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 56969  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 56970  				continue
 56971  			}
 56972  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 56973  				continue
 56974  			}
 56975  			aSyscall[i].FxOrig = uintptr(0)
 56976  		}
 56977  	}
 56978  	if rc != SQLITE_OK {
 56979  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 56980  		return TCL_ERROR
 56981  	}
 56982  
 56983  	tcl.XTcl_ResetResult(tls, interp)
 56984  	return TCL_OK
 56985  }
 56986  
 56987  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56988  	var pVfs uintptr
 56989  	var x sqlite3_syscall_ptr
 56990  
 56991  	if objc != 3 {
 56992  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56993  		return TCL_ERROR
 56994  	}
 56995  
 56996  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56997  	x = (*struct {
 56998  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56999  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 57000  
 57001  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 57002  	return TCL_OK
 57003  }
 57004  
 57005  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57006  	bp := tls.Alloc(8)
 57007  	defer tls.Free(8)
 57008  
 57009  	*(*int32)(unsafe.Pointer(bp)) = 0
 57010  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 57011  
 57012  	if objc != 2 && objc != 4 {
 57013  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 57014  		return TCL_ERROR
 57015  	}
 57016  
 57017  	if objc == 4 {
 57018  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 57019  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 57020  			return TCL_ERROR
 57021  		}
 57022  	}
 57023  
 57024  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 57025  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 57026  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 57027  	gSyscall.FnFail = 0
 57028  	return TCL_OK
 57029  }
 57030  
 57031  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57032  	bp := tls.Alloc(204)
 57033  	defer tls.Free(204)
 57034  
 57035  	var rc int32
 57036  
 57037  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 57038  		{Fz: ts + 37174, Fi: EACCES},
 57039  		{Fz: ts + 37181, Fi: EINTR},
 57040  		{Fz: ts + 37187, Fi: EIO},
 57041  		{Fz: ts + 37191, Fi: EOVERFLOW},
 57042  		{Fz: ts + 37201, Fi: ENOMEM},
 57043  		{Fz: ts + 37208, Fi: EAGAIN},
 57044  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 57045  		{Fz: ts + 37225, Fi: EBUSY},
 57046  		{Fz: ts + 37231, Fi: EPERM},
 57047  		{Fz: ts + 37237, Fi: EDEADLK},
 57048  		{Fz: ts + 37245, Fi: ENOLCK},
 57049  		{},
 57050  	}
 57051  
 57052  	if objc != 4 {
 57053  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 57054  		return TCL_ERROR
 57055  	}
 57056  
 57057  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57058  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 57059  	if rc != TCL_OK {
 57060  		return rc
 57061  	}
 57062  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57063  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+200)
 57064  	if rc != TCL_OK {
 57065  		return rc
 57066  	}
 57067  
 57068  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 57069  	return TCL_OK
 57070  }
 57071  
 57072  type Errno = struct {
 57073  	Fz           uintptr
 57074  	Fi           int32
 57075  	F__ccgo_pad1 [4]byte
 57076  }
 57077  
 57078  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57079  	var zSys uintptr
 57080  	var pVfs uintptr
 57081  	var pList uintptr
 57082  
 57083  	if objc != 2 {
 57084  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57085  		return TCL_ERROR
 57086  	}
 57087  
 57088  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57089  	pList = tcl.XTcl_NewObj(tls)
 57090  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57091  	for zSys = (*struct {
 57092  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57093  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 57094  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57095  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 57096  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 57097  	}
 57098  
 57099  	tcl.XTcl_SetObjResult(tls, interp, pList)
 57100  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57101  		var _objPtr uintptr = pList
 57102  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57103  			tcl.XTclFreeObj(tls, _objPtr)
 57104  		}
 57105  	}
 57106  	return TCL_OK
 57107  }
 57108  
 57109  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57110  	var pVfs uintptr
 57111  
 57112  	if objc != 2 {
 57113  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57114  		return TCL_ERROR
 57115  	}
 57116  
 57117  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57118  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 57119  	return TCL_OK
 57120  }
 57121  
 57122  func ts_getpagesize(tls *libc.TLS) int32 {
 57123  	return gSyscall.Fpgsz
 57124  }
 57125  
 57126  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57127  	bp := tls.Alloc(20)
 57128  	defer tls.Free(20)
 57129  
 57130  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57131  
 57132  	if objc != 3 {
 57133  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 57134  		return TCL_ERROR
 57135  	}
 57136  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 57137  		return TCL_ERROR
 57138  	}
 57139  
 57140  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 57141  		if gSyscall.Forig_getpagesize != 0 {
 57142  			(*struct {
 57143  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57144  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 57145  		}
 57146  	} else {
 57147  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 57148  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 57149  			return TCL_ERROR
 57150  		}
 57151  		gSyscall.Forig_getpagesize = (*struct {
 57152  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57153  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 57154  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 57155  		(*struct {
 57156  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57157  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 57158  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 57159  	}
 57160  
 57161  	return TCL_OK
 57162  }
 57163  
 57164  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57165  	bp := tls.Alloc(180)
 57166  	defer tls.Free(180)
 57167  
 57168  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 57169  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57170  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57171  		}{test_syscall_fault}))},
 57172  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57173  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57174  		}{test_syscall_install}))},
 57175  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57176  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57177  		}{test_syscall_uninstall}))},
 57178  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57179  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57180  		}{test_syscall_reset}))},
 57181  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57182  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57183  		}{test_syscall_errno}))},
 57184  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57185  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57186  		}{test_syscall_exists}))},
 57187  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57188  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57189  		}{test_syscall_list}))},
 57190  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57191  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57192  		}{test_syscall_defaultvfs}))},
 57193  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57194  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57195  		}{test_syscall_pagesize}))},
 57196  		{},
 57197  	}
 57198  
 57199  	var rc int32
 57200  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57201  
 57202  	if objc < 2 {
 57203  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 57204  		return TCL_ERROR
 57205  	}
 57206  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 57207  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 57208  		rc = TCL_ERROR
 57209  	} else {
 57210  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57211  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 57212  	}
 57213  	if rc != TCL_OK {
 57214  		return rc
 57215  	}
 57216  	return (*struct {
 57217  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57218  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 57219  }
 57220  
 57221  type SyscallCmd = struct {
 57222  	FzName uintptr
 57223  	FxCmd  uintptr
 57224  }
 57225  
 57226  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 57227  	bp := tls.Alloc(16)
 57228  	defer tls.Free(16)
 57229  
 57230  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 57231  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57232  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57233  		}{test_syscall}))},
 57234  	}
 57235  	var i int32
 57236  
 57237  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 57238  		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))
 57239  	}
 57240  	return TCL_OK
 57241  }
 57242  
 57243  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 57244  	bp := tls.Alloc(80)
 57245  	defer tls.Free(80)
 57246  
 57247  	{
 57248  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 57249  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 57250  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 57251  
 57252  	}
 57253  
 57254  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 57255  		Sqlite3_Init(tls, interp)
 57256  	}
 57257  	Md5_Init(tls, interp)
 57258  	Sqliteconfig_Init(tls, interp)
 57259  	Sqlitetest1_Init(tls, interp)
 57260  	Sqlitetest2_Init(tls, interp)
 57261  	Sqlitetest3_Init(tls, interp)
 57262  	Sqlitetest4_Init(tls, interp)
 57263  	Sqlitetest5_Init(tls, interp)
 57264  	Sqlitetest6_Init(tls, interp)
 57265  	Sqlitetest7_Init(tls, interp)
 57266  	Sqlitetest8_Init(tls, interp)
 57267  	Sqlitetest9_Init(tls, interp)
 57268  	Sqlitetestasync_Init(tls, interp)
 57269  	Sqlitetest_autoext_Init(tls, interp)
 57270  	Sqlitetest_blob_Init(tls, interp)
 57271  	Sqlitetest_demovfs_Init(tls, interp)
 57272  	Sqlitetest_func_Init(tls, interp)
 57273  	Sqlitetest_hexio_Init(tls, interp)
 57274  	Sqlitetest_init_Init(tls, interp)
 57275  	Sqlitetest_malloc_Init(tls, interp)
 57276  	Sqlitetest_mutex_Init(tls, interp)
 57277  	Sqlitetestschema_Init(tls, interp)
 57278  	Sqlitetesttclvar_Init(tls, interp)
 57279  	Sqlitetestfs_Init(tls, interp)
 57280  	SqlitetestThread_Init(tls, interp)
 57281  	SqlitetestOnefile_Init(tls)
 57282  	SqlitetestOsinst_Init(tls, interp)
 57283  	Sqlitetestbackup_Init(tls, interp)
 57284  	Sqlitetestintarray_Init(tls, interp)
 57285  	Sqlitetestvfs_Init(tls, interp)
 57286  	Sqlitetestrtree_Init(tls, interp)
 57287  	Sqlitetestrtreedoc_Init(tls, interp)
 57288  	Sqlitequota_Init(tls, interp)
 57289  	Sqlitemultiplex_Init(tls, interp)
 57290  	SqliteSuperlock_Init(tls, interp)
 57291  	SqlitetestSyscall_Init(tls, interp)
 57292  	TestSession_Init(tls, interp)
 57293  	Fts5tcl_Init(tls, interp)
 57294  	SqliteRbu_Init(tls, interp)
 57295  	Sqlitetesttcl_Init(tls, interp)
 57296  
 57297  	TestExpert_Init(tls, interp)
 57298  	Sqlitetest_window_Init(tls, interp)
 57299  	Sqlitetestvdbecov_Init(tls, interp)
 57300  
 57301  	tcl.XTcl_CreateObjCommand(tls,
 57302  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 57303  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57304  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 57305  	return uintptr(0)
 57306  }
 57307  
 57308  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57309  	var slave uintptr
 57310  	if objc != 2 {
 57311  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 57312  		return TCL_ERROR
 57313  	}
 57314  
 57315  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 57316  	if !(slave != 0) {
 57317  		return TCL_ERROR
 57318  	}
 57319  
 57320  	sqlite3TestInit(tls, slave)
 57321  	return TCL_OK
 57322  }
 57323  
 57324  type tclvar_vtab1 = struct {
 57325  	Fbase   sqlite3_vtab
 57326  	Finterp uintptr
 57327  }
 57328  
 57329  type tclvar_vtab = tclvar_vtab1
 57330  type tclvar_cursor1 = struct {
 57331  	Fbase   sqlite3_vtab_cursor
 57332  	FpList1 uintptr
 57333  	FpList2 uintptr
 57334  	Fi1     int32
 57335  	Fi2     int32
 57336  }
 57337  
 57338  type tclvar_cursor = tclvar_cursor1
 57339  
 57340  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 57341  	var pVtab uintptr
 57342  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 57343  	if pVtab == uintptr(0) {
 57344  		return SQLITE_NOMEM
 57345  	}
 57346  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 57347  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 57348  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 57349  	return SQLITE_OK
 57350  }
 57351  
 57352  var zSchema = *(*[100]int8)(unsafe.Pointer(ts + 37439))
 57353  
 57354  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 57355  	sqlite3.Xsqlite3_free(tls, pVtab)
 57356  	return SQLITE_OK
 57357  }
 57358  
 57359  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 57360  	var pCur uintptr
 57361  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 57362  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 57363  	return SQLITE_OK
 57364  }
 57365  
 57366  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 57367  	var pCur uintptr = cur
 57368  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57369  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57370  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57371  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57372  				tcl.XTclFreeObj(tls, _objPtr)
 57373  			}
 57374  		}
 57375  	}
 57376  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57377  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57378  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57379  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57380  				tcl.XTclFreeObj(tls, _objPtr)
 57381  			}
 57382  		}
 57383  	}
 57384  	sqlite3.Xsqlite3_free(tls, pCur)
 57385  	return SQLITE_OK
 57386  }
 57387  
 57388  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 57389  	bp := tls.Alloc(4)
 57390  	defer tls.Free(4)
 57391  
 57392  	var p uintptr
 57393  
 57394  	if pObj != 0 {
 57395  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 57396  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 57397  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57398  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 57399  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57400  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57401  				var _objPtr uintptr = p
 57402  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57403  					tcl.XTclFreeObj(tls, _objPtr)
 57404  				}
 57405  			}
 57406  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 57407  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 57408  
 57409  		} else {
 57410  			*(*int32)(unsafe.Pointer(bp)) = 0
 57411  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 57412  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 57413  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 57414  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57415  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57416  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57417  						tcl.XTclFreeObj(tls, _objPtr)
 57418  					}
 57419  				}
 57420  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57421  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57422  				return 0
 57423  			}
 57424  		}
 57425  	}
 57426  
 57427  	return 1
 57428  }
 57429  
 57430  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 57431  	bp := tls.Alloc(16)
 57432  	defer tls.Free(16)
 57433  
 57434  	*(*int32)(unsafe.Pointer(bp)) = 0
 57435  	var ok int32 = 0
 57436  
 57437  	var pCur uintptr = cur
 57438  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57439  
 57440  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 57441  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 57442  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 57443  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 57444  		if !(ok != 0) {
 57445  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 57446  		}
 57447  	}
 57448  
 57449  	return 0
 57450  }
 57451  
 57452  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 57453  	var pCur uintptr = pVtabCursor
 57454  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 57455  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 57456  
 57457  	var zEq uintptr = ts + 584
 57458  	var zMatch uintptr = ts + 584
 57459  	var zGlob uintptr = ts + 584
 57460  	var zRegexp uintptr = ts + 584
 57461  	var zLike uintptr = ts + 584
 57462  	var i int32
 57463  
 57464  	for i = 0; *(*int8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 57465  		switch int32(*(*int8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 57466  		case 'e':
 57467  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57468  			break
 57469  		case 'm':
 57470  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57471  			break
 57472  		case 'g':
 57473  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57474  			break
 57475  		case 'r':
 57476  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57477  			break
 57478  		case 'l':
 57479  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 57480  			break
 57481  		default:
 57482  		}
 57483  	}
 57484  
 57485  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57486  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 57487  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 57488  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 57489  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 57490  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 57491  
 57492  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57493  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57494  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57495  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57496  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57497  				tcl.XTclFreeObj(tls, _objPtr)
 57498  			}
 57499  		}
 57500  	}
 57501  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57502  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57503  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57504  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57505  				tcl.XTclFreeObj(tls, _objPtr)
 57506  			}
 57507  		}
 57508  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57509  	}
 57510  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 57511  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57512  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 57513  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 57514  
 57515  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57516  		var _objPtr uintptr = p
 57517  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57518  			tcl.XTclFreeObj(tls, _objPtr)
 57519  		}
 57520  	}
 57521  	return tclvarNext(tls, pVtabCursor)
 57522  }
 57523  
 57524  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 57525  	bp := tls.Alloc(32)
 57526  	defer tls.Free(32)
 57527  
 57528  	var z1 uintptr
 57529  	var z2 uintptr = ts + 584
 57530  	var pCur uintptr = cur
 57531  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57532  
 57533  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 57534  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 57535  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 57536  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 57537  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 57538  	}
 57539  	switch i {
 57540  	case 0:
 57541  		{
 57542  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57543  			break
 57544  
 57545  		}
 57546  	case 1:
 57547  		{
 57548  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 57549  			break
 57550  
 57551  		}
 57552  	case 2:
 57553  		{
 57554  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 57555  				if *(*int8)(unsafe.Pointer(z2)) != 0 {
 57556  					return z2
 57557  				}
 57558  				return uintptr(0)
 57559  			}(), TCL_GLOBAL_ONLY)
 57560  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 57561  			break
 57562  
 57563  		}
 57564  	case 3:
 57565  		{
 57566  			var z3 uintptr
 57567  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 57568  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 57569  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 57570  			} else {
 57571  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57572  			}
 57573  			break
 57574  
 57575  		}
 57576  	}
 57577  	return SQLITE_OK
 57578  }
 57579  
 57580  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 57581  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 57582  	return SQLITE_OK
 57583  }
 57584  
 57585  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 57586  	var pCur uintptr = cur
 57587  	return func() int32 {
 57588  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57589  			return 0
 57590  		}
 57591  		return 1
 57592  	}()
 57593  }
 57594  
 57595  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x int8) int32 {
 57596  	var i int32
 57597  	for i = 0; *(*int8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 57598  		if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 57599  			return 1
 57600  		}
 57601  	}
 57602  	*(*int8)(unsafe.Pointer(zStr + uintptr(i))) = x
 57603  	*(*int8)(unsafe.Pointer(zStr + uintptr(i+1))) = int8(0)
 57604  	return 0
 57605  }
 57606  
 57607  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 57608  	bp := tls.Alloc(4)
 57609  	defer tls.Free(4)
 57610  
 57611  	var rc int32
 57612  	*(*int32)(unsafe.Pointer(bp)) = 0
 57613  	var pRes uintptr
 57614  	rc = tcl.XTcl_Eval(tls, interp,
 57615  		ts+37576)
 57616  	if rc == TCL_OK {
 57617  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 57618  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 57619  	}
 57620  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 57621  }
 57622  
 57623  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 57624  	var pTab uintptr = tab
 57625  	var ii int32
 57626  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 57627  	var iStr int32 = 0
 57628  
 57629  	if zStr == uintptr(0) {
 57630  		return SQLITE_NOMEM
 57631  	}
 57632  	*(*int8)(unsafe.Pointer(zStr)) = int8(0)
 57633  
 57634  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 57635  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 57636  		var pUsage uintptr
 57637  
 57638  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 57639  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 57640  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57641  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('e')) {
 57642  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57643  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 57644  				}
 57645  			}
 57646  
 57647  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57648  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('m')) {
 57649  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57650  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 57651  				}
 57652  			}
 57653  
 57654  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57655  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('g')) {
 57656  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57657  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57658  				}
 57659  			}
 57660  
 57661  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57662  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('r')) {
 57663  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57664  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57665  				}
 57666  			}
 57667  
 57668  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57669  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('l')) {
 57670  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57671  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57672  				}
 57673  			}
 57674  		}
 57675  	}
 57676  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 57677  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 57678  
 57679  	return SQLITE_OK
 57680  }
 57681  
 57682  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 57683  	var pTab uintptr = tab
 57684  	if argc == 1 {
 57685  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57686  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 57687  		return SQLITE_OK
 57688  	}
 57689  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 57690  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57691  		var zName uintptr
 57692  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 57693  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 57694  			return SQLITE_ERROR
 57695  		}
 57696  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 57697  		if zValue != 0 {
 57698  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57699  		} else {
 57700  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 57701  		}
 57702  		return SQLITE_OK
 57703  	}
 57704  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 57705  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 57706  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57707  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 57708  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57709  
 57710  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 57711  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 57712  		}
 57713  		if zValue != uintptr(0) {
 57714  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57715  		}
 57716  		return SQLITE_OK
 57717  	}
 57718  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 57719  	return SQLITE_ERROR
 57720  }
 57721  
 57722  var tclvarModule = sqlite3_module{
 57723  	FxCreate:     0,
 57724  	FxConnect:    0,
 57725  	FxBestIndex:  0,
 57726  	FxDisconnect: 0,
 57727  	FxDestroy:    0,
 57728  	FxOpen:       0,
 57729  	FxClose:      0,
 57730  	FxFilter:     0,
 57731  	FxNext:       0,
 57732  	FxEof:        0,
 57733  	FxColumn:     0,
 57734  	FxRowid:      0,
 57735  	FxUpdate:     0,
 57736  }
 57737  
 57738  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57739  	bp := tls.Alloc(8)
 57740  	defer tls.Free(8)
 57741  
 57742  	var rc int32 = TCL_OK
 57743  
 57744  	if objc != 2 {
 57745  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 57746  		return TCL_ERROR
 57747  	}
 57748  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 57749  		return TCL_ERROR
 57750  	}
 57751  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 57752  	rc = tcl.XTcl_Eval(tls, interp,
 57753  		ts+37703)
 57754  	return rc
 57755  }
 57756  
 57757  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 57758  	var i int32
 57759  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 57760  		FzName      uintptr
 57761  		FxProc      uintptr
 57762  		FclientData uintptr
 57763  	}{})); i++ {
 57764  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 57765  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 57766  	}
 57767  	return TCL_OK
 57768  }
 57769  
 57770  var aObjCmd13 = [1]struct {
 57771  	FzName      uintptr
 57772  	FxProc      uintptr
 57773  	FclientData uintptr
 57774  }{
 57775  	{FzName: ts + 38239, FxProc: 0},
 57776  }
 57777  
 57778  type SqlThread1 = struct {
 57779  	Fparent   Tcl_ThreadId
 57780  	Finterp   uintptr
 57781  	FzScript  uintptr
 57782  	FzVarname uintptr
 57783  }
 57784  
 57785  type SqlThread = SqlThread1
 57786  
 57787  type EvalEvent1 = struct {
 57788  	Fbase    Tcl_Event
 57789  	FzScript uintptr
 57790  	Finterp  uintptr
 57791  }
 57792  
 57793  type EvalEvent = EvalEvent1
 57794  
 57795  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 57796  	var rc int32
 57797  	var p uintptr = evPtr
 57798  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 57799  	if rc != TCL_OK {
 57800  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 57801  	}
 57802  	_ = flags
 57803  	return 1
 57804  }
 57805  
 57806  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 57807  	bp := tls.Alloc(4)
 57808  	defer tls.Free(4)
 57809  
 57810  	var pEvent uintptr
 57811  	var zMsg uintptr
 57812  
 57813  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 57814  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 57815  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57816  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57817  		f func(*libc.TLS, uintptr, int32) int32
 57818  	}{tclScriptEvent}))
 57819  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57820  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1))
 57821  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57822  
 57823  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57824  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57825  }
 57826  
 57827  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 57828  	var interp uintptr
 57829  	var pRes uintptr
 57830  	var pList uintptr
 57831  	var rc int32
 57832  	var p uintptr = pSqlThread
 57833  
 57834  	interp = tcl.XTcl_CreateInterp(tls)
 57835  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57836  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57837  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57838  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57839  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57840  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 57841  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57842  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57843  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57844  	tcl.XTcl_CreateObjCommand(tls, interp,
 57845  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57846  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57847  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57848  	tcl.XTcl_CreateObjCommand(tls, interp,
 57849  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57850  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57851  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57852  	Sqlitetest1_Init(tls, interp)
 57853  	Sqlitetest_mutex_Init(tls, interp)
 57854  	Sqlite3_Init(tls, interp)
 57855  
 57856  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 57857  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 57858  	pList = tcl.XTcl_NewObj(tls)
 57859  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57860  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 57861  
 57862  	if rc != TCL_OK {
 57863  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 57864  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57865  		postToParent(tls, p, pList)
 57866  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57867  			var _objPtr uintptr = pList
 57868  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57869  				tcl.XTclFreeObj(tls, _objPtr)
 57870  			}
 57871  		}
 57872  		pList = tcl.XTcl_NewObj(tls)
 57873  	}
 57874  
 57875  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 57876  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 57877  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57878  	postToParent(tls, p, pList)
 57879  
 57880  	tcl.XTcl_Free(tls, p)
 57881  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57882  		var _objPtr uintptr = pList
 57883  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57884  			tcl.XTclFreeObj(tls, _objPtr)
 57885  		}
 57886  	}
 57887  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57888  		var _objPtr uintptr = pRes
 57889  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57890  			tcl.XTclFreeObj(tls, _objPtr)
 57891  		}
 57892  	}
 57893  	tcl.XTcl_DeleteInterp(tls, interp)
 57894  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 57895  	}
 57896  	tcl.XTcl_ExitThread(tls, 0)
 57897  
 57898  }
 57899  
 57900  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57901  	bp := tls.Alloc(32)
 57902  	defer tls.Free(32)
 57903  
 57904  	var pNew uintptr
 57905  	var rc int32
 57906  
 57907  	var zVarname uintptr
 57908  
 57909  	var zScript uintptr
 57910  
 57911  	var nStack int32 = 0
 57912  	var flags int32 = 0000
 57913  
 57914  	_ = clientData
 57915  	_ = objc
 57916  
 57917  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57918  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 57919  
 57920  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 57921  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 57922  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 57923  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57924  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1))
 57925  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 57926  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 57927  
 57928  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 57929  	if rc != TCL_OK {
 57930  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 57931  		tcl.XTcl_Free(tls, pNew)
 57932  		return TCL_ERROR
 57933  	}
 57934  
 57935  	return TCL_OK
 57936  }
 57937  
 57938  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57939  	bp := tls.Alloc(20)
 57940  	defer tls.Free(20)
 57941  
 57942  	var pEvent uintptr
 57943  	var zMsg uintptr
 57944  
 57945  	var p uintptr = clientData
 57946  
 57947  	_ = objc
 57948  
 57949  	if p == uintptr(0) {
 57950  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 57951  		return TCL_ERROR
 57952  	}
 57953  
 57954  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57955  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 57956  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57957  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57958  		f func(*libc.TLS, uintptr, int32) int32
 57959  	}{tclScriptEvent}))
 57960  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57961  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57962  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57963  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57964  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57965  
 57966  	return TCL_OK
 57967  }
 57968  
 57969  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 57970  	_ = pArg
 57971  	_ = nBusy
 57972  	sqlite3.Xsqlite3_sleep(tls, 50)
 57973  	return 1
 57974  }
 57975  
 57976  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57977  	bp := tls.Alloc(124)
 57978  	defer tls.Free(124)
 57979  
 57980  	var zFilename uintptr
 57981  
 57982  	_ = clientData
 57983  	_ = objc
 57984  
 57985  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57986  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 57987  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 57988  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 57989  		f func(*libc.TLS, uintptr, int32) int32
 57990  	}{xBusy})), uintptr(0))
 57991  
 57992  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 57993  		return TCL_ERROR
 57994  	}
 57995  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 57996  
 57997  	return TCL_OK
 57998  }
 57999  
 58000  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58001  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 58002  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 58003  	_ = clientData
 58004  	_ = objc
 58005  	_ = objv
 58006  	return TCL_OK
 58007  }
 58008  
 58009  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58010  	bp := tls.Alloc(164)
 58011  	defer tls.Free(164)
 58012  
 58013  	*(*[5]struct {
 58014  		FzName       uintptr
 58015  		FxProc       uintptr
 58016  		FnArg        int32
 58017  		F__ccgo_pad1 [4]byte
 58018  		FzUsage      uintptr
 58019  	})(unsafe.Pointer(bp)) = [5]struct {
 58020  		FzName       uintptr
 58021  		FxProc       uintptr
 58022  		FnArg        int32
 58023  		F__ccgo_pad1 [4]byte
 58024  		FzUsage      uintptr
 58025  	}{
 58026  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58027  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58028  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 58029  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58030  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58031  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 58032  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58033  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58034  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 58035  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58036  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58037  		}{sqlthread_id})), FzUsage: ts + 584},
 58038  		{},
 58039  	}
 58040  	var pSub uintptr
 58041  	var rc int32
 58042  
 58043  	if objc < 2 {
 58044  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 58045  		return TCL_ERROR
 58046  	}
 58047  
 58048  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 58049  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 58050  			FzName       uintptr
 58051  			FxProc       uintptr
 58052  			FnArg        int32
 58053  			F__ccgo_pad1 [4]byte
 58054  			FzUsage      uintptr
 58055  		}{})), ts+2014, 0, bp+160)
 58056  	if rc != TCL_OK {
 58057  		return rc
 58058  	}
 58059  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 58060  
 58061  	if objc < (*struct {
 58062  		FzName       uintptr
 58063  		FxProc       uintptr
 58064  		FnArg        int32
 58065  		F__ccgo_pad1 [4]byte
 58066  		FzUsage      uintptr
 58067  	})(unsafe.Pointer(pSub)).FnArg+2 {
 58068  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 58069  			FzName       uintptr
 58070  			FxProc       uintptr
 58071  			FnArg        int32
 58072  			F__ccgo_pad1 [4]byte
 58073  			FzUsage      uintptr
 58074  		})(unsafe.Pointer(pSub)).FzUsage)
 58075  		return TCL_ERROR
 58076  	}
 58077  
 58078  	return (*struct {
 58079  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58080  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 58081  		FzName       uintptr
 58082  		FxProc       uintptr
 58083  		FnArg        int32
 58084  		F__ccgo_pad1 [4]byte
 58085  		FzUsage      uintptr
 58086  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 58087  }
 58088  
 58089  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58090  	bp := tls.Alloc(16)
 58091  	defer tls.Free(16)
 58092  
 58093  	tcl.XTcl_GetTime(tls, bp)
 58094  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 58095  	_ = clientData
 58096  	_ = objc
 58097  	_ = objv
 58098  	return TCL_OK
 58099  }
 58100  
 58101  type UnlockNotification1 = struct {
 58102  	Ffired       int32
 58103  	F__ccgo_pad1 [4]byte
 58104  	Fcond        pthread_cond_t
 58105  	Fmutex       pthread_mutex_t
 58106  }
 58107  
 58108  type UnlockNotification = UnlockNotification1
 58109  
 58110  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 58111  	var i int32
 58112  	for i = 0; i < nArg; i++ {
 58113  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 58114  		libc.Xpthread_mutex_lock(tls, p+16)
 58115  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 58116  		libc.Xpthread_cond_signal(tls, p+8)
 58117  		libc.Xpthread_mutex_unlock(tls, p+16)
 58118  	}
 58119  }
 58120  
 58121  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 58122  	bp := tls.Alloc(24)
 58123  	defer tls.Free(24)
 58124  
 58125  	var rc int32
 58126  
 58127  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 58128  	libc.Xpthread_mutex_init(tls, bp+16, uintptr(0))
 58129  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 58130  
 58131  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 58132  		f func(*libc.TLS, uintptr, int32)
 58133  	}{unlock_notify_cb})), bp)
 58134  
 58135  	if rc == SQLITE_OK {
 58136  		libc.Xpthread_mutex_lock(tls, bp+16)
 58137  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 58138  			libc.Xpthread_cond_wait(tls, bp+8, bp+16)
 58139  		}
 58140  		libc.Xpthread_mutex_unlock(tls, bp+16)
 58141  	}
 58142  
 58143  	libc.Xpthread_cond_destroy(tls, bp+8)
 58144  	libc.Xpthread_mutex_destroy(tls, bp+16)
 58145  
 58146  	return rc
 58147  }
 58148  
 58149  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 58150  	var rc int32
 58151  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 58152  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 58153  		if rc != SQLITE_OK {
 58154  			break
 58155  		}
 58156  		sqlite3.Xsqlite3_reset(tls, pStmt)
 58157  	}
 58158  	return rc
 58159  }
 58160  
 58161  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 58162  	var rc int32
 58163  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 58164  		rc = wait_for_unlock_notify(tls, db)
 58165  		if rc != SQLITE_OK {
 58166  			break
 58167  		}
 58168  	}
 58169  	return rc
 58170  }
 58171  
 58172  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58173  	var pStmt uintptr
 58174  	var rc int32
 58175  
 58176  	if objc != 2 {
 58177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 58178  		return TCL_ERROR
 58179  	}
 58180  
 58181  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 58182  	rc = sqlite3_blocking_step(tls, pStmt)
 58183  
 58184  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58185  	return TCL_OK
 58186  }
 58187  
 58188  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58189  	bp := tls.Alloc(162)
 58190  	defer tls.Free(162)
 58191  
 58192  	var zSql uintptr
 58193  
 58194  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 58195  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 58196  
 58197  	var rc int32
 58198  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 58199  
 58200  	if objc != 5 && objc != 4 {
 58201  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 58202  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 58203  		return TCL_ERROR
 58204  	}
 58205  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 58206  		return TCL_ERROR
 58207  	}
 58208  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58209  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 58210  		return TCL_ERROR
 58211  	}
 58212  
 58213  	if isBlocking != 0 {
 58214  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58215  	} else {
 58216  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 58217  	}
 58218  
 58219  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 58220  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 58221  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 58222  		}
 58223  		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)
 58224  	}
 58225  	if rc != SQLITE_OK {
 58226  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 58227  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 58228  		return TCL_ERROR
 58229  	}
 58230  
 58231  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 58232  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 58233  			return TCL_ERROR
 58234  		}
 58235  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 58236  	}
 58237  	return TCL_OK
 58238  }
 58239  
 58240  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 58241  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58242  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58243  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 58244  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58245  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58246  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58247  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58248  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58249  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58250  	tcl.XTcl_CreateObjCommand(tls, interp,
 58251  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58252  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58253  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58254  	tcl.XTcl_CreateObjCommand(tls, interp,
 58255  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58256  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58257  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58258  	return TCL_OK
 58259  }
 58260  
 58261  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 58262  	return TCL_OK
 58263  }
 58264  
 58265  type Testvfs1 = struct {
 58266  	FzName        uintptr
 58267  	FpParent      uintptr
 58268  	FpVfs         uintptr
 58269  	Finterp       uintptr
 58270  	FpScript      uintptr
 58271  	FpBuffer      uintptr
 58272  	FisNoshm      int32
 58273  	FisFullshm    int32
 58274  	Fmask         int32
 58275  	Fioerr_err    TestFaultInject
 58276  	Ffull_err     TestFaultInject
 58277  	Fcantopen_err TestFaultInject
 58278  	FiDevchar     int32
 58279  	FiSectorsize  int32
 58280  }
 58281  
 58282  type Testvfs = Testvfs1
 58283  type TestvfsBuffer1 = struct {
 58284  	FzFile       uintptr
 58285  	Fpgsz        int32
 58286  	F__ccgo_pad1 [4]byte
 58287  	FaPage       [1024]uintptr
 58288  	FpFile       uintptr
 58289  	FpNext       uintptr
 58290  }
 58291  
 58292  type TestvfsBuffer = TestvfsBuffer1
 58293  type TestvfsFile1 = struct {
 58294  	Fbase sqlite3_file
 58295  	FpFd  uintptr
 58296  }
 58297  
 58298  type TestvfsFile = TestvfsFile1
 58299  type TestvfsFd1 = struct {
 58300  	FpVfs       uintptr
 58301  	FzFilename  uintptr
 58302  	FpReal      uintptr
 58303  	FpShmId     uintptr
 58304  	FpShm       uintptr
 58305  	Fexcllock   u32
 58306  	Fsharedlock u32
 58307  	FpNext      uintptr
 58308  }
 58309  
 58310  type TestvfsFd = TestvfsFd1
 58311  
 58312  type TestFaultInject1 = struct {
 58313  	FiCnt   int32
 58314  	FeFault int32
 58315  	FnFail  int32
 58316  }
 58317  
 58318  type TestFaultInject = TestFaultInject1
 58319  
 58320  var tvfs_io_methods = sqlite3_io_methods{
 58321  	FiVersion:               3,
 58322  	FxClose:                 0,
 58323  	FxRead:                  0,
 58324  	FxWrite:                 0,
 58325  	FxTruncate:              0,
 58326  	FxSync:                  0,
 58327  	FxFileSize:              0,
 58328  	FxLock:                  0,
 58329  	FxUnlock:                0,
 58330  	FxCheckReservedLock:     0,
 58331  	FxFileControl:           0,
 58332  	FxSectorSize:            0,
 58333  	FxDeviceCharacteristics: 0,
 58334  	FxShmMap:                0,
 58335  	FxShmLock:               0,
 58336  	FxShmBarrier:            0,
 58337  	FxShmUnmap:              0,
 58338  	FxFetch:                 0,
 58339  	FxUnfetch:               0,
 58340  }
 58341  
 58342  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 58343  	bp := tls.Alloc(144)
 58344  	defer tls.Free(144)
 58345  
 58346  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 58347  		{FzCode: ts + 2127},
 58348  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 58349  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 58350  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 58351  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 58352  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 58353  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 58354  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 58355  		{FeCode: -1, FzCode: ts + 38554},
 58356  	}
 58357  	var z uintptr
 58358  	var i int32
 58359  
 58360  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58361  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 58362  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 58363  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 58364  			return 1
 58365  		}
 58366  	}
 58367  
 58368  	return 0
 58369  }
 58370  
 58371  type errcode = struct {
 58372  	FeCode       int32
 58373  	F__ccgo_pad1 [4]byte
 58374  	FzCode       uintptr
 58375  }
 58376  
 58377  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 58378  	var ret int32 = 0
 58379  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 58380  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 58381  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 58382  			ret = 1
 58383  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 58384  		}
 58385  	}
 58386  	return ret
 58387  }
 58388  
 58389  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 58390  	return tvfsInjectFault(tls, p+60)
 58391  }
 58392  
 58393  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 58394  	return tvfsInjectFault(tls, p+72)
 58395  }
 58396  
 58397  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 58398  	return tvfsInjectFault(tls, p+84)
 58399  }
 58400  
 58401  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 58402  	var rc int32
 58403  	var pEval uintptr
 58404  
 58405  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 58406  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 58407  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 58408  	if arg1 != 0 {
 58409  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 58410  	}
 58411  	if arg2 != 0 {
 58412  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 58413  	}
 58414  	if arg3 != 0 {
 58415  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 58416  	}
 58417  	if arg4 != 0 {
 58418  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 58419  	}
 58420  
 58421  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 58422  	if rc != TCL_OK {
 58423  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58424  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58425  	}
 58426  }
 58427  
 58428  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 58429  	var pTestfile uintptr = pFile
 58430  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 58431  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58432  
 58433  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 58434  		tvfsExecTcl(tls, p, ts+35556,
 58435  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58436  	}
 58437  
 58438  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 58439  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58440  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 58441  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58442  				tcl.XTclFreeObj(tls, _objPtr)
 58443  			}
 58444  		}
 58445  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58446  	}
 58447  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 58448  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 58449  	}
 58450  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58451  	tcl.XTcl_Free(tls, pFd)
 58452  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 58453  	return SQLITE_OK
 58454  }
 58455  
 58456  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58457  	bp := tls.Alloc(4)
 58458  	defer tls.Free(4)
 58459  
 58460  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58461  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58462  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58463  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 58464  		tvfsExecTcl(tls, p, ts+35563,
 58465  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58466  		tvfsResultCode(tls, p, bp)
 58467  	}
 58468  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58469  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58470  	}
 58471  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58472  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58473  	}
 58474  	return *(*int32)(unsafe.Pointer(bp))
 58475  }
 58476  
 58477  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58478  	bp := tls.Alloc(4)
 58479  	defer tls.Free(4)
 58480  
 58481  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58482  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58483  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58484  
 58485  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 58486  		tvfsExecTcl(tls, p, ts+35569,
 58487  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58488  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 58489  		tvfsResultCode(tls, p, bp)
 58490  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 58491  			return SQLITE_OK
 58492  		}
 58493  	}
 58494  
 58495  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58496  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58497  	}
 58498  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58499  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58500  	}
 58501  
 58502  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58503  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58504  	}
 58505  	return *(*int32)(unsafe.Pointer(bp))
 58506  }
 58507  
 58508  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 58509  	bp := tls.Alloc(4)
 58510  	defer tls.Free(4)
 58511  
 58512  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58513  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58514  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58515  
 58516  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 58517  		tvfsExecTcl(tls, p, ts+35576,
 58518  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58519  		tvfsResultCode(tls, p, bp)
 58520  	}
 58521  
 58522  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58523  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 58524  	}
 58525  	return *(*int32)(unsafe.Pointer(bp))
 58526  }
 58527  
 58528  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 58529  	bp := tls.Alloc(4)
 58530  	defer tls.Free(4)
 58531  
 58532  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58533  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58534  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58535  
 58536  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 58537  		var zFlags uintptr = uintptr(0)
 58538  
 58539  		switch flags {
 58540  		case SQLITE_SYNC_NORMAL:
 58541  			zFlags = ts + 16397
 58542  			break
 58543  			fallthrough
 58544  		case SQLITE_SYNC_FULL:
 58545  			zFlags = ts + 18291
 58546  			break
 58547  			fallthrough
 58548  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 58549  			zFlags = ts + 38566
 58550  			break
 58551  			fallthrough
 58552  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 58553  			zFlags = ts + 38582
 58554  			break
 58555  			fallthrough
 58556  		default:
 58557  		}
 58558  
 58559  		tvfsExecTcl(tls, p, ts+27843,
 58560  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58561  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 58562  		tvfsResultCode(tls, p, bp)
 58563  	}
 58564  
 58565  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58566  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58567  	}
 58568  
 58569  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58570  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 58571  	}
 58572  
 58573  	return *(*int32)(unsafe.Pointer(bp))
 58574  }
 58575  
 58576  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 58577  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58578  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 58579  }
 58580  
 58581  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58582  	bp := tls.Alloc(38)
 58583  	defer tls.Free(38)
 58584  
 58585  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58586  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58587  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 58588  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58589  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58590  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58591  	}
 58592  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58593  }
 58594  
 58595  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58596  	bp := tls.Alloc(38)
 58597  	defer tls.Free(38)
 58598  
 58599  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58600  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58601  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 58602  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58603  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58604  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58605  	}
 58606  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58607  		return SQLITE_IOERR | int32(8)<<8
 58608  	}
 58609  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58610  }
 58611  
 58612  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 58613  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58614  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58615  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 58616  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58617  			uintptr(0), uintptr(0), uintptr(0))
 58618  	}
 58619  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 58620  }
 58621  
 58622  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 58623  	bp := tls.Alloc(68)
 58624  	defer tls.Free(68)
 58625  
 58626  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58627  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58628  	if op == SQLITE_FCNTL_PRAGMA {
 58629  		var argv uintptr = pArg
 58630  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 58631  			var rc int32 = SQLITE_ERROR
 58632  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 58633  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 58634  				var x int32 = libc.Xatoi(tls, z)
 58635  				if x != 0 {
 58636  					rc = x
 58637  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 58638  						z++
 58639  					}
 58640  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x01 != 0 {
 58641  						z++
 58642  					}
 58643  				}
 58644  				if *(*int8)(unsafe.Pointer(z)) != 0 {
 58645  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 58646  				}
 58647  			}
 58648  			return rc
 58649  		}
 58650  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 58651  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58652  			return SQLITE_OK
 58653  		}
 58654  	}
 58655  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 58656  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 58657  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 58658  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 58659  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 58660  		}
 58661  		var i int32
 58662  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 58663  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 58664  				break
 58665  			}
 58666  		}
 58667  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 58668  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 58669  			tvfsExecTcl(tls, p, ts+35624,
 58670  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58671  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 58672  				uintptr(0), uintptr(0))
 58673  			tvfsResultCode(tls, p, bp+64)
 58674  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 58675  				return func() int32 {
 58676  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 58677  						return SQLITE_OK
 58678  					}
 58679  					return *(*int32)(unsafe.Pointer(bp + 64))
 58680  				}()
 58681  			}
 58682  		}
 58683  	}
 58684  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 58685  }
 58686  
 58687  type Fcntl = struct {
 58688  	FiFnctl      int32
 58689  	F__ccgo_pad1 [4]byte
 58690  	FzFnctl      uintptr
 58691  }
 58692  
 58693  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 58694  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58695  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58696  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 58697  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 58698  	}
 58699  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58700  }
 58701  
 58702  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 58703  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58704  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58705  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 58706  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 58707  	}
 58708  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58709  }
 58710  
 58711  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 58712  	bp := tls.Alloc(4)
 58713  	defer tls.Free(4)
 58714  
 58715  	var pTestfile uintptr = pFile
 58716  	var pFd uintptr
 58717  	var pId uintptr = uintptr(0)
 58718  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58719  
 58720  	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)))
 58721  	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))
 58722  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58723  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58724  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 58725  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 58726  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 58727  	libc.Xmemset(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})))
 58728  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 58729  
 58730  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58731  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 58732  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58733  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58734  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 58735  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 58736  			for *(*int8)(unsafe.Pointer(z)) != 0 {
 58737  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58738  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58739  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58740  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58741  			}
 58742  		}
 58743  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 58744  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58745  			var _objPtr uintptr = pArg
 58746  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58747  				tcl.XTclFreeObj(tls, _objPtr)
 58748  			}
 58749  		}
 58750  		if tvfsResultCode(tls, p, bp) != 0 {
 58751  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58752  				return *(*int32)(unsafe.Pointer(bp))
 58753  			}
 58754  		} else {
 58755  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58756  		}
 58757  	}
 58758  
 58759  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58760  		return SQLITE_IOERR
 58761  	}
 58762  	if tvfsInjectCantopenerr(tls, p) != 0 {
 58763  		return SQLITE_CANTOPEN
 58764  	}
 58765  	if tvfsInjectFullerr(tls, p) != 0 {
 58766  		return SQLITE_FULL
 58767  	}
 58768  
 58769  	if !(pId != 0) {
 58770  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 58771  	}
 58772  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 58773  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 58774  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58775  
 58776  	*(*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)
 58777  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 58778  		var pMethods uintptr
 58779  		var nByte int32
 58780  
 58781  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 58782  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 58783  		} else {
 58784  			nByte = int32(uintptr(0) + 104)
 58785  		}
 58786  
 58787  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 58788  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte))
 58789  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 58790  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 58791  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 58792  		}
 58793  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 58794  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 58795  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 58796  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 58797  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 58798  		}
 58799  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 58800  	}
 58801  
 58802  	return *(*int32)(unsafe.Pointer(bp))
 58803  }
 58804  
 58805  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 58806  	bp := tls.Alloc(4)
 58807  	defer tls.Free(4)
 58808  
 58809  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58810  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58811  
 58812  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 58813  		tvfsExecTcl(tls, p, ts+35661,
 58814  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 58815  		tvfsResultCode(tls, p, bp)
 58816  	}
 58817  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58818  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 58819  	}
 58820  	return *(*int32)(unsafe.Pointer(bp))
 58821  }
 58822  
 58823  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 58824  	bp := tls.Alloc(4)
 58825  	defer tls.Free(4)
 58826  
 58827  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58828  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 58829  		var zArg uintptr = uintptr(0)
 58830  		if flags == SQLITE_ACCESS_EXISTS {
 58831  			zArg = ts + 38666
 58832  		}
 58833  		if flags == SQLITE_ACCESS_READWRITE {
 58834  			zArg = ts + 38687
 58835  		}
 58836  		if flags == SQLITE_ACCESS_READ {
 58837  			zArg = ts + 38711
 58838  		}
 58839  		tvfsExecTcl(tls, p, ts+35669,
 58840  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 58841  		if tvfsResultCode(tls, p, bp) != 0 {
 58842  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58843  				return *(*int32)(unsafe.Pointer(bp))
 58844  			}
 58845  		} else {
 58846  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 58847  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 58848  				return SQLITE_OK
 58849  			}
 58850  		}
 58851  	}
 58852  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 58853  }
 58854  
 58855  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 58856  	bp := tls.Alloc(4)
 58857  	defer tls.Free(4)
 58858  
 58859  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58860  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 58861  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 58862  		if tvfsResultCode(tls, p, bp) != 0 {
 58863  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58864  				return *(*int32)(unsafe.Pointer(bp))
 58865  			}
 58866  		}
 58867  	}
 58868  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 58869  }
 58870  
 58871  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 58872  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 58873  }
 58874  
 58875  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 58876  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 58877  }
 58878  
 58879  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 58880  	return (*struct {
 58881  		f func(*libc.TLS, uintptr, uintptr) int32
 58882  	})(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)
 58883  }
 58884  
 58885  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 58886  	bp := tls.Alloc(4)
 58887  	defer tls.Free(4)
 58888  
 58889  	var p uintptr
 58890  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58891  	var pBuffer uintptr
 58892  	var pFd uintptr
 58893  
 58894  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58895  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58896  
 58897  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58898  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 58899  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 58900  		if tvfsResultCode(tls, p, bp) != 0 {
 58901  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58902  				return *(*int32)(unsafe.Pointer(bp))
 58903  			}
 58904  		}
 58905  	}
 58906  
 58907  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58908  		return SQLITE_IOERR
 58909  	}
 58910  
 58911  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 58912  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 58913  			break
 58914  		}
 58915  	}
 58916  	if !(pBuffer != 0) {
 58917  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58918  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 58919  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 58920  		libc.Xmemset(tls, pBuffer, 0, uint64(nByte))
 58921  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 58922  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1))
 58923  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 58924  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 58925  	}
 58926  
 58927  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 58928  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 58929  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 58930  	return *(*int32)(unsafe.Pointer(bp))
 58931  }
 58932  
 58933  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 58934  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 58935  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 58936  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz))
 58937  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 58938  	}
 58939  }
 58940  
 58941  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 58942  	bp := tls.Alloc(4)
 58943  	defer tls.Free(4)
 58944  
 58945  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58946  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58947  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58948  
 58949  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58950  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58951  		return (*struct {
 58952  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 58953  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 58954  	}
 58955  
 58956  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 58957  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 58958  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58959  			return *(*int32)(unsafe.Pointer(bp))
 58960  		}
 58961  	}
 58962  
 58963  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 58964  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58965  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58966  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 58967  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 58968  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 58969  		tvfsExecTcl(tls, p, ts+35754,
 58970  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 58971  		tvfsResultCode(tls, p, bp)
 58972  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58973  			var _objPtr uintptr = pArg
 58974  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58975  				tcl.XTclFreeObj(tls, _objPtr)
 58976  			}
 58977  		}
 58978  	}
 58979  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58980  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58981  	}
 58982  
 58983  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 58984  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 58985  	}
 58986  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 58987  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 58988  	}
 58989  
 58990  	return *(*int32)(unsafe.Pointer(bp))
 58991  }
 58992  
 58993  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 58994  	bp := tls.Alloc(100)
 58995  	defer tls.Free(100)
 58996  
 58997  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 58998  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58999  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59000  	var nLock int32
 59001  
 59002  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59003  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59004  		return (*struct {
 59005  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59006  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 59007  	}
 59008  
 59009  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 59010  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 59011  		nLock = int32(libc.Xstrlen(tls, bp+16))
 59012  		if flags&SQLITE_SHM_LOCK != 0 {
 59013  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 59014  		} else {
 59015  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 59016  		}
 59017  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 59018  		if flags&SQLITE_SHM_SHARED != 0 {
 59019  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 59020  		} else {
 59021  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 59022  		}
 59023  		tvfsExecTcl(tls, p, ts+35733,
 59024  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59025  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 59026  		tvfsResultCode(tls, p, bp+96)
 59027  	}
 59028  
 59029  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59030  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 59031  	}
 59032  
 59033  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59034  		var isLock int32 = flags & SQLITE_SHM_LOCK
 59035  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 59036  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 59037  		if isLock != 0 {
 59038  			var p2 uintptr
 59039  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 59040  				if p2 == pFd {
 59041  					continue
 59042  				}
 59043  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 59044  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 59045  					break
 59046  				}
 59047  			}
 59048  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59049  				if isExcl != 0 {
 59050  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 59051  				}
 59052  				if !(isExcl != 0) {
 59053  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 59054  				}
 59055  			}
 59056  		} else {
 59057  			if isExcl != 0 {
 59058  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 59059  			}
 59060  			if !(isExcl != 0) {
 59061  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 59062  			}
 59063  		}
 59064  	}
 59065  
 59066  	return *(*int32)(unsafe.Pointer(bp + 96))
 59067  }
 59068  
 59069  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 59070  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59071  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59072  
 59073  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 59074  		var z uintptr
 59075  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 59076  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 59077  		} else {
 59078  			z = ts + 584
 59079  		}
 59080  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59081  	}
 59082  
 59083  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59084  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59085  		(*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)
 59086  		return
 59087  	}
 59088  }
 59089  
 59090  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 59091  	bp := tls.Alloc(4)
 59092  	defer tls.Free(4)
 59093  
 59094  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59095  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59096  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59097  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 59098  	var ppFd uintptr
 59099  
 59100  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59101  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59102  		return (*struct {
 59103  			f func(*libc.TLS, uintptr, int32) int32
 59104  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 59105  	}
 59106  
 59107  	if !(pBuffer != 0) {
 59108  		return SQLITE_OK
 59109  	}
 59110  
 59111  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 59112  		tvfsExecTcl(tls, p, ts+35723,
 59113  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59114  		tvfsResultCode(tls, p, bp)
 59115  	}
 59116  
 59117  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 59118  	}
 59119  
 59120  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 59121  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 59122  
 59123  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 59124  		var i int32
 59125  		var pp uintptr
 59126  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 59127  		}
 59128  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 59129  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 59130  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 59131  		}
 59132  		tcl.XTcl_Free(tls, pBuffer)
 59133  	}
 59134  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59135  
 59136  	return *(*int32)(unsafe.Pointer(bp))
 59137  }
 59138  
 59139  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 59140  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59141  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 59142  }
 59143  
 59144  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 59145  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59146  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 59147  }
 59148  
 59149  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59150  	bp := tls.Alloc(568)
 59151  	defer tls.Free(568)
 59152  
 59153  	var p uintptr = cd
 59154  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 59155  		{FzName: ts + 38772},
 59156  		{FzName: ts + 10138, FeCmd: uint32(1)},
 59157  		{FzName: ts + 38776, FeCmd: uint32(2)},
 59158  		{FzName: ts + 38783, FeCmd: uint32(3)},
 59159  		{FzName: ts + 38789, FeCmd: uint32(7)},
 59160  		{FzName: ts + 38797, FeCmd: uint32(8)},
 59161  		{FzName: ts + 38809, FeCmd: uint32(4)},
 59162  		{FzName: ts + 38816, FeCmd: uint32(5)},
 59163  		{FzName: ts + 38824, FeCmd: uint32(6)},
 59164  		{},
 59165  	}
 59166  
 59167  	if objc < 2 {
 59168  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 59169  		return TCL_ERROR
 59170  	}
 59171  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 59172  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+256) != 0 {
 59173  		return TCL_ERROR
 59174  	}
 59175  	tcl.XTcl_ResetResult(tls, interp)
 59176  
 59177  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59178  	case uint32(0):
 59179  		{
 59180  			var pObj uintptr
 59181  			var rc int32
 59182  			var pBuffer uintptr
 59183  			var zName uintptr
 59184  			if objc != 3 && objc != 4 {
 59185  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 59186  				return TCL_ERROR
 59187  			}
 59188  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 59189  			rc = (*struct {
 59190  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59191  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 59192  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 59193  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 59194  			if rc != SQLITE_OK {
 59195  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 59196  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59197  				tcl.XTcl_Free(tls, zName)
 59198  				return TCL_ERROR
 59199  			}
 59200  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59201  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 59202  					break
 59203  				}
 59204  			}
 59205  			tcl.XTcl_Free(tls, zName)
 59206  			if !(pBuffer != 0) {
 59207  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59208  				return TCL_ERROR
 59209  			}
 59210  			if objc == 4 {
 59211  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 59212  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59213  				if pgsz == 0 {
 59214  					pgsz = 65536
 59215  				}
 59216  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59217  					var nByte int32 = pgsz
 59218  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 59219  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 59220  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 59221  					}
 59222  					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))
 59223  				}
 59224  			}
 59225  
 59226  			pObj = tcl.XTcl_NewObj(tls)
 59227  			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))++ {
 59228  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59229  				if pgsz == 0 {
 59230  					pgsz = 65536
 59231  				}
 59232  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 59233  			}
 59234  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 59235  			break
 59236  
 59237  		}
 59238  
 59239  	case uint32(2):
 59240  		{
 59241  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 59242  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 59243  			var mask int32 = 0
 59244  			if objc != 3 {
 59245  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 59246  				return TCL_ERROR
 59247  			}
 59248  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 59249  				return TCL_ERROR
 59250  			}
 59251  			tcl.XTcl_ResetResult(tls, interp)
 59252  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 59253  				var iMethod int32
 59254  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 59255  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 59256  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 59257  						mask = mask | vfsmethod[iMethod].Fmask
 59258  						break
 59259  					}
 59260  				}
 59261  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 59262  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 59263  					return TCL_ERROR
 59264  				}
 59265  			}
 59266  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 59267  			break
 59268  
 59269  		}
 59270  
 59271  	case uint32(4):
 59272  		{
 59273  			if objc == 3 {
 59274  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59275  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59276  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59277  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59278  							tcl.XTclFreeObj(tls, _objPtr)
 59279  						}
 59280  					}
 59281  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 59282  				}
 59283  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 59284  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 59285  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59286  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 59287  				}
 59288  			} else if objc != 2 {
 59289  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 59290  				return TCL_ERROR
 59291  			}
 59292  
 59293  			tcl.XTcl_ResetResult(tls, interp)
 59294  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59295  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 59296  			}
 59297  
 59298  			break
 59299  
 59300  		}
 59301  
 59302  	case uint32(8):
 59303  		fallthrough
 59304  	case uint32(3):
 59305  		fallthrough
 59306  	case uint32(7):
 59307  		{
 59308  			var pTest uintptr = uintptr(0)
 59309  			var iRet int32
 59310  
 59311  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 59312  			case uint32(3):
 59313  				pTest = p + 60
 59314  				break
 59315  			case uint32(7):
 59316  				pTest = p + 72
 59317  				break
 59318  			case uint32(8):
 59319  				pTest = p + 84
 59320  				break
 59321  			default:
 59322  			}
 59323  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 59324  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 59325  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 59326  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 59327  
 59328  			if objc == 4 {
 59329  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 59330  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 59331  					return TCL_ERROR
 59332  				}
 59333  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 59334  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 59335  						return FAULT_INJECT_PERSISTENT
 59336  					}
 59337  					return FAULT_INJECT_TRANSIENT
 59338  				}()
 59339  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 59340  			} else if objc != 2 {
 59341  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 59342  				return TCL_ERROR
 59343  			}
 59344  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 59345  			break
 59346  
 59347  		}
 59348  
 59349  	case uint32(1):
 59350  		{
 59351  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 59352  			break
 59353  
 59354  		}
 59355  
 59356  	case uint32(5):
 59357  		{
 59358  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 59359  				{FzName: ts + 38931, FiValue: -1},
 59360  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 59361  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 59362  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 59363  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 59364  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 59365  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 59366  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 59367  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 59368  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 59369  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 59370  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 59371  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 59372  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 59373  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 59374  				{},
 59375  			}
 59376  			var pRet uintptr
 59377  			var iFlag int32
 59378  
 59379  			if objc > 3 {
 59380  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 59381  				return TCL_ERROR
 59382  			}
 59383  			if objc == 3 {
 59384  				var j int32
 59385  				var iNew int32 = 0
 59386  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 59387  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 59388  
 59389  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 59390  					return TCL_ERROR
 59391  				}
 59392  
 59393  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 59394  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 59395  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 59396  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 59397  						return TCL_ERROR
 59398  					}
 59399  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 59400  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 59401  						return TCL_ERROR
 59402  					}
 59403  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 59404  				}
 59405  
 59406  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 59407  			}
 59408  
 59409  			pRet = tcl.XTcl_NewObj(tls)
 59410  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 59411  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 59412  					tcl.XTcl_ListObjAppendElement(tls,
 59413  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 59414  				}
 59415  			}
 59416  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 59417  
 59418  			break
 59419  
 59420  		}
 59421  
 59422  	case uint32(6):
 59423  		{
 59424  			if objc > 3 {
 59425  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 59426  				return TCL_ERROR
 59427  			}
 59428  			if objc == 3 {
 59429  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 59430  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 59431  					return TCL_ERROR
 59432  				}
 59433  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 59434  			}
 59435  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 59436  			break
 59437  
 59438  		}
 59439  	}
 59440  
 59441  	return TCL_OK
 59442  }
 59443  
 59444  type TestvfsSubcmd = struct {
 59445  	FzName       uintptr
 59446  	FeCmd        uint32
 59447  	F__ccgo_pad1 [4]byte
 59448  }
 59449  
 59450  type VfsMethod = struct {
 59451  	FzName       uintptr
 59452  	Fmask        int32
 59453  	F__ccgo_pad1 [4]byte
 59454  }
 59455  
 59456  var vfsmethod = [18]VfsMethod{
 59457  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 59458  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 59459  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 59460  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 59461  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 59462  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 59463  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 59464  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 59465  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 59466  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 59467  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 59468  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 59469  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 59470  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 59471  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 59472  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 59473  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 59474  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 59475  }
 59476  
 59477  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 59478  	var p uintptr = cd
 59479  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59480  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59481  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59482  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59483  				tcl.XTclFreeObj(tls, _objPtr)
 59484  			}
 59485  		}
 59486  	}
 59487  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59488  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})))
 59489  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59490  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})))
 59491  	tcl.XTcl_Free(tls, p)
 59492  }
 59493  
 59494  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59495  	bp := tls.Alloc(28)
 59496  	defer tls.Free(28)
 59497  
 59498  	var p uintptr
 59499  	var pVfs uintptr
 59500  	var zVfs uintptr
 59501  	var nByte int32
 59502  
 59503  	var i int32
 59504  
 59505  	var zSwitch uintptr
 59506  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59507  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59508  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 59509  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 59510  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 59511  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 59512  
 59513  	if !(objc < 2 || 0 != objc%2) {
 59514  		goto __1
 59515  	}
 59516  	goto bad_args
 59517  __1:
 59518  	;
 59519  	i = 2
 59520  __2:
 59521  	if !(i < objc) {
 59522  		goto __4
 59523  	}
 59524  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 59525  
 59526  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59527  		goto __5
 59528  	}
 59529  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 59530  		goto __7
 59531  	}
 59532  	return TCL_ERROR
 59533  __7:
 59534  	;
 59535  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 59536  		goto __8
 59537  	}
 59538  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59539  __8:
 59540  	;
 59541  	goto __6
 59542  __5:
 59543  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59544  		goto __9
 59545  	}
 59546  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 59547  		goto __11
 59548  	}
 59549  	return TCL_ERROR
 59550  __11:
 59551  	;
 59552  	goto __10
 59553  __9:
 59554  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59555  		goto __12
 59556  	}
 59557  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 59558  		goto __14
 59559  	}
 59560  	return TCL_ERROR
 59561  __14:
 59562  	;
 59563  	goto __13
 59564  __12:
 59565  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59566  		goto __15
 59567  	}
 59568  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 59569  		goto __17
 59570  	}
 59571  	return TCL_ERROR
 59572  __17:
 59573  	;
 59574  	goto __16
 59575  __15:
 59576  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59577  		goto __18
 59578  	}
 59579  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 59580  		goto __20
 59581  	}
 59582  	return TCL_ERROR
 59583  __20:
 59584  	;
 59585  	goto __19
 59586  __18:
 59587  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59588  		goto __21
 59589  	}
 59590  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 59591  		goto __23
 59592  	}
 59593  	return TCL_ERROR
 59594  __23:
 59595  	;
 59596  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 59597  		goto __24
 59598  	}
 59599  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59600  __24:
 59601  	;
 59602  	goto __22
 59603  __21:
 59604  	goto bad_args
 59605  __22:
 59606  	;
 59607  __19:
 59608  	;
 59609  __16:
 59610  	;
 59611  __13:
 59612  	;
 59613  __10:
 59614  	;
 59615  __6:
 59616  	;
 59617  	goto __3
 59618  __3:
 59619  	i = i + 2
 59620  	goto __2
 59621  	goto __4
 59622  __4:
 59623  	;
 59624  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 59625  		goto __25
 59626  	}
 59627  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 59628  __25:
 59629  	;
 59630  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 59631  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 59632  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 59633  	libc.Xmemset(tls, p, 0, uint64(nByte))
 59634  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 59635  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 59636  
 59637  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 59638  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59639  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 59640  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59641  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 59642  
 59643  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 59644  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1))
 59645  
 59646  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59647  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 59648  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 59649  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 59650  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 59651  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 59652  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 59653  		goto __26
 59654  	}
 59655  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 59656  __26:
 59657  	;
 59658  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 59659  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 59660  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 59661  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 59662  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 59663  
 59664  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 59665  
 59666  	return TCL_OK
 59667  
 59668  bad_args:
 59669  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 59670  	return TCL_ERROR
 59671  }
 59672  
 59673  var tvfs_vfs = sqlite3_vfs{
 59674  	FiVersion:      3,
 59675  	FxOpen:         0,
 59676  	FxDelete:       0,
 59677  	FxAccess:       0,
 59678  	FxFullPathname: 0,
 59679  	FxRandomness:   0,
 59680  	FxSleep:        0,
 59681  	FxCurrentTime:  0,
 59682  }
 59683  
 59684  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59685  	bp := tls.Alloc(88)
 59686  	defer tls.Free(88)
 59687  
 59688  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 59689  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 59690  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59691  	var rc int32 = SQLITE_OK
 59692  	var zDbname uintptr = uintptr(0)
 59693  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 59694  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 59695  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 59696  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 59697  
 59698  	if objc != 7 {
 59699  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 59700  			ts+39174)
 59701  		return TCL_ERROR
 59702  	}
 59703  
 59704  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59705  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 59706  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 59707  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+64) != 0 ||
 59708  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 59709  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 59710  		return TCL_ERROR
 59711  	}
 59712  
 59713  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 59714  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 59715  		return TCL_ERROR
 59716  	}
 59717  	rc = (*struct {
 59718  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59719  	})(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)),
 59720  		func() int32 {
 59721  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 59722  				return SQLITE_SHM_SHARED
 59723  			}
 59724  			return SQLITE_SHM_EXCLUSIVE
 59725  		}()|
 59726  			func() int32 {
 59727  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 59728  					return SQLITE_SHM_LOCK
 59729  				}
 59730  				return SQLITE_SHM_UNLOCK
 59731  			}())
 59732  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59733  	return TCL_OK
 59734  }
 59735  
 59736  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59737  	bp := tls.Alloc(48)
 59738  	defer tls.Free(48)
 59739  
 59740  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 59741  	var rc int32 = SQLITE_OK
 59742  	var zDbname uintptr = uintptr(0)
 59743  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59744  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 59745  
 59746  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 59747  	var aShm uintptr
 59748  	var iOff int32
 59749  
 59750  	if objc != 4 && objc != 5 {
 59751  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 59752  		return TCL_ERROR
 59753  	}
 59754  
 59755  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59756  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 59757  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 59758  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 59759  		return TCL_ERROR
 59760  	}
 59761  
 59762  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 59763  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 59764  		return TCL_ERROR
 59765  	}
 59766  	rc = (*struct {
 59767  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59768  	})(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)
 59769  	if rc != SQLITE_OK {
 59770  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59771  		return TCL_ERROR
 59772  	}
 59773  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 59774  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 59775  		return TCL_ERROR
 59776  	}
 59777  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 59778  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 59779  
 59780  	if objc == 5 {
 59781  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 59782  	}
 59783  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 59784  
 59785  	return TCL_OK
 59786  }
 59787  
 59788  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 59789  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 59790  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59791  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 59792  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 59793  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59794  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 59795  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 59796  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59797  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 59798  	return TCL_OK
 59799  }
 59800  
 59801  type TestWindow1 = struct {
 59802  	FxStep    uintptr
 59803  	FxFinal   uintptr
 59804  	FxValue   uintptr
 59805  	FxInverse uintptr
 59806  	Finterp   uintptr
 59807  }
 59808  
 59809  type TestWindow = TestWindow1
 59810  
 59811  type TestWindowCtx1 = struct{ FpVal uintptr }
 59812  
 59813  type TestWindowCtx = TestWindowCtx1
 59814  
 59815  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 59816  	var i int32
 59817  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59818  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59819  		if bInverse != 0 {
 59820  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 59821  		}
 59822  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 59823  	}())
 59824  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59825  
 59826  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59827  	if pCtx != 0 {
 59828  		var zResult uintptr
 59829  		var rc int32
 59830  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59831  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59832  		} else {
 59833  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59834  		}
 59835  		for i = 0; i < nArg; i++ {
 59836  			var pArg uintptr
 59837  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 59838  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 59839  		}
 59840  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59841  		if rc != TCL_OK {
 59842  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59843  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59844  		} else {
 59845  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59846  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59847  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59848  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59849  						tcl.XTclFreeObj(tls, _objPtr)
 59850  					}
 59851  				}
 59852  			}
 59853  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 59854  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 59855  		}
 59856  	}
 59857  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59858  		var _objPtr uintptr = pEval
 59859  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59860  			tcl.XTclFreeObj(tls, _objPtr)
 59861  		}
 59862  	}
 59863  }
 59864  
 59865  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 59866  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59867  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59868  		if bValue != 0 {
 59869  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 59870  		}
 59871  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 59872  	}())
 59873  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59874  
 59875  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59876  	if pCtx != 0 {
 59877  		var zResult uintptr
 59878  		var rc int32
 59879  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59880  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59881  		} else {
 59882  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59883  		}
 59884  
 59885  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59886  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59887  		if rc != TCL_OK {
 59888  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59889  		} else {
 59890  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 59891  		}
 59892  
 59893  		if bValue == 0 {
 59894  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59895  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59896  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59897  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59898  						tcl.XTclFreeObj(tls, _objPtr)
 59899  					}
 59900  				}
 59901  			}
 59902  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 59903  		}
 59904  	}
 59905  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59906  		var _objPtr uintptr = pEval
 59907  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59908  			tcl.XTclFreeObj(tls, _objPtr)
 59909  		}
 59910  	}
 59911  }
 59912  
 59913  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59914  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 59915  }
 59916  
 59917  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59918  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 59919  }
 59920  
 59921  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 59922  	doTestWindowFinalize(tls, 0, ctx)
 59923  }
 59924  
 59925  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 59926  	doTestWindowFinalize(tls, 1, ctx)
 59927  }
 59928  
 59929  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 59930  	tcl.XTcl_Free(tls, pCtx)
 59931  }
 59932  
 59933  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59934  	bp := tls.Alloc(8)
 59935  	defer tls.Free(8)
 59936  
 59937  	var pNew uintptr
 59938  
 59939  	var zName uintptr
 59940  	var rc int32
 59941  
 59942  	if objc != 7 {
 59943  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 59944  		return TCL_ERROR
 59945  	}
 59946  
 59947  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59948  		return TCL_ERROR
 59949  	}
 59950  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59951  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 59952  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})))
 59953  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 59954  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 59955  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 59956  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 59957  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 59958  
 59959  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 59960  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 59961  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 59962  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 59963  
 59964  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 59965  		*(*uintptr)(unsafe.Pointer(&struct {
 59966  			f func(*libc.TLS, uintptr, int32, uintptr)
 59967  		}{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 {
 59968  			f func(*libc.TLS, uintptr, int32, uintptr)
 59969  		}{testWindowInverse})),
 59970  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 59971  	if rc != SQLITE_OK {
 59972  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59973  		return TCL_ERROR
 59974  	}
 59975  
 59976  	return TCL_OK
 59977  }
 59978  
 59979  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59980  	bp := tls.Alloc(8)
 59981  	defer tls.Free(8)
 59982  
 59983  	var rc int32
 59984  
 59985  	if !(objc != 2) {
 59986  		goto __1
 59987  	}
 59988  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59989  	return TCL_ERROR
 59990  __1:
 59991  	;
 59992  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 59993  		goto __2
 59994  	}
 59995  	return TCL_ERROR
 59996  __2:
 59997  	;
 59998  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59999  		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 {
 60000  			f func(*libc.TLS, uintptr, int32, uintptr)
 60001  		}{testWindowInverse})),
 60002  		uintptr(0))
 60003  	if !(rc != SQLITE_MISUSE) {
 60004  		goto __3
 60005  	}
 60006  	goto error
 60007  __3:
 60008  	;
 60009  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60010  		*(*uintptr)(unsafe.Pointer(&struct {
 60011  			f func(*libc.TLS, uintptr, int32, uintptr)
 60012  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60013  			f func(*libc.TLS, uintptr, int32, uintptr)
 60014  		}{testWindowInverse})),
 60015  		uintptr(0))
 60016  	if !(rc != SQLITE_MISUSE) {
 60017  		goto __4
 60018  	}
 60019  	goto error
 60020  __4:
 60021  	;
 60022  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60023  		*(*uintptr)(unsafe.Pointer(&struct {
 60024  			f func(*libc.TLS, uintptr, int32, uintptr)
 60025  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60026  			f func(*libc.TLS, uintptr, int32, uintptr)
 60027  		}{testWindowInverse})),
 60028  		uintptr(0))
 60029  	if !(rc != SQLITE_MISUSE) {
 60030  		goto __5
 60031  	}
 60032  	goto error
 60033  __5:
 60034  	;
 60035  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60036  		*(*uintptr)(unsafe.Pointer(&struct {
 60037  			f func(*libc.TLS, uintptr, int32, uintptr)
 60038  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 60039  		uintptr(0))
 60040  	if !(rc != SQLITE_MISUSE) {
 60041  		goto __6
 60042  	}
 60043  	goto error
 60044  __6:
 60045  	;
 60046  	return TCL_OK
 60047  
 60048  error:
 60049  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 60050  	return TCL_ERROR
 60051  }
 60052  
 60053  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60054  	var pInt uintptr
 60055  
 60056  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 60057  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 60058  		return
 60059  	}
 60060  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60061  	if pInt != 0 {
 60062  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60063  	}
 60064  }
 60065  
 60066  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60067  	var pInt uintptr
 60068  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60069  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60070  }
 60071  
 60072  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 60073  	var res sqlite3_int64 = int64(0)
 60074  	var pInt uintptr
 60075  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60076  	if pInt != 0 {
 60077  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60078  	}
 60079  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60080  }
 60081  
 60082  func sumintValue(tls *libc.TLS, ctx uintptr) {
 60083  	var res sqlite3_int64 = int64(0)
 60084  	var pInt uintptr
 60085  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60086  	if pInt != 0 {
 60087  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60088  	}
 60089  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60090  }
 60091  
 60092  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60093  	bp := tls.Alloc(8)
 60094  	defer tls.Free(8)
 60095  
 60096  	var rc int32
 60097  
 60098  	if objc != 2 {
 60099  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60100  		return TCL_ERROR
 60101  	}
 60102  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60103  		return TCL_ERROR
 60104  	}
 60105  
 60106  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 60107  		*(*uintptr)(unsafe.Pointer(&struct {
 60108  			f func(*libc.TLS, uintptr, int32, uintptr)
 60109  		}{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 {
 60110  			f func(*libc.TLS, uintptr, int32, uintptr)
 60111  		}{sumintInverse})),
 60112  		uintptr(0))
 60113  
 60114  	if rc != SQLITE_OK {
 60115  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60116  		return TCL_ERROR
 60117  	}
 60118  	return TCL_OK
 60119  }
 60120  
 60121  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60122  	bp := tls.Alloc(8)
 60123  	defer tls.Free(8)
 60124  
 60125  	var rc int32
 60126  
 60127  	if objc != 2 {
 60128  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60129  		return TCL_ERROR
 60130  	}
 60131  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 60132  		return TCL_ERROR
 60133  	}
 60134  
 60135  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 60136  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60137  			f func(*libc.TLS, uintptr, int32, uintptr)
 60138  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 60139  
 60140  	if rc != SQLITE_OK {
 60141  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60142  		return TCL_ERROR
 60143  	}
 60144  	return TCL_OK
 60145  }
 60146  
 60147  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 60148  	var i int32
 60149  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 60150  		FzName       uintptr
 60151  		FxProc       uintptr
 60152  		FclientData  int32
 60153  		F__ccgo_pad1 [4]byte
 60154  	}{})); i++ {
 60155  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 60156  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 60157  	}
 60158  	return TCL_OK
 60159  }
 60160  
 60161  var aObjCmd14 = [4]struct {
 60162  	FzName       uintptr
 60163  	FxProc       uintptr
 60164  	FclientData  int32
 60165  	F__ccgo_pad1 [4]byte
 60166  }{
 60167  	{FzName: ts + 39401, FxProc: 0},
 60168  	{FzName: ts + 39432, FxProc: 0},
 60169  	{FzName: ts + 39467, FxProc: 0},
 60170  	{FzName: ts + 39486, FxProc: 0},
 60171  }
 60172  
 60173  func init() {
 60174  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 60175  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 60176  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 60177  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 60178  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 60179  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 60180  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 60181  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 60182  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 60183  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 60184  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 60185  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 60186  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 60187  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 60188  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 60189  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 60190  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 60191  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 60192  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 60193  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 60194  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 60195  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 60196  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 60197  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 60198  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 60199  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 60200  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 60201  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 60202  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 60203  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 60204  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 60205  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 60206  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 60207  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 60208  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 60209  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 60210  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 60211  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 60212  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 60213  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 60214  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 60215  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 60216  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 60217  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 60218  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 60219  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 60220  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 60221  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 60222  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 60223  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 60224  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 60225  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 60226  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 60227  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 60228  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 60229  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60230  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60231  	}{db_enter}))
 60232  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60233  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60234  	}{db_leave}))
 60235  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60236  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60237  	}{sqlite3_mprintf_int}))
 60238  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60239  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60240  	}{sqlite3_mprintf_int64}))
 60241  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60242  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60243  	}{sqlite3_mprintf_long}))
 60244  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60245  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60246  	}{sqlite3_mprintf_str}))
 60247  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60248  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60249  	}{sqlite3_snprintf_str}))
 60250  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60251  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60252  	}{sqlite3_mprintf_stronly}))
 60253  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60254  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60255  	}{sqlite3_mprintf_double}))
 60256  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60257  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60258  	}{sqlite3_mprintf_scaled}))
 60259  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60260  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60261  	}{sqlite3_mprintf_hexdouble}))
 60262  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60263  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60264  	}{test_mprintf_z}))
 60265  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60266  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60267  	}{test_mprintf_n}))
 60268  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60269  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60270  	}{test_snprintf_int}))
 60271  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60272  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60273  	}{test_last_rowid}))
 60274  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60275  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60276  	}{test_exec_printf}))
 60277  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60278  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60279  	}{test_exec_hex}))
 60280  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 60281  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60282  	}{test_exec}))
 60283  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60284  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60285  	}{test_exec_nr}))
 60286  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 60287  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60288  	}{test_get_table_printf}))
 60289  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60290  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60291  	}{sqlite_test_close}))
 60292  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60293  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60294  	}{sqlite_test_close_v2}))
 60295  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60296  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60297  	}{test_create_function}))
 60298  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 60299  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60300  	}{test_create_aggregate}))
 60301  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60302  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60303  	}{test_drop_modules}))
 60304  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 60305  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60306  	}{test_register_func}))
 60307  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60308  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60309  	}{sqlite_abort}))
 60310  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60311  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60312  	}{test_bind}))
 60313  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60314  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60315  	}{test_breakpoint}))
 60316  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 60317  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60318  	}{test_key}))
 60319  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60320  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60321  	}{test_rekey}))
 60322  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 60323  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60324  	}{test_interrupt}))
 60325  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 60326  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60327  	}{delete_function}))
 60328  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 60329  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60330  	}{delete_collation}))
 60331  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 60332  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60333  	}{get_autocommit}))
 60334  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 60335  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60336  	}{test_busy_timeout}))
 60337  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 60338  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60339  	}{test_printf}))
 60340  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 60341  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60342  	}{test_io_trace}))
 60343  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 60344  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60345  	}{clang_sanitize_address}))
 60346  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60347  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60348  	}{pager_open}))
 60349  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60350  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60351  	}{pager_close}))
 60352  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60353  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60354  	}{pager_commit}))
 60355  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60356  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60357  	}{pager_rollback}))
 60358  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60359  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60360  	}{pager_stmt_begin}))
 60361  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60362  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60363  	}{pager_stmt_commit}))
 60364  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60365  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60366  	}{pager_stmt_rollback}))
 60367  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60368  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60369  	}{pager_stats}))
 60370  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60371  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60372  	}{pager_pagecount}))
 60373  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60374  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60375  	}{page_get}))
 60376  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60377  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60378  	}{page_lookup}))
 60379  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60380  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60381  	}{page_unref}))
 60382  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60383  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60384  	}{page_read}))
 60385  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60386  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60387  	}{page_write}))
 60388  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60389  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60390  	}{page_number}))
 60391  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60392  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60393  	}{pager_truncate}))
 60394  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60395  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60396  	}{fake_big_file}))
 60397  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 60398  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60399  	}{testBitvecBuiltinTest}))
 60400  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60401  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60402  	}{testPendingByte}))
 60403  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 60404  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60405  	}{faultInstallCmd}))
 60406  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60407  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60408  	}{btree_open}))
 60409  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60410  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60411  	}{btree_close}))
 60412  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60413  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60414  	}{btree_begin_transaction}))
 60415  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60416  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60417  	}{btree_pager_stats}))
 60418  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60419  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60420  	}{btree_cursor}))
 60421  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60422  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60423  	}{btree_close_cursor}))
 60424  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60425  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60426  	}{btree_next}))
 60427  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60428  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60429  	}{btree_eof}))
 60430  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60431  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60432  	}{btree_payload_size}))
 60433  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60434  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60435  	}{btree_first}))
 60436  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60437  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60438  	}{btree_varint_test}))
 60439  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60440  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60441  	}{btree_from_db}))
 60442  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60443  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60444  	}{btree_ismemdb}))
 60445  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60446  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60447  	}{btree_set_cache_size}))
 60448  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60449  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60450  	}{tcl_thread_create}))
 60451  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60452  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60453  	}{tcl_thread_wait}))
 60454  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60455  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60456  	}{tcl_thread_halt}))
 60457  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60458  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60459  	}{tcl_thread_argc}))
 60460  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60461  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60462  	}{tcl_thread_argv}))
 60463  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60464  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60465  	}{tcl_thread_colname}))
 60466  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60467  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60468  	}{tcl_thread_result}))
 60469  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60470  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60471  	}{tcl_thread_error}))
 60472  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60473  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60474  	}{tcl_thread_compile}))
 60475  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60476  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60477  	}{tcl_thread_step}))
 60478  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60479  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60480  	}{tcl_thread_finalize}))
 60481  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60482  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60483  	}{tcl_thread_swap}))
 60484  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60485  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60486  	}{tcl_thread_db_get}))
 60487  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 60488  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60489  	}{tcl_thread_db_put}))
 60490  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60491  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60492  	}{tcl_thread_stmt_get}))
 60493  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60494  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60495  	}{binarize}))
 60496  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60497  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60498  	}{test_value_overhead}))
 60499  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60500  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60501  	}{test_translate}))
 60502  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60503  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60504  	}{test_translate_selftest}))
 60505  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60506  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60507  	}{tcl_client_create}))
 60508  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60509  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60510  	}{tcl_client_wait}))
 60511  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60512  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60513  	}{tcl_client_halt}))
 60514  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60515  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60516  	}{tcl_client_argc}))
 60517  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60518  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60519  	}{tcl_client_argv}))
 60520  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60521  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60522  	}{tcl_client_colname}))
 60523  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60524  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60525  	}{tcl_client_result}))
 60526  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60527  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60528  	}{tcl_client_error}))
 60529  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60530  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60531  	}{tcl_client_compile}))
 60532  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60533  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60534  	}{tcl_client_step}))
 60535  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60536  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60537  	}{tcl_client_reset}))
 60538  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 60539  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60540  	}{tcl_client_finalize}))
 60541  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60542  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60543  	}{tcl_client_swap}))
 60544  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 60545  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 60546  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 60547  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60548  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60549  	}{test_shutdown}))
 60550  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 60551  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60552  	}{test_initialize}))
 60553  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 60554  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60555  	}{test_config}))
 60556  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 60557  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60558  	}{test_enter_static_mutex}))
 60559  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60560  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60561  	}{test_leave_static_mutex}))
 60562  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60563  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60564  	}{test_enter_db_mutex}))
 60565  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60566  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60567  	}{test_leave_db_mutex}))
 60568  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60569  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60570  	}{test_alloc_mutex}))
 60571  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60572  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60573  	}{test_install_mutex_counters}))
 60574  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60575  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60576  	}{test_read_mutex_counters}))
 60577  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60578  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60579  	}{test_clear_mutex_counters}))
 60580  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 60581  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 60582  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 60583  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 60584  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 60585  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 60586  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 60587  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 60588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 60589  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 60590  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 60591  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 60592  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 60593  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 60594  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 60595  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 60596  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 60597  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 60598  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 60599  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 60600  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 60601  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 60602  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 60603  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 60604  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 60605  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 60606  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 60607  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 60608  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 60609  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 60610  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 60611  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 60612  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 60613  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 60614  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 60615  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 60616  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 60617  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 60618  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 60619  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 60620  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 60621  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 60622  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 60623  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 60624  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 60625  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 60626  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 60627  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 60628  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 60629  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 60630  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 60631  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 60632  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 60633  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 60634  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 60635  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 60636  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 60637  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 60638  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 60639  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 60640  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 60641  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 60642  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 60643  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 60644  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 60645  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 60646  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 60647  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 60648  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 60649  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 60650  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 60651  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 60652  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 60653  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 60654  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 60655  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 60656  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 60657  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 60658  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 60659  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 60660  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 60661  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 60662  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 60663  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 60664  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 60665  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 60666  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 60667  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 60668  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 60669  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 60670  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 60671  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 60672  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 60673  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 60674  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 60675  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 60676  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 60677  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 60678  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 60679  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 60680  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 60681  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 60682  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 60683  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 60684  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 60685  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 60686  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 60687  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 60688  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 60689  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 60690  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 60691  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 60692  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 60693  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 60694  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 60695  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 60696  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 60697  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 60698  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 60699  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 60700  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 60701  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 60702  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 60703  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 60704  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 60705  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 60706  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 60707  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 60708  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 60709  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 60710  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 60711  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 60712  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 60713  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 60714  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 60715  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 60716  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 60717  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 60718  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 60719  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 60720  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 60721  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 60722  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 60723  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 60724  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 60725  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 60726  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 60727  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 60728  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 60729  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 60730  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 60731  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 60732  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 60733  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 60734  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 60735  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 60736  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 60737  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 60738  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 60739  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 60740  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 60741  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 60742  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 60743  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 60744  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 60745  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 60746  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 60747  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 60748  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60749  		f func(*libc.TLS, uintptr, int32) uintptr
 60750  	}{sqlite3.Xsqlite3_column_text}))
 60751  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 60752  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 60753  		f func(*libc.TLS, uintptr, int32) uintptr
 60754  	}{sqlite3.Xsqlite3_column_name}))
 60755  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 60756  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60757  		f func(*libc.TLS, uintptr, int32) int32
 60758  	}{sqlite3.Xsqlite3_column_int}))
 60759  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 60760  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 60761  		f func(*libc.TLS, uintptr, int32) int32
 60762  	}{sqlite3.Xsqlite3_column_bytes}))
 60763  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 60764  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60765  		f func(*libc.TLS, uintptr, int32) uintptr
 60766  	}{sqlite3.Xsqlite3_column_decltype}))
 60767  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 60768  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 60769  		f func(*libc.TLS, uintptr, int32) uintptr
 60770  	}{sqlite3.Xsqlite3_column_database_name}))
 60771  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 60772  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60773  		f func(*libc.TLS, uintptr, int32) uintptr
 60774  	}{sqlite3.Xsqlite3_column_table_name}))
 60775  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 60776  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 60777  		f func(*libc.TLS, uintptr, int32) uintptr
 60778  	}{sqlite3.Xsqlite3_column_origin_name}))
 60779  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 60780  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60781  		f func(*libc.TLS, uintptr, int32) int32
 60782  	}{sqlite3.Xsqlite3_column_bytes16}))
 60783  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 60784  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 60785  		f func(*libc.TLS, uintptr, int32) uintptr
 60786  	}{sqlite3.Xsqlite3_column_text16}))
 60787  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 60788  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60789  		f func(*libc.TLS, uintptr, int32) uintptr
 60790  	}{sqlite3.Xsqlite3_column_name16}))
 60791  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 60792  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 60793  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60794  		f func(*libc.TLS, uintptr, int32) uintptr
 60795  	}{sqlite3.Xsqlite3_column_decltype16}))
 60796  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 60797  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 60798  		f func(*libc.TLS, uintptr, int32) uintptr
 60799  	}{sqlite3.Xsqlite3_column_database_name16}))
 60800  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 60801  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60802  		f func(*libc.TLS, uintptr, int32) uintptr
 60803  	}{sqlite3.Xsqlite3_column_table_name16}))
 60804  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 60805  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 60806  		f func(*libc.TLS, uintptr, int32) uintptr
 60807  	}{sqlite3.Xsqlite3_column_origin_name16}))
 60808  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 60809  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 60810  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 60811  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 60812  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 60813  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 60814  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 60815  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 60816  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 60817  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 60818  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 60819  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 60820  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 60821  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 60822  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 60823  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 60824  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 60825  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 60826  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 60827  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 60828  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 60829  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 60830  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 60831  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 60832  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 60833  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 60834  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 60835  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 60836  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 60837  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 60838  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 60839  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 60840  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 60841  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 60842  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 60843  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 60844  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 60845  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 60846  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 60847  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 60848  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 60849  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 60850  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 60851  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 60852  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 60853  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 60854  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 60855  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 60856  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 60857  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 60858  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 60859  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 60860  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 60861  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 60862  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 60863  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 60864  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 60865  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 60866  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 60867  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 60868  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 60869  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 60870  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 60871  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 60872  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 60873  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 60874  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 60875  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 60876  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 60877  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 60878  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 60879  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 60880  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 60881  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 60882  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 60883  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 60884  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 60885  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 60886  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 60887  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 60888  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 60889  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 60890  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 60891  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 60892  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 60893  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 60894  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 60895  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 60896  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 60897  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 60898  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 60899  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 60900  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 60901  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 60902  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 60903  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 60904  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 60905  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 60906  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 60907  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 60908  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 60909  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 60910  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 60911  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 60912  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 60913  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 60914  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 60915  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 60916  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 60917  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 60918  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 60919  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 60920  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 60921  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 60922  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 60923  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 60924  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 60925  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 60926  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 60927  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 60928  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 60929  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 60930  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 60931  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 60932  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 60933  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 60934  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 60935  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 60936  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 60937  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60938  		f func(*libc.TLS, uintptr, int32, int32) int32
 60939  	}{ts_open}))
 60940  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 60941  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60942  		f func(*libc.TLS, uintptr, int32) int32
 60943  	}{ts_access}))
 60944  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60945  		f func(*libc.TLS, uintptr, size_t) uintptr
 60946  	}{ts_getcwd}))
 60947  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60948  		f func(*libc.TLS, uintptr, uintptr) int32
 60949  	}{ts_stat}))
 60950  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60951  		f func(*libc.TLS, int32, uintptr) int32
 60952  	}{ts_fstat}))
 60953  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60954  		f func(*libc.TLS, int32, off_t) int32
 60955  	}{ts_ftruncate}))
 60956  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60957  		f func(*libc.TLS, int32, int32, uintptr) int32
 60958  	}{ts_fcntl}))
 60959  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60960  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60961  	}{ts_read}))
 60962  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60963  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60964  	}{ts_pread}))
 60965  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60966  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60967  	}{ts_pread64}))
 60968  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60969  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60970  	}{ts_write}))
 60971  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60972  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60973  	}{ts_pwrite}))
 60974  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60975  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60976  	}{ts_pwrite64}))
 60977  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60978  		f func(*libc.TLS, int32, mode_t) int32
 60979  	}{ts_fchmod}))
 60980  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60981  		f func(*libc.TLS, int32, off_t, off_t) int32
 60982  	}{ts_fallocate}))
 60983  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 60984  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 60985  	}{ts_mmap}))
 60986  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 60987  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 60988  	}{ts_mremap}))
 60989  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 60990  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 60991  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 60992  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 60993  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 60994  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 60995  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 60996  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 60997  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 60998  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 60999  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 61000  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 61001  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 61002  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 61003  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 61004  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 61005  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 61006  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 61007  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 61008  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 61009  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 61010  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 61011  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 61012  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 61013  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 61014  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 61015  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 61016  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 61017  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 61018  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 61019  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 61020  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 61021  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 61022  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 61023  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 61024  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 61025  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 61026  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 61027  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 61028  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 61029  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 61030  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 61031  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 61032  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 61033  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 61034  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 61035  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 61036  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 61037  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 61038  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 61039  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 61040  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 61041  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 61042  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 61043  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 61044  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 61045  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 61046  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 61047  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 61048  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 61049  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 61050  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 61051  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 61052  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 61053  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 61054  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 61055  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 61056  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 61057  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 61058  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 61059  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 61060  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 61061  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 61062  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 61063  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 61064  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 61065  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 61066  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 61067  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 61068  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 61069  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 61070  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 61071  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 61072  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 61073  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 61074  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 61075  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 61076  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 61077  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 61078  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 61079  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 61080  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 61081  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 61082  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 61083  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 61084  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 61085  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 61086  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 61087  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 61088  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 61089  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 61090  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 61091  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 61092  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 61093  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 61094  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 61095  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 61096  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 61097  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 61098  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 61099  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 61100  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 61101  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 61102  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 61103  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 61104  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 61105  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 61106  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 61107  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 61108  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 61109  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 61110  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 61111  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 61112  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 61113  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 61114  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 61115  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 61116  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 61117  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 61118  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 61119  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 61120  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 61121  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 61122  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 61123  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 61124  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 61125  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 61126  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 61127  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 61128  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 61129  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 61130  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 61131  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 61132  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 61133  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 61134  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 61135  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 61136  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 61137  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 61138  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 61139  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 61140  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 61141  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 61142  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 61143  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 61144  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 61145  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 61146  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 61147  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 61148  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 61149  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 61150  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 61151  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 61152  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 61153  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 61154  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 61155  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 61156  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 61157  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 61158  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 61159  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 61160  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 61161  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 61162  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 61163  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 61164  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 61165  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 61166  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 61167  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 61168  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 61169  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 61170  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 61171  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 61172  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 61173  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 61174  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 61175  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 61176  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 61177  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 61178  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 61179  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 61180  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 61181  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 61182  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 61183  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 61184  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 61185  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 61186  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 61187  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 61188  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 61189  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 61190  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 61191  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 61192  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 61193  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 61194  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 61195  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 61196  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 61197  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 61198  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 61199  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 61200  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 61201  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 61202  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 61203  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 61204  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 61205  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 61206  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 61207  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 61208  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 61209  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 61210  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 61211  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 61212  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 61213  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 61214  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 61215  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 61216  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 61217  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 61218  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 61219  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 61220  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 61221  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 61222  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 61223  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 61224  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 61225  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 61226  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 61227  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 61228  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 61229  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 61230  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 61231  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 61232  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 61233  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 61234  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 61235  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 61236  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 61237  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 61238  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 61239  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 61240  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 61241  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 61242  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 61243  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 61244  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 61245  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 61246  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 61247  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 61248  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 61249  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 61250  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 61251  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 61252  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 61253  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 61254  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 61255  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 61256  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 61257  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 61258  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 61259  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 61260  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 61261  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 61262  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 61263  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 61264  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 61265  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 61266  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 61267  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 61268  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 61269  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 61270  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 61271  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 61272  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 61273  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 61274  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 61275  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 61276  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 61277  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 61278  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 61279  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 61280  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 61281  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 61282  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 61283  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 61284  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 61285  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 61286  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 61287  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 61288  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 61289  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 61290  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 61291  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 61292  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 61293  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 61294  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 61295  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 61296  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 61297  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 61298  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 61299  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 61300  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 61301  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 61302  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 61303  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 61304  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 61305  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 61306  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 61307  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 61308  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 61309  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 61310  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 61311  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 61312  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 61313  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 61314  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 61315  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 61316  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 61317  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 61318  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 61319  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 61320  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 61321  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 61322  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 61323  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 61324  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 61325  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 61326  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 61327  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 61328  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 61329  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 61330  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 61331  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 61332  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 61333  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 61334  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 61335  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 61336  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 61337  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 61338  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 61339  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 61340  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 61341  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 61342  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 61343  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 61344  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 61345  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 61346  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 61347  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 61348  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 61349  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 61350  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 61351  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 61352  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 61353  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 61354  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 61355  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 61356  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 61357  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 61358  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 61359  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 61360  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 61361  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 61362  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 61363  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 61364  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 61365  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 61366  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 61367  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 61368  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 61369  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 61370  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 61371  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 61372  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 61373  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 61374  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 61375  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 61376  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 61377  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 61378  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 61379  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 61380  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 61381  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 61382  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 61383  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 61384  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 61385  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 61386  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 61387  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 61388  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 61389  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 61390  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 61391  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 61392  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 61393  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 61394  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 61395  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 61396  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 61397  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 61398  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 61399  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 61400  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 61401  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 61402  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 61403  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 61404  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 61405  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 61406  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 61407  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 61408  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 61409  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 61410  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 61411  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 61412  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 61413  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 61414  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 61415  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 61416  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 61417  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 61418  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 61419  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 61420  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 61421  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 61422  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 61423  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 61424  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 61425  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 61426  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 61427  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 61428  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 61429  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 61430  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 61431  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 61432  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 61433  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 61434  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 61435  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 61436  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 61437  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 61438  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 61439  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 61440  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 61441  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 61442  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 61443  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 61444  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 61445  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 61446  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 61447  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 61448  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 61449  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 61450  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 61451  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 61452  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 61453  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 61454  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 61455  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 61456  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 61457  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 61458  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 61459  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 61460  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 61461  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 61462  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 61463  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 61464  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 61465  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 61466  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 61467  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 61468  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 61469  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 61470  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 61471  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 61472  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 61473  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 61474  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 61475  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 61476  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 61477  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 61478  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 61479  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 61480  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 61481  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 61482  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 61483  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 61484  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 61485  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 61486  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 61487  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 61488  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 61489  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 61490  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 61491  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 61492  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 61493  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 61494  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 61495  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 61496  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 61497  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 61498  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 61499  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 61500  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 61501  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 61502  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 61503  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 61504  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 61505  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 61506  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 61507  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 61508  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 61509  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 61510  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 61511  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 61512  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 61513  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 61514  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 61515  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 61516  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 61517  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 61518  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 61519  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 61520  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 61521  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 61522  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 61523  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 61524  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 61525  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 61526  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 61527  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 61528  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 61529  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 61530  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 61531  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 61532  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 61533  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 61534  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 61535  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 61536  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 61537  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 61538  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 61539  }
 61540  
 61541  var ts1 = "%s\x00internal error!\x00SELECT * FROM main.%Q WHERE sample()\x00expert\x00PRAGMA table_xinfo=%Q\x00main\x00binary\x00, \x00%Q\x00 COLLATE %Q\x00 COLLATE %s\x00 DESC\x00PRAGMA index_list=%Q\x00PRAGMA index_xInfo=%Q\x00%s_idx_%08x\x00SELECT count(*) FROM sqlite_schema WHERE name=%Q AND type in ('index','table','view')\x00CREATE INDEX \"%w\" ON \"%w\"(%s)\x00CREATE INDEX %s ON %s(%s)\x00EXPLAIN QUERY PLAN %s\x00 USING INDEX \x00 USING COVERING INDEX \x00%s\n\x00%s;\n\x00SELECT 'CREATE TEMP' || substr(sql, 7) FROM sqlite_schema WHERE tbl_name = %Q AND type IN ('table', 'trigger') ORDER BY type;\x00ALTER TABLE temp.%Q RENAME TO %Q\x00INSERT INTO %Q VALUES(\x00%s?\x00\x00)\x00UPDATE %Q SET \x00%s%Q=?\x00DELETE FROM %Q\x00t592690916721053953805701627921227776\x00DROP TABLE t592690916721053953805701627921227776\x00SELECT type, name, sql, 1 FROM sqlite_schema WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%%'  UNION ALL SELECT type, name, sql, 2 FROM sqlite_schema WHERE type = 'trigger'  AND tbl_name IN(SELECT name FROM sqlite_schema WHERE type = 'view') ORDER BY 4, 1\x00CREATE TABLE x(\x00%s%Q COLLATE %s\x00CREATE VIRTUAL TABLE %Q USING expert(%Q)\x00SELECT max(i.seqno) FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l,   pragma_index_info(l.name) AS i WHERE s.type = 'table'\x00%sx.%Q IS rem(%d, x.%Q) COLLATE %s\x00%s%d\x00SELECT %s FROM %Q x ORDER BY %s\x00SELECT %s FROM temp.t592690916721053953805701627921227776 x ORDER BY %s\x00%d\x00 %d\x00DROP TABLE IF EXISTS temp.t592690916721053953805701627921227776\x00CREATE TABLE temp.t592690916721053953805701627921227776 AS SELECT * FROM %Q\x00SELECT s.rowid, s.name, l.name FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l WHERE s.type = 'table'\x00SELECT name, coll FROM pragma_index_xinfo(?) WHERE key\x00INSERT INTO sqlite_stat1 VALUES(?, ?, ?)\x00ANALYZE; PRAGMA writable_schema=1\x00rem\x00sample\x00ANALYZE sqlite_schema\x00:memory:\x00SELECT sql FROM sqlite_schema WHERE name NOT LIKE 'sqlite_%%' AND sql NOT LIKE 'CREATE VIRTUAL %%'\x00Cannot find a unique index name to propose.\x00%s;%s%s\n\x00 -- stat1: \x00no such handle: \x00sql\x00TABLE\x00analyze\x00count\x00report\x00STMT EREPORT\x00destroy\x00SUBCOMMAND ...\x00sub-command\x00indexes\x00plan\x00candidates\x00DB\x00sqlite3expert%d\x00out of memory\x00sqlite3_expert_new\x00SQLITE_DONE\x00SQLITE_ERROR\x00SQLITE_OK\x00SELECT fts5(?1)\x00error: \x00fts5_api_ptr\x00f5t_2_%lld\x00xColumnCount\x00xRowCount\x00xColumnTotalSize\x00COL\x00xTokenize\x00TEXT SCRIPT\x00xPhraseCount\x00xPhraseSize\x00PHRASE\x00xInstCount\x00xInst\x00IDX\x00xRowid\x00xColumnText\x00xColumnSize\x00xQueryPhrase\x00PHRASE SCRIPT\x00xSetAuxdata\x00VALUE\x00xGetAuxdata\x00CLEAR\x00xSetAuxdataInt\x00INTEGER\x00xGetAuxdataInt\x00xPhraseForeach\x00IPHRASE COLVAR OFFVAR SCRIPT\x00xPhraseColumnForeach\x00IPHRASE COLVAR SCRIPT\x00SUB-COMMAND\x00f5t_%lld\x00bytearray\x00boolean\x00double\x00wideInt\x00int\x00DB NAME SCRIPT\x00?-subst? DB NAME TEXT\x00-subst\x00unrecognized option: \x00no such tokenizer: \x00error in tokenizer.xCreate()\x00error in tokenizer.xTokenize()\x00document\x00aux\x00query\x00prefixquery\x00invalid\x00-colocated\x00sqlite3_fts5_token may only be used by tokenizer callback\x00?-colocated? TEXT START END\x00error in fts5_api.xCreateTokenizer()\x00NSLOT TOKEN\x00sqlite3_fts5_create_tokenizer\x00sqlite3_fts5_token\x00sqlite3_fts5_tokenize\x00sqlite3_fts5_create_function\x00sqlite3_fts5_may_be_corrupt\x00sqlite3_fts5_token_hash\x00sqlite3_fts5_register_matchinfo\x00sqlite3_fts5_register_fts5tokenize\x00unrecognized matchinfo flag: %c\x00pcx\x00matchinfo\x00CREATE TABLE x(input HIDDEN, token, start, end, position)\x00fts5tokenize\x00apndvfs\x00Start-Of-SQLite3-\x00apnd(%lld)/%z\x00SQLite format 3\x00%s: cost must be between 1 and %d\x00%s: maximum string length is %d\x00%s: iLang must be between 0 and %d\x00?\x00SELECT * FROM %Q.%Q\x00%s: %s\x00%s: %s has %d columns, expected 4\x00vocabulary_table\x00vocabulary_word\x00vocabulary_language\x00edit_distances\x00unrecognized argument: [%s]\n\x00no edit_distances table specified\x00CREATE TABLE x(word,distance,language,command HIDDEN,nword HIDDEN)\x000123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz~\x00SELECT \"%w\" FROM \"%w\"\x00 WHERE \"%w\">=?1 AND \"%w\"=?2 ORDER BY 1\x00SELECT \"%w\" FROM \"%w\" WHERE \"%w\">=?1 ORDER BY 1\x00*\x00DELETE from %s is not allowed\x00UPDATE of %s is not allowed\x00INSERT INTO %s allowed for column [command] only\x00approximate_match\x00int32\x00int64\x00char*\x00CREATE TABLE x(value,pointer hidden,count hidden,ctype hidden)\x00carray-bind\x00carray\x00unknown datatype: %Q\x00inttoptr\x00cksmvfs\x00ZV-\x00checksum fault offset %lld of \"%s\"\x00checksum_verification\x00enable%\x00yes\x00on\x00page_size\x00cksm/%z\x00verify_checksum\x00tablename\x00idcolumn\x00parentcolumn\x00CREATE TABLE x(id,depth,root HIDDEN,tablename HIDDEN,idcolumn HIDDEN,parentcolumn HIDDEN)\x00SELECT \"%w\".\"%w\" FROM \"%w\" WHERE \"%w\".\"%w\"=?1\x00transitive_closure\x00rb\x00cannot open '%s' for reading\x00line %d: unescaped %c character\x00line %d: unterminated %c-quoted field\n\x00more than one '%s' parameter\x00true\x00no\x00off\x00false\x00header\x00more than one 'header' parameter\x00testflags\x00columns\x00more than one 'columns' parameter\x00column= value must be positive\x00bad parameter: '%s'\x00must specify either filename= or data= but not both\x00%sc%d TEXT\x00,\x00%s\"%w\" TEXT\x00bad schema: '%s' - %s\x00filename\x00data\x00schema\x00csv\x00csv_wr\x00decimal_sum\x00decimal\x00decimal_cmp\x00decimal_add\x00decimal_sub\x00decimal_mul\x00 \x00eval\x00CREATE TABLE x(addr,opcode,p1,p2,p3,p4,p5,comment,sql HIDDEN)\x00EXPLAIN %s\x00explain\x00wb\x00wrong number of arguments to function writefile()\x00failed to create symlink: %s\x00failed to create directory: %s\x00failed to write file: %s\x00CREATE TABLE x(name,mode,mtime,data,path HIDDEN,dir HIDDEN)\x00cannot read directory: %s\x00%s/%s\x00cannot stat file: %s\x00table function fsdir requires an argument\x00table function fsdir requires a non-NULL argument\x00fsdir\x00readfile\x00writefile\x00lsmode\x00%s: ruleset must be between 0 and %d\x00%s: wrong number of CREATE VIRTUAL TABLE arguments\x00CREATE TABLE x(word,distance,ruleset)\x00fuzzer\x00ieee754(%lld,%d)\x00ieee754\x00ieee754_mantissa\x00ieee754_exponent\x00ieee754_to_blob\x00ieee754_from_blob\x00BEGIN; SELECT * FROM %s%q%ssqlite_schema\x00'\x00'.\x00PRAGMA %s%q%spage_size\x00sqlite3_mmap_warm_cache: Warmed up %d pages of %s\x00END\x00AND (%s)\x00collate \"%w\"\x00SELECT %s FROM %s WHERE %s>=(?1 || ?2) %s   AND %s<=(?1 || char(1114111)) %s   %s ORDER BY 1 %s ASC LIMIT 1\x00next_char\x00NULL\x00is\x00not\x00in(\x00in(select\x00in(with\x00?,?,?\x002nd argument to percentile() is not a number between 0.0 and 100.0\x002nd argument to percentile() is not the same for all input rows\x001st argument to percentile() is not numeric\x00Inf input to percentile()\x00percentile\x00CREATE TABLE prefixes(prefix TEXT, original_string TEXT HIDDEN)\x00prefixes\x00prefix_length\x00vn\x00ix\x00cn\x00op\x00ux\x00rhs\x00a\x00b\x00c\x00d\x00e\x00flags\x00CREATE TABLE x( vn TEXT, ix INT, cn TEXT, op INT, ux BOOLEAN, rhs TEXT, a, b, c, d, e, flags INT HIDDEN)\x00%lld\x00%!f\x00x'\x00%02x\x00nConstraint,%d,,,,\n\x00aConstraint,%d,%s,%d,%d,\x00\n\x00nOrderBy,%d,,,,\n\x00aOrderBy,%d,%s,%d,,\n\x00rowid\x00sqlite3_vtab_distinct,%d,,,,\n\x00idxFlags,%d,,,,\n\x00colUsed,%d,,,,\n\x00idxNum,%d,,,,\n\x00orderByConsumed,%d,,,,\n\x00qpvtab\x00unknown \\ escape\x00afnrtv\\()*.+?[$^{|}]\x00\a\f\n\r\t\v\x00unmatched '('\x00'*' without operand\x00'+' without operand\x00'?' without operand\x00'{m,n}' without operand\x00unmatched '{'\x00n less than m in '{m,n}'\x00both m and n are zero in '{m,n}'\x00POSIX character classes not supported\x00unclosed '['\x00unrecognized character\x00regexp\x00regexpi\x00remember\x00CREATE TABLE x(value,start hidden,stop hidden,step hidden)\x00first argument to \"generate_series()\" missing or unusable\x00generate_series() requires SQLite 3.8.12 or later\x00generate_series\x00.ABCDHLRMY9 ?\x00non-ASCII input to editdist()\x00NULL input to editdist()\x00SELECT iLang, cFrom, cTo, iCost FROM \"%w\" WHERE iLang>=0 ORDER BY iLang\x00editdist3\x00DROP TABLE IF EXISTS \"%w\".\"%w_vocab\"\x00CREATE TABLE x(word,rank,distance,langid, score, matchlen, phonehash HIDDEN, top HIDDEN, scope HIDDEN, srchcnt HIDDEN, soundslike HIDDEN, command HIDDEN)\x00CREATE TABLE IF NOT EXISTS \"%w\".\"%w_vocab\"(\n  id INTEGER PRIMARY KEY,\n  rank INT,\n  langid INT,\n  word TEXT,\n  k1 TEXT,\n  k2 TEXT\n);\n\x00CREATE INDEX IF NOT EXISTS \"%w\".\"%w_vocab_index_langid_k2\" ON \"%w_vocab\"(langid,k2);\x00edit_cost_table=\x00bad argument to spellfix1(): \"%s\"\x00SELECT id, word, rank, coalesce(k1,word)  FROM \"%w\".\"%w_vocab\" WHERE langid=%d AND k2>=?1 AND k2<?2\x00SELECT word, rank, NULL, langid, id FROM \"%w\".\"%w_vocab\"%s\x00 WHERE rowid=?\x00ROLLBACK\x00IGNORE\x00ABORT\x00REPLACE\x00DELETE FROM \"%w\".\"%w_vocab\"  WHERE id=%lld\x00NOT NULL constraint failed: %s.word\x00reset\x00null\x00unknown value for %s.command: \"%w\"\x00INSERT INTO \"%w\".\"%w_vocab\"(rank,langid,word,k1,k2) VALUES(%d,%d,%Q,nullif(%Q,%Q),%Q)\x00INSERT OR %s INTO \"%w\".\"%w_vocab\"(id,rank,langid,word,k1,k2) VALUES(%lld,%d,%d,%Q,nullif(%Q,%Q),%Q)\x00UPDATE OR %s \"%w\".\"%w_vocab\" SET id=%lld, rank=%d, langid=%d, word=%Q, k1=nullif(%Q,%Q), k2=%Q WHERE id=%lld\x00ALTER TABLE \"%w\".\"%w_vocab\" RENAME TO \"%w_vocab\"\x00spellfix1_translit\x00spellfix1_editdist\x00spellfix1_phonehash\x00spellfix1_scriptcode\x00spellfix1\x00922337203685477580\x00tointeger\x00toreal\x00sql error: %s\x00_rowid_\x00integer\x00no such rowid table: %s%s%s\x00.\x00SELECT group_concat(quote(name) || '.' || quote(type)) FROM pragma_table_info(?, ?)\x00source table schema mismatch\x00swarmvtab: no such SQL parameter: %s\x00maxopen\x00swarmvtab: illegal maxopen value\x00missing\x00swarmvtab: duplicate \"missing\" option\x00SELECT \"%w\"(?%s)\x00,?\x00openclose\x00swarmvtab: duplicate \"openclose\" option\x00SELECT \"%w\"(?,?%s)\x00swarmvtab: unrecognized option: %s\x00SELECT \"%w\"(?)\x00swarmvtab: parse error: %s\x00swarmvtab\x00unionvtab\x00temp\x00%s tables must be created in TEMP schema\x00wrong number of arguments for %s\x00SELECT * FROM (%z) ORDER BY 3\x00rowid range mismatch error\x00no source tables configured\x00SELECT 'CREATE TABLE xyz('    || group_concat(quote(name) || ' ' || type, ', ')    || ')',max((cid+1) * (type='INTEGER' COLLATE nocase AND pk=1))-1 FROM pragma_table_info(%Q, ?)\x00SELECT rowid, * FROM %Q %s %lld\x00WHERE _rowid_ <=\x00-- \x00%z%sSELECT rowid, * FROM %s%q%s%Q\x00 UNION ALL \x00%z WHERE rowid=%lld\x00WHERE\x00%z WHERE rowid>=%lld\x00AND\x00%z %s rowid<=%lld\x00CREATE TABLE x(value)\x00wholenumber\x00rbu_delta\x00step\x00close\x00create_rbu_delta\x00savestate\x00dbMain_eval\x00SQL\x00bp_progress\x00db\x00RBU\x00state\x00progress\x00close_no_error\x00temp_size_limit\x00LIMIT\x00temp_size\x00dbRbu_eval\x00METHOD\x00method\x00 - \x00oal\x00move\x00checkpoint\x00done\x00error\x00NAME TARGET-DB RBU-DB ?STATE-DB?\x00NAME TARGET-DB ?STATE-DB?\x00?-default? NAME PARENT\x00NAME\x00sqlite3rbu_db(0, 0)!=0\x00sqlite3rbu\x00sqlite3rbu_vacuum\x00sqlite3rbu_create_vfs\x00sqlite3rbu_destroy_vfs\x00sqlite3rbu_internal_test\x00%p\x00zero\x00user\x00user_is_zero\x00box\x00DB SCRIPT\x00partly\x00fully\x00aParam\x00aCoord\x00anQueue\x00iLevel\x00mxLevel\x00iRowid\x00rParentScore\x00eParentWithin\x00value\x00qbox\x00register_box_geom\x00register_box_query\x00DB SQL\x00error in sql_exec_changeset()\x00sqlite3session_streams\x00attach\x00changeset\x00delete\x00enable\x00BOOL\x00indirect\x00isempty\x00table_filter\x00SCRIPT\x00patchset\x00diff\x00FROMDB TBL\x00memory_used\x00changeset_size\x00object_config_size\x00CMD DB-HANDLE DB-NAME\x00n\x00i\x00f\x00t\x00FOREIGN_KEY\x00INSERT\x00UPDATE\x00DELETE\x00DATA\x00NOTFOUND\x00CONFLICT\x00CONSTRAINT\x00OMIT\x00-nosavepoint\x00-invert\x00?-nosavepoint? ?-inverse? DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET\x00CHANGESET\x00LEFT RIGHT\x00-next\x00?-next? ?-invert? VARNAME CHANGESET SCRIPT\x00configure\x00REBASE-BLOB\x00rebase\x00OP VALUE\x00strm_size\x00sqlite3session\x00sqlite3session_foreach\x00sqlite3changeset_invert\x00sqlite3changeset_concat\x00sqlite3changeset_apply\x00sqlite3changeset_apply_v2\x00sqlite3changeset_apply_replace_all\x00sql_exec_changeset\x00sqlite3rebaser_create\x00sqlite3session_config\x00incrblob\x00incrblob_%d\x00sqlite_unlock_notify_arg\x00sqlite_unlock_notify_argcount\x00SQLITE_COPY\x00SQLITE_CREATE_INDEX\x00SQLITE_CREATE_TABLE\x00SQLITE_CREATE_TEMP_INDEX\x00SQLITE_CREATE_TEMP_TABLE\x00SQLITE_CREATE_TEMP_TRIGGER\x00SQLITE_CREATE_TEMP_VIEW\x00SQLITE_CREATE_TRIGGER\x00SQLITE_CREATE_VIEW\x00SQLITE_DELETE\x00SQLITE_DROP_INDEX\x00SQLITE_DROP_TABLE\x00SQLITE_DROP_TEMP_INDEX\x00SQLITE_DROP_TEMP_TABLE\x00SQLITE_DROP_TEMP_TRIGGER\x00SQLITE_DROP_TEMP_VIEW\x00SQLITE_DROP_TRIGGER\x00SQLITE_DROP_VIEW\x00SQLITE_INSERT\x00SQLITE_PRAGMA\x00SQLITE_READ\x00SQLITE_SELECT\x00SQLITE_TRANSACTION\x00SQLITE_UPDATE\x00SQLITE_ATTACH\x00SQLITE_DETACH\x00SQLITE_ALTER_TABLE\x00SQLITE_REINDEX\x00SQLITE_ANALYZE\x00SQLITE_CREATE_VTABLE\x00SQLITE_DROP_VTABLE\x00SQLITE_FUNCTION\x00SQLITE_SAVEPOINT\x00SQLITE_RECURSIVE\x00????\x00SQLITE_DENY\x00SQLITE_IGNORE\x00RELEASE _tcl_transaction\x00COMMIT\x00ROLLBACK TO _tcl_transaction ; RELEASE _tcl_transaction\x00option\x00?CALLBACK?\x00?DATABASE? FILENAME\x00cannot open target database: \x00backup failed: \x00CALLBACK\x00cache option ?arg?\x00flush\x00size\x00size n\x00cannot convert \"\x00\" to integer\x00bad option \"\x00\": must be flush or size\x00NAME SCRIPT\x00?OPTION? ?BOOLEAN?\x00unknown config option: \"\x00\"\x00CONFLICT-ALGORITHM TABLE FILENAME ?SEPARATOR? ?NULLINDICATOR?\x00\t\x00Error: non-null separator required for copy\x00rollback\x00abort\x00fail\x00ignore\x00replace\x00Error: \"\x00\", conflict-algorithm must be one of: rollback, abort, fail, ignore, or replace\x00SELECT * FROM '%q'\x00Error: no such table: \x00Error: \x00Error: can't malloc()\x00INSERT OR %q INTO '%q' VALUES(?\x00Error: cannot open file: \x00BEGIN\x00Error: %s line %d: expected %d columns of data but found %d\x00, failed while processing line: \x00?DATABASE? VALUE\x00-maxsize\x00-readonly\x00unknown option: \x00unable to set MEMDB content\x00extension loading is turned off at compile-time\x00-withoutnulls\x00unknown option: \"\x00?OPTIONS? SQL ?ARRAY-NAME? ?SCRIPT?\x00NAME ?SWITCHES? SCRIPT\x00-argcount\x00option requires an argument: \x00number of arguments must be non-negative\x00-deterministic\x00-directonly\x00-innocuous\x00-returntype\x00real\x00text\x00blob\x00any\x00type\x00\": must be -argcount, -deterministic, -directonly, -innocuous, or -returntype\x00?-readonly? ?DB? TABLE COLUMN ROWID\x00NULLVALUE\x00N CALLBACK\x00KEY\x00cannot open source database: \x00restore failed: \x00restore failed: source database busy\x00?DATABASE?\x00(step|sort|autoindex)\x00sort\x00autoindex\x00vmstep\x00bad argument: should be autoindex, step, sort or vmstep\x00MILLISECONDS\x00?CALLBACK? ?MASK?\x00trace type\x00SAVEPOINT _tcl_transaction\x00[TYPE] SCRIPT\x00transaction type\x00BEGIN EXCLUSIVE\x00BEGIN IMMEDIATE\x00?SCRIPT?\x00SUB-COMMAND ?ARGS?\x00hook ?SCRIPT?\x00INDEX\x00-use-legacy-prepare\x00-last-stmt-ptr\x00unknown argument: \x00authorizer\x00backup\x00bind_fallback\x00busy\x00cache\x00changes\x00collate\x00collation_needed\x00commit_hook\x00complete\x00config\x00copy\x00deserialize\x00enable_load_extension\x00errorcode\x00erroroffset\x00exists\x00function\x00interrupt\x00last_insert_rowid\x00nullvalue\x00onecolumn\x00preupdate\x00profile\x00rekey\x00restore\x00rollback_hook\x00serialize\x00status\x00timeout\x00total_changes\x00trace\x00trace_v2\x00transaction\x00unlock_notify\x00update_hook\x00version\x00wal_hook\x00defensive\x00dqs_ddl\x00dqs_dml\x00enable_fkey\x00enable_qpsg\x00enable_trigger\x00enable_view\x00fts3_tokenizer\x00legacy_alter_table\x00legacy_file_format\x00load_extension\x00no_ckpt_on_close\x00reset_database\x00trigger_eqp\x00trusted_schema\x00writable_schema\x00statement\x00row\x00deferred\x00exclusive\x00immediate\x00depth\x00hook\x00new\x00old\x00HANDLE ?FILENAME? ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nofollow BOOLEAN? ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN? ?-uri BOOLEAN?\x00-version\x00-sourceid\x00-has-codec\x000\x00-key\x00-vfs\x00-create\x00-nofollow\x00-nomutex\x00-fullmutex\x00-uri\x00-translatefilename\x00sqlite3\x00sqlite\x003.39.3\x00if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewline \"% \"\n}\nflush stdout\nappend line [gets stdin]\nif {[info complete $line]} {\nif {[catch {uplevel #0 $line} result]} {\nputs stderr \"Error: $result\"\n} elseif {$result!=\"\"} {\nputs $result\n}\nset line {}\n} else {\nappend line \\n\n}\n}\n}\n\x00SQLITE_DEBUG_BREAK\x00attach debugger to process %d and press any key to continue.\n\x00utf-8\x00argc\x00argv0\x00argv\x00errorInfo\x00%s: %s\n\x00SQLITE-CONNECTION\x00command not found: \x00error code %s (%d) does not match sqlite3_errcode %s (%d)\x00OMIT_MISUSE\x00wrong # args: should be \"\x00 DB FORMAT STRING\x00 DB HEX\x00 DB\x00 DB SQL\x00%z%s%s\x00%s%n\x00abcdefghijklmnopqrstuvwxyz\x00 DB FORMAT STRING ?COUNT?\x00 DB\"\x00 FILENAME\"\x00%04x\x00tkt2213 is not fixed\x00text16\x00bytes\x00bytes16\x00noop\x00x_coalesce\x00hex8\x00hex16\x00tkt2213func\x00pointer_change\x00counter1\x00counter2\x00intreal\x00x_sqlite_exec\x00value of 40 handed to x_count\x00x_count totals to 42\x00x_count\x00legacy_count\x00 TEXT\"\x00 FORMAT INT INT INT\"\x00argument is not a valid 64-bit integer\x00 FORMAT INT INT ?STRING?\"\x00 INT FORMAT INT INT ?STRING?\"\x00N must be non-negative\x00 FORMAT INT INT DOUBLE\"\x00 FORMAT DOUBLE DOUBLE\"\x00 FORMAT STRING\"\x00%08x%08x\x002nd argument should be 16-characters of hex\x00?BOOLEAN?\x00DB BOOLEAN\x00DB dbname tblname colname\x00CHANNEL ROWID\x00DB-HANDLE NAME CMP-PROC DEL-PROC\x00sqlite3_create_collate_v2() failed to detect an invalid encoding\x00utf8\x00utf16\x00utf16le\x00utf16be\x00DB NAME NARG ENC SWITCHES...\x00encoding\x00-func\x00-step\x00-final\x00-destroy\x00switch\x00DB-HANDLE FILE ?PROC?\x00this build omits sqlite3_load_extension()\x00DB-HANDLE ONOFF\x00string\x00first argument should be one of: int int64 string double null value\x00 DB FUNCTION-NAME\x00 <STMT>\x00STMT PARAMETER RESETFLAG\x00SQLITE_STMTSTATUS_FULLSCAN_STEP\x00SQLITE_STMTSTATUS_SORT\x00SQLITE_STMTSTATUS_AUTOINDEX\x00SQLITE_STMTSTATUS_VM_STEP\x00SQLITE_STMTSTATUS_REPREPARE\x00SQLITE_STMTSTATUS_RUN\x00SQLITE_STMTSTATUS_MEMUSED\x00NBYTE\x00DB DBNAME\x00DB DBNAME SNAPSHOT\x00SNAPSHOT\x00SNAPSHOT1 SNAPSHOT2\x00bad SNAPSHOT\x00FILE\x00PATH\x00 DB STMT\x00 STMT\x00 FROM-STMT TO-STMT\x00 VM IDX VALUE (null|static|normal)\"\x00static\x00static-nbytes\x00normal\x00blob10\x00abc\x00xyz\x00pq\x004th argument should be \"null\" or \"static\" or \"normal\"\x00(%d) \x00test_collate\x00UTF-8\x00UTF-16LE\x00UTF-16BE\x00 <DB> <utf8> <utf16le> <utf16be>\x00utf16bin\x00utf16_unaligned\x00utf16_aligned\x00test_function\x00<error code>\x00STMT IDX N\x00 STMT N VALUE\x00NaN\x00SNaN\x00-NaN\x00-SNaN\x00+Inf\x00-Inf\x00Epsilon\x00-Epsilon\x00NaN0\x00-NaN0\x00 STMT N\x00 STMT N VALUE BYTES\x00 STMT N DATA BYTES\x00cannot use %d blob bytes, have %d\x00STMT N NEW|OLD IDX\x00expected new or old, got: \x00STMT N SELECT\x00error in SQL: \x00error runnning SQL: \x00-transient\x00-static\x00-int32\x00-int64\x00-double\x00-text\x00--\x00text data must be either -static or -transient\x00cannot be both -static and -transient\x00[OPTIONS] STMT IDX VALUE ...\x00STMT\x00STMT N\x00STMT NAME\x00 DB sql bytes ?tailvar?\x00 DB sql bytes tailvar\x00 DB sql bytes flags tailvar\x00\x00SELECT 1\x00 filename options-list\x00FILENAME FLAGS VFS\x00SQLITE_OPEN_READONLY\x00SQLITE_OPEN_READWRITE\x00SQLITE_OPEN_CREATE\x00SQLITE_OPEN_DELETEONCLOSE\x00SQLITE_OPEN_EXCLUSIVE\x00SQLITE_OPEN_AUTOPROXY\x00SQLITE_OPEN_MAIN_DB\x00SQLITE_OPEN_TEMP_DB\x00SQLITE_OPEN_TRANSIENT_DB\x00SQLITE_OPEN_MAIN_JOURNAL\x00SQLITE_OPEN_TEMP_JOURNAL\x00SQLITE_OPEN_SUBJOURNAL\x00SQLITE_OPEN_SUPER_JOURNAL\x00SQLITE_OPEN_NOMUTEX\x00SQLITE_OPEN_FULLMUTEX\x00SQLITE_OPEN_SHAREDCACHE\x00SQLITE_OPEN_PRIVATECACHE\x00SQLITE_OPEN_WAL\x00SQLITE_OPEN_URI\x00SQLITE_OPEN_EXRESCODE\x00flag\x00<utf-16 sql>\x00 STMT column\x00FLOAT\x00TEXT\x00BLOB\x00 DB function-name\x00VARIABLE\x00?N?\x001234567890000000\x00__one\x00__two\x00notadatabase\x00Unexpected non-zero errno: \x00DB [DBNAME]\x00%u\x00DB DBNAME SIZE\x00 DB PWD\x00 DB FLAG\x00%d %d\x00 DB ?AUXDB?\x00DB N\x00 DB ID VALUE\x00unknown limit type: \x00SQLITE_LIMIT_LENGTH\x00SQLITE_LIMIT_SQL_LENGTH\x00SQLITE_LIMIT_COLUMN\x00SQLITE_LIMIT_EXPR_DEPTH\x00SQLITE_LIMIT_COMPOUND_SELECT\x00SQLITE_LIMIT_VDBE_OP\x00SQLITE_LIMIT_FUNCTION_ARG\x00SQLITE_LIMIT_ATTACHED\x00SQLITE_LIMIT_LIKE_PATTERN_LENGTH\x00SQLITE_LIMIT_VARIABLE_NUMBER\x00SQLITE_LIMIT_TRIGGER_DEPTH\x00SQLITE_LIMIT_WORKER_THREADS\x00SQLITE_LIMIT_TOOSMALL\x00SQLITE_LIMIT_TOOBIG\x00SEED ?DB?\x00BOOLEAN\x00current\x00max\x00min\x00recyclable\x00DB ?NAME?\x00passive\x00full\x00restart\x00truncate\x00DB MODE ?NAME?\x00mode\x00DB VALUE\x00COMMAND ...\x00command has no objProc: \x00%d %d %d %s\n\x00SQLITE_TESTCTRL_LOCALTIME_FAULT\x00SQLITE_TESTCTRL_SORTER_MMAP\x00SQLITE_TESTCTRL_IMPOSTER\x00SQLITE_TESTCTRL_INTERNAL_FUNCTIONS\x00VERB ARGS...\x00VERB\x000|1|2\x00DB LIMIT\x00DB dbName onOff tnum\x00ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d\x00DB OPT BOOLEAN\x00unknown optimization - should be one of:\x00all\x00none\x00query-flattener\x00groupby-order\x00factor-constants\x00distinct-opt\x00cover-idx-scan\x00order-by-idx-join\x00transitive\x00omit-noop-join\x00stat4\x00skip-scan\x00push-down\x00balanced-merge\x00DB NAME ...\x00no such extension: \x00initialization of \x00 failed: \x00amatch\x00appendvfs\x00closure\x00fileio\x00nextchar\x00series\x00spellfix\x00totype\x00DB SQL1 NSTEP SQL2\x00data error: (a!=b)\x00checksum mismatch\x00sql error: \x00TYPE\x00Deliberate panic\x00DB SETTING [VALUE]\x00SQLITE_*\x00DBCONFIG_*\x00ENABLE_*\x00unknown sqlite3_db_config setting\x00FKEY\x00TRIGGER\x00FTS3_TOKENIZER\x00LOAD_EXTENSION\x00NO_CKPT_ON_CLOSE\x00QPSG\x00TRIGGER_EQP\x00RESET_DB\x00DEFENSIVE\x00WRITABLE_SCHEMA\x00LEGACY_ALTER_TABLE\x00DQS_DML\x00DQS_DDL\x00LEGACY_FILE_FORMAT\x00DB ?SCHEMA?\x00icecube\x00DB ?DBNAME?\x00DB OFFSET DATA\x00HEXDB\x00| size %d pagesize %d\x00bad 'pagesize' field\x00bad 'size' field\x00| page %d offset %d\x00| %d: %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x\x00DB ?SCRIPT?\x00sqlite3_autovacuum_pages() returns %d\x00sqlite_search_count\x00sqlite_found_count\x00sqlite_sort_count\x00sqlite3_max_blobsize\x00sqlite_like_count\x00sqlite_interrupt_count\x00sqlite_open_file_count\x00sqlite_current_time\x00sqlite3_xferopt_count\x00sqlite3_pager_readdb_count\x00sqlite3_pager_writedb_count\x00sqlite3_pager_writej_count\x00unaligned_string_counter\x00sqlite_last_needed_collation\x00sqlite_query_plan\x00sqlite_opentemp_count\x00sqlite_static_bind_value\x00sqlite_static_bind_nbyte\x00sqlite_temp_directory\x00sqlite_data_directory\x00bitmask_size\x00longdouble_size\x00sqlite_sync_count\x00sqlite_fullsync_count\x00db_enter\x00db_leave\x00sqlite3_mprintf_int\x00sqlite3_mprintf_int64\x00sqlite3_mprintf_long\x00sqlite3_mprintf_str\x00sqlite3_snprintf_str\x00sqlite3_mprintf_stronly\x00sqlite3_mprintf_double\x00sqlite3_mprintf_scaled\x00sqlite3_mprintf_hexdouble\x00sqlite3_mprintf_z_test\x00sqlite3_mprintf_n_test\x00sqlite3_snprintf_int\x00sqlite3_last_insert_rowid\x00sqlite3_exec_printf\x00sqlite3_exec_hex\x00sqlite3_exec\x00sqlite3_exec_nr\x00sqlite3_get_table_printf\x00sqlite3_close\x00sqlite3_close_v2\x00sqlite3_create_function\x00sqlite3_create_aggregate\x00sqlite3_drop_modules\x00sqlite_register_test_function\x00sqlite_abort\x00sqlite_bind\x00breakpoint\x00sqlite3_key\x00sqlite3_rekey\x00sqlite3_interrupt\x00sqlite_delete_function\x00sqlite_delete_collation\x00sqlite3_get_autocommit\x00sqlite3_busy_timeout\x00printf\x00sqlite3IoTrace\x00clang_sanitize_address\x00sqlite3_db_config\x00sqlite3_txn_state\x00bad_behavior\x00register_dbstat_vtab\x00sqlite3_connection_pointer\x00intarray_addr\x00int64array_addr\x00doublearray_addr\x00textarray_addr\x00sqlite3_bind_int\x00sqlite3_bind_zeroblob\x00sqlite3_bind_zeroblob64\x00sqlite3_bind_int64\x00sqlite3_bind_double\x00sqlite3_bind_null\x00sqlite3_bind_text\x00sqlite3_bind_text16\x00sqlite3_bind_blob\x00sqlite3_bind_value_from_select\x00sqlite3_bind_value_from_preupdate\x00sqlite3_carray_bind\x00sqlite3_bind_parameter_count\x00sqlite3_bind_parameter_name\x00sqlite3_bind_parameter_index\x00sqlite3_clear_bindings\x00sqlite3_sleep\x00sqlite3_errcode\x00sqlite3_extended_errcode\x00sqlite3_errmsg\x00sqlite3_error_offset\x00sqlite3_errmsg16\x00sqlite3_open\x00sqlite3_open16\x00sqlite3_open_v2\x00sqlite3_complete16\x00sqlite3_normalize\x00sqlite3_prepare\x00sqlite3_prepare16\x00sqlite3_prepare_v2\x00sqlite3_prepare_v3\x00sqlite3_prepare_tkt3134\x00sqlite3_prepare16_v2\x00sqlite3_finalize\x00sqlite3_stmt_status\x00sqlite3_reset\x00sqlite3_expired\x00sqlite3_transfer_bindings\x00sqlite3_changes\x00sqlite3_step\x00sqlite3_sql\x00sqlite3_expanded_sql\x00sqlite3_next_stmt\x00sqlite3_stmt_readonly\x00sqlite3_stmt_isexplain\x00sqlite3_stmt_busy\x00uses_stmt_journal\x00sqlite3_release_memory\x00sqlite3_db_release_memory\x00sqlite3_db_cacheflush\x00sqlite3_system_errno\x00sqlite3_db_filename\x00sqlite3_db_readonly\x00sqlite3_soft_heap_limit\x00sqlite3_soft_heap_limit64\x00sqlite3_hard_heap_limit64\x00sqlite3_thread_cleanup\x00sqlite3_pager_refcounts\x00sqlite3_load_extension\x00sqlite3_enable_load_extension\x00sqlite3_extended_result_codes\x00sqlite3_limit\x00dbconfig_maindbname_icecube\x00save_prng_state\x00restore_prng_state\x00reset_prng_state\x00prng_seed\x00extra_schema_checks\x00database_never_corrupt\x00database_may_be_corrupt\x00optimization_control\x00tcl_objproc\x00sqlite3_column_count\x00sqlite3_data_count\x00sqlite3_column_type\x00sqlite3_column_blob\x00sqlite3_column_double\x00sqlite3_column_int64\x00sqlite3_column_text\x00sqlite3_column_name\x00sqlite3_column_int\x00sqlite3_column_bytes\x00sqlite3_column_decltype\x00sqlite3_column_database_name\x00sqlite3_column_table_name\x00sqlite3_column_origin_name\x00sqlite3_column_bytes16\x00sqlite3_column_text16\x00sqlite3_column_name16\x00add_alignment_test_collations\x00sqlite3_column_decltype16\x00sqlite3_column_database_name16\x00sqlite3_column_table_name16\x00sqlite3_column_origin_name16\x00sqlite3_create_collation_v2\x00sqlite3_global_recover\x00working_64bit_int\x00vfs_unlink_test\x00vfs_initfail_test\x00vfs_unregister_all\x00vfs_reregister_all\x00file_control_test\x00file_control_lasterrno_test\x00file_control_lockproxy_test\x00file_control_chunksize_test\x00file_control_sizehint_test\x00file_control_data_version\x00file_control_persist_wal\x00file_control_powersafe_overwrite\x00file_control_vfsname\x00file_control_reservebytes\x00file_control_tempfilename\x00file_control_external_reader\x00sqlite3_vfs_list\x00sqlite3_create_function_v2\x00add_test_collate\x00add_test_collate_needed\x00add_test_function\x00add_test_utf16bin_collate\x00sqlite3_test_errstr\x00tcl_variable_type\x00sqlite3_enable_shared_cache\x00sqlite3_shared_cache_report\x00sqlite3_libversion_number\x00sqlite3_table_column_metadata\x00sqlite3_blob_reopen\x00pcache_stats\x00sqlite3_unlock_notify\x00sqlite3_wal_checkpoint\x00sqlite3_wal_checkpoint_v2\x00sqlite3_wal_autocheckpoint\x00test_sqlite3_log\x00print_explain_query_plan\x00sqlite3_test_control\x00getrusage\x00load_static_extension\x00sorter_test_fakeheap\x00sorter_test_sort4_helper\x00vfs_current_time_int64\x00sqlite3_snapshot_get\x00sqlite3_snapshot_open\x00sqlite3_snapshot_free\x00sqlite3_snapshot_cmp\x00sqlite3_snapshot_recover\x00sqlite3_snapshot_get_blob\x00sqlite3_snapshot_open_blob\x00sqlite3_snapshot_cmp_blob\x00sqlite3_delete_database\x00atomic_batch_write\x00sqlite3_mmap_warm\x00sqlite3_config_sorterref\x00sqlite3_autovacuum_pages\x00decode_hexdb\x00test_write_db\x00sqlite3_register_cksumvfs\x00sqlite3_unregister_cksumvfs\x00*** OBSOLETE VARIABLE ***\x00 FILENAME N-PAGE\"\x00 ID\"\x00ref\x00page\x00err\x00hit\x00miss\x00ovfl\x00 ID PGNO\"\x00 PAGE\"\x00 PAGE DATA\"\x00 N-MEGABYTES FILE\"\x00open failed: \x00Hello, World!\x00write failed: \x00 PENDING-BYTE\"\x00fault simulator script failed: [%s]\x00 SCRIPT\"\x00 SIZE PROGRAM\"\x00sqlite_io_error_pending\x00sqlite_io_error_persist\x00sqlite_io_error_hit\x00sqlite_io_error_hardhit\x00sqlite_diskfull_pending\x00sqlite_diskfull\x00sqlite_pending_byte\x00pager_open\x00pager_close\x00pager_commit\x00pager_rollback\x00pager_stmt_begin\x00pager_stmt_commit\x00pager_stmt_rollback\x00pager_stats\x00pager_pagecount\x00page_get\x00page_lookup\x00page_unref\x00page_read\x00page_write\x00page_number\x00pager_truncate\x00fake_big_file\x00sqlite3BitvecBuiltinTest\x00sqlite3_test_control_pending_byte\x00sqlite3_test_control_fault_install\x00 FILENAME NCACHE FLAGS\"\x00read\x00write\x00 ID TABLENUM WRITEABLE\"\x00 START MULTIPLIER COUNT INCREMENT\"\x00putVarint returned %d - should be between 1 and 9\x00putVarint returned %d and getVarint returned %d\x00Wrote 0x%016llx and got back 0x%016llx\x00putVarint returned %d and GetVarint32 returned %d\x00Wrote 0x%016llx and got back 0x%016llx from GetVarint32\x00 DB-HANDLE ?N?\"\x00No such db-handle: \"\x00 BT NCACHE\"\x00?-intkey? CSR KEY VALUE\x00btree_insert\x00btree_open\x00btree_close\x00btree_begin_transaction\x00btree_pager_stats\x00btree_cursor\x00btree_close_cursor\x00btree_next\x00btree_eof\x00btree_payload_size\x00btree_first\x00btree_varint_test\x00btree_from_db\x00btree_ismemdb\x00btree_set_cache_size\x00thread ID must be an upper case letter\x00 ID FILENAME\x00thread \x00 is already running\x00failed to create the thread\x00 ID\x00no such thread\x00 ID N\x00column number out of range\x00no database is open\x00 ID SQL\x00no virtual machine available\x00 IDL\x00 ID1 ID2\x00 ID DB\x00thread_create\x00thread_wait\x00thread_halt\x00thread_argc\x00thread_argv\x00thread_colname\x00thread_result\x00thread_error\x00thread_compile\x00thread_step\x00thread_finalize\x00thread_swap\x00thread_db_get\x00thread_db_put\x00thread_stmt_get\x00 <repeat-count> <do-calls>\x00hello world\x00UTF8\x00UTF16LE\x00UTF16BE\x00UTF16\x00No such encoding: \x00 <string/blob> <from enc> <to enc>\x00binarize\x00test_value_overhead\x00test_translate\x00translate_selftest\x00out of memory in the crash simulator\n\x00atomic\x00atomic512\x00atomic1k\x00atomic2k\x00atomic4k\x00atomic8k\x00atomic16k\x00atomic32k\x00atomic64k\x00sequential\x00safe_append\x00powersafe_overwrite\x00batch-atomic\x00-sectorsize\x00-characteristics\x00Bad option: \"\x00\" - must be \"-characteristics\" or \"-sectorsize\"\x00Option requires an argument: \"\x00no such flag\x00ENABLE ?DEFAULT?\x00crash\x00?OPTIONS? DELAY CRASHFILE\x00Filename is too long: \"\x00NWRITE\x00?-default? PARENT-VFS\x00-default\x00\": must be -default\x00Error in jt_register\x00sqlite3_crash_enable\x00sqlite3_crashparams\x00sqlite3_crash_now\x00sqlite3_simulate_device\x00sqlite3_crash_on_write\x00unregister_devsim\x00register_jt_vfs\x00unregister_jt_vfs\x00client_create\x00client_wait\x00client_halt\x00client_argc\x00client_argv\x00client_colname\x00client_result\x00client_error\x00client_compile\x00client_step\x00client_reset\x00client_finalize\x00client_swap\x00echo_module_fail(%s,%s)\x00echo-vtab-error: %s\x00SELECT * FROM %Q\x00PRAGMA index_list(%s)\x00PRAGMA index_info(%s)\x00echo_module\x00SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?\x00%s%s\x00xCreate\x00CREATE TABLE %Q(logmsg)\x00xConnect\x00xDisconnect\x00xDestroy\x00DROP TABLE %Q\x00xOpen\x00xNext\x00xColumn\x00xFilter\x00, *\x00%z, %s\x00%z, NULL\x00echo_module_ignore_usable\x00xBestIndex\x00echo_module_cost\x00SELECT count(*) FROM %Q\x00SELECT rowid%z FROM %Q\x00=\x00<\x00>\x00<=\x00>=\x00LIKE\x00like\x00glob\x00 %s %s LIKE (SELECT '%%'||?||'%%')\x00 %s %s %s ?\x00DESC\x00ASC\x00 ORDER BY %s %s\x00xUpdate\x00 SET\x00UPDATE %Q\x00 SET rowid=?1 \x00%s %Q=?%d\x00 WHERE rowid=?%d\x00DELETE FROM %Q WHERE rowid = ?1\x00INSERT INTO %Q (\x00%s%Q\x00%s?%d\x00) VALUES(\x00echo(%s)\x00xBegin\x00echo_module_begin_fail\x00xSync\x00echo_module_sync_fail\x00xCommit\x00xRollback\x00::echo_glob_overload\x00xRename\x00ALTER TABLE %s RENAME TO %s%s\x00function_that_does_not_exist_0982ma98\x00echo\x00echo_v2\x00register_echo_module\x00sqlite3_declare_vtab\x00N/A\x00sqlite3_create_collation\x00Error testing function: \x00sqlite3_malloc\x00sqlite3_realloc\x00c_misuse_test\x00c_realloc_test\x00c_collation_test\x00sqlite3_reset_auto_extension\x00npage\x00finish\x00remaining\x00pagecount\x00CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME\x00sqlite3_backup_init() failed\x00sqlite3_backup\x00wrong number of arguments\x00unexpected: %s\x00eq\x00gt\x00le\x00lt\x00ge\x00match\x00ne\x00isnot\x00isnotnull\x00isnull\x00limit\x00offset\x00column\x00usable\x00desc\x00constraints\x00orderby\x00mask\x00distinct\x00in\x00rhs_value\x00INDEX BOOLEAN\x00INDEX ?DEFAULT?\x00bestindex%d\x00cost\x00idxnum\x00idxstr\x00rows\x00use\x00omit\x00unexpected: %d\x00tcl\x00register_tcl_module\x00incrblob_\x00DB DATABASE TABLE COLUMN ROWID FLAGS VARNAME\x00HANDLE\x00CHANNEL OFFSET N\x00out of memory in testdata/sqlite-src-3390300/src/test_blob.c\x00HANDLE OFFSET DATA ?NDATA?\x00sqlite3_blob_open\x00sqlite3_blob_close\x00sqlite3_blob_bytes\x00sqlite3_blob_read\x00sqlite3_blob_write\x00sqlite_options\x00malloc_usable_size\x001\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x00win32malloc\x00debug\x00default_ckptfullfsync\x00direct_read\x00dirsync\x00lfs\x00pagecache_overflow_stats\x00mmap\x00worker_threads\x008\x00memdebug\x008_3_names\x00cursorhints\x00hiddencolumns\x00mathlib\x00mem3\x00mem5\x00offset_sql_func\x00snapshot\x00mutex\x00mutex_noop\x00altertable\x00api_armor\x00atomicwrite\x00geopoly\x00json1\x00has_codec\x00like_match_blobs\x00auth\x00autoinc\x00autoreset\x00autovacuum\x00default_autovacuum\x00between_opt\x00builtin_test\x00bloblit\x00cast\x00check\x00cte\x00columnmetadata\x00oversize_cell_check\x00compileoption_diags\x00compound\x00conflict\x00crashtest\x00datetime\x00decltype\x00deprecated\x00diskio\x00floatingpoint\x00foreignkey\x00fts1\x00fts2\x00fts3\x00fts5\x00fts3_unicode\x00fts4_deferred\x00gettable\x00icu\x00icu_collations\x00integrityck\x00legacyformat\x00like_opt\x00load_ext\x00localtime\x00lookaside\x00long_double\x00memorydb\x00memorymanage\x00mergesort\x00null_trim\x00or_opt\x00rbu\x00pager_pragmas\x00pragma\x00reindex\x00rtree\x00rtree_int_only\x00schema_pragmas\x00schema_version\x00session\x00stmtvtab\x00scanstatus\x00lock_proxy_pragmas\x00prefer_proxy_locking\x00shared_cache\x00subquery\x00tclvar\x00threadsafe\x00threadsafe1\x00threadsafe2\x00tempdb\x00trigger\x00truncate_opt\x00vacuum\x00view\x00vtab\x00wal\x00wsd\x00update_delete_limit\x00fast_secure_delete\x00secure_delete\x00userauth\x00multiplex_ext_overwrite\x00yytrackmaxstackdepth\x00sqllog\x00uri_00_error\x00normalize\x00windowfunc\x00SQLITE_MAX_LENGTH\x00SQLITE_MAX_COLUMN\x00SQLITE_MAX_SQL_LENGTH\x00SQLITE_MAX_EXPR_DEPTH\x00SQLITE_MAX_COMPOUND_SELECT\x00SQLITE_MAX_VDBE_OP\x00SQLITE_MAX_FUNCTION_ARG\x00SQLITE_MAX_VARIABLE_NUMBER\x00SQLITE_MAX_PAGE_SIZE\x00SQLITE_MAX_PAGE_COUNT\x00SQLITE_MAX_LIKE_PATTERN_LENGTH\x00SQLITE_MAX_TRIGGER_DEPTH\x00SQLITE_DEFAULT_CACHE_SIZE\x00SQLITE_DEFAULT_PAGE_SIZE\x00SQLITE_DEFAULT_FILE_FORMAT\x00SQLITE_DEFAULT_SYNCHRONOUS\x00SQLITE_DEFAULT_WAL_SYNCHRONOUS\x00SQLITE_MAX_ATTACHED\x00SQLITE_MAX_DEFAULT_PAGE_SIZE\x00SQLITE_MAX_WORKER_THREADS\x00TEMP_STORE\x00__GNUC__\x00%s-journal\x00%s-wal\x00%s-shm\x00%s%03d\x00%s-journal%03d\x00%s-wal%03d\x00devsym\x00writecrash\x00CREATE TABLE xyz(dir, name);\x00CREATE TABLE xyz(path, size, data);\x00WITH r(d) AS (  SELECT CASE WHEN dir=?2 THEN ?3 ELSE dir END || '/' || name     FROM fsdir WHERE dir=?1 AND name NOT LIKE '.%'  UNION ALL  SELECT dir || '/' || name FROM r, fsdir WHERE dir=d AND name NOT LIKE '.%') SELECT d FROM r;\x00/\x00CREATE TABLE x(path TEXT, data TEXT)\x00SELECT * FROM %Q.%Q WHERE rowid=?\x00fs\x00fstree\x00register_fs_module\x00abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-!,:*^+=_|?/<> \x00sqlite3_prepare_v2() error: %s\x000123456789abcdef\x00test_agg_errmsg16\x00randstr\x00test_destructor\x00test_destructor16\x00hex_to_utf16be\x00hex_to_utf16le\x00hex_to_utf8\x00test_destructor_count\x00test_auxdata\x00test_error\x00test_eval\x00test_isolation\x00test_counter\x00real2hex\x00test_decode\x00test_extract\x00test_zeroblob\x00test_getsubtype\x00test_setsubtype\x00test_frombind\x00tx\x00funcxx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00sqlite3_create_function abused test failed\x00invalid matchinfo blob passed to function rank()\x00wrong number of arguments to function rank()\x00rank\x00autoinstall_test_functions\x00abuse_create_function\x00install_fts3_rank_function\x000123456789ABCDEF\x00FILENAME OFFSET AMT\x00r\x00cannot open input file \x00FILENAME OFFSET HEXDATA\x00r+b\x00r+\x00cannot open output file \x00HEXDATA\x00[utf8_to_utf8] unavailable - SQLITE_DEBUG not defined\x00BLOB VARNAME\x00LIST\x00hexio_read\x00hexio_write\x00hexio_get_int\x00hexio_render_int16\x00hexio_render_int32\x00utf8_to_utf8\x00read_fts3varint\x00make_fts3record\x00mem\x00pcache\x00Unknown argument: \"\x00init_wrapper_install\x00init_wrapper_query\x00init_wrapper_uninstall\x00init_wrapper_clear\x00CREATE TABLE x(value INTEGER PRIMARY KEY)\x00CREATE VIRTUAL TABLE temp.%Q USING %Q\x00INTARRAY\x00SQLITE_NOMEM\x00sqlite3_intarray_create\x00sqlite3_intarray_bind\x00jt\x00-journal\x00NBYTES\x00PRIOR NBYTES\x00bad pointer: \x00PRIOR\x00ADDRESS SIZE HEX\x00size must be positive\x00no data\x00ADDRESS SIZE\x00?RESET?\x00DEPT\x00FILENAME\x00COUNTER ?OPTIONS?\x00-repeat\x00-benigncnt\x00TITLE\x00SUB-COMMAND ...\x00start\x00stop\x00dump\x00clear\x00sync\x00SIZE N\x00INSTALLFLAG DISCARDCHANCE PRNGSEEED HIGHSTRESS\x00discard-chance should be between 0 and 100\x00SIZE COUNT\x00BUFID SIZE COUNT\x00illegal arguments - see documentation\x00NBYTE NMINALLOC\x00[DB]\x00sqlite3_db_config(db, 99999) does not return SQLITE_ERROR\x00sqlite3_config(99999) does not return SQLITE_ERROR\x00PARAMETER RESETFLAG\x00SQLITE_STATUS_MEMORY_USED\x00SQLITE_STATUS_MALLOC_SIZE\x00SQLITE_STATUS_PAGECACHE_USED\x00SQLITE_STATUS_PAGECACHE_OVERFLOW\x00SQLITE_STATUS_PAGECACHE_SIZE\x00SQLITE_STATUS_SCRATCH_USED\x00SQLITE_STATUS_SCRATCH_OVERFLOW\x00SQLITE_STATUS_SCRATCH_SIZE\x00SQLITE_STATUS_PARSER_STACK\x00SQLITE_STATUS_MALLOC_COUNT\x00DB PARAMETER RESETFLAG\x00SQLITE_\x00DBSTATUS_\x00LOOKASIDE_USED\x00CACHE_USED\x00SCHEMA_USED\x00STMT_USED\x00LOOKASIDE_HIT\x00LOOKASIDE_MISS_SIZE\x00LOOKASIDE_MISS_FULL\x00CACHE_HIT\x00CACHE_MISS\x00CACHE_WRITE\x00DEFERRED_FKS\x00CACHE_USED_SHARED\x00CACHE_SPILL\x00?INTEGER?\x00sqlite3_free\x00memset\x00memget\x00sqlite3_memory_used\x00sqlite3_memory_highwater\x00sqlite3_memdebug_backtrace\x00sqlite3_memdebug_dump\x00sqlite3_memdebug_fail\x00sqlite3_memdebug_pending\x00sqlite3_memdebug_settitle\x00sqlite3_memdebug_malloc_count\x00sqlite3_memdebug_log\x00sqlite3_config_pagecache\x00sqlite3_config_alt_pcache\x00sqlite3_status\x00sqlite3_db_status\x00install_malloc_faultsim\x00sqlite3_config_heap\x00sqlite3_config_heap_size\x00sqlite3_config_memstatus\x00sqlite3_config_lookaside\x00sqlite3_config_error\x00sqlite3_config_uri\x00sqlite3_config_cis\x00sqlite3_config_pmasz\x00sqlite3_db_config_lookaside\x00sqlite3_dump_memsys3\x00sqlite3_dump_memsys5\x00sqlite3_install_memsys3\x00sqlite3_memdebug_vfs_oom_test\x00%05u\x00 FILENAME [OFFSET AMT]\"\x00unable to open file \"\x00\" for reading\x00md5\x00md5-10x8\x00md5file\x00md5file-10x8\x00md5sum\x00%03d\x00multiplexor.xAccess failure on %s\x00multiplexor.xOpen failure on %s\x00multiplex_control\x00chunksize\x00multiplex_\x00multiplex_truncate\x00multiplex_enabled\x00multiplex_chunksize\x00multiplex_filecount\x00multiplex/%z\x00multiplex\x00NAME MAKEDEFAULT\x00-force\x00?-force?\x00chunk_size\x00max_chunks\x00HANDLE DBNAME SUB-COMMAND INT-VALUE\x00expected database handle, got \"\x00sqlite3_multiplex_initialize\x00sqlite3_multiplex_shutdown\x00sqlite3_multiplex_control\x00fast\x00recursive\x00static_main\x00static_mem\x00static_open\x00static_prng\x00static_lru\x00static_pmem\x00static_app1\x00static_app2\x00static_app3\x00static_vfs1\x00static_vfs2\x00static_vfs3\x00mutex counters are \x00already installed\x00not installed\x00singlethread\x00multithread\x00serialized\x00mutex name\x00disable_mutex_init\x00disable_mutex_try\x00sqlite3_shutdown\x00sqlite3_initialize\x00sqlite3_config\x00enter_static_mutex\x00leave_static_mutex\x00enter_db_mutex\x00leave_db_mutex\x00alloc_dealloc_mutex\x00install_mutex_counters\x00read_mutex_counters\x00clear_mutex_counters\x00\x00\x00\x00\x00\x00\x00\x00vfslog/%z\x00sqlite_ostrace1.....\x00xClose\x00xRead\x00xWrite\x00xTruncate\x00xFilesize\x00xLock\x00xUnlock\x00xCheckResLock\x00xFileControl\x00xSectorSize\x00xDeviceChar\x00xDelete\x00xAccess\x00xFullPathname\x00xRandomness\x00xSleep\x00xCurrentTime\x00xShmUnmap\x00xShmLock\x00xShmBarrier\x00xShmMap\x00annotation\x00CREATE TABLE xxx(event, file, click, rc, size, offset)\x00vfslog\x00VFS\x00failed\x00VFS PARENT LOGFILE\x00bad sqlite3 handle: \x00annotate\x00finalize\x00register\x00quota/%z\x00quota\x00::piLimit_\x00PATTERN LIMIT SCRIPT\x00FILENAME MODE\x00HANDLE SIZE NELEM\x00HANDLE SIZE NELEM CONTENT\x00HANDLE ?HARDSYNC?\x00HANDLE OFFSET WHENCE\x00SEEK_SET\x00SEEK_CUR\x00SEEK_END\x00WHENCE should be SEEK_SET, SEEK_CUR, or SEEK_END\x00HANDLE SIZE\x00PATTERN TEXT\x00sqlite3_quota_initialize\x00sqlite3_quota_shutdown\x00sqlite3_quota_set\x00sqlite3_quota_file\x00sqlite3_quota_dump\x00sqlite3_quota_fopen\x00sqlite3_quota_fread\x00sqlite3_quota_fwrite\x00sqlite3_quota_fclose\x00sqlite3_quota_fflush\x00sqlite3_quota_fseek\x00sqlite3_quota_rewind\x00sqlite3_quota_ftell\x00sqlite3_quota_ftruncate\x00sqlite3_quota_file_size\x00sqlite3_quota_file_truesize\x00sqlite3_quota_file_mtime\x00sqlite3_quota_remove\x00sqlite3_quota_glob\x00sqlite3_quota_file_available\x00sqlite3_quota_ferror\x00cube\x00circle\x00Qcircle\x00breadthfirstsearch\x00register_cube_geom\x00register_circle_geom\x00CREATE TABLE x(database,tablename,cid,name,type,not_null,dflt_value,pk)\x00SELECT name FROM sqlite_temp_schema WHERE type='table'\x00SELECT name FROM %Q.sqlite_schema WHERE type='table'\x00PRAGMA %Q.table_info(%Q)\x00PRAGMA database_list\x00register_schema_module\x00PRAGMA main.journal_mode\x00CMDNAME PATH ?VFS? ?BUSY-HANDLER-SCRIPT?\x00sqlite3demo_superlock\x00open\x00access\x00getcwd\x00stat\x00fstat\x00ftruncate\x00fcntl\x00pread\x00pread64\x00pwrite\x00pwrite64\x00fchmod\x00fallocate\x00mremap\x00SYSCALL-LIST\x00system-call\x00?COUNT PERSIST?\x00EACCES\x00EINTR\x00EIO\x00EOVERFLOW\x00ENOMEM\x00EAGAIN\x00ETIMEDOUT\x00EBUSY\x00EPERM\x00EDEADLK\x00ENOLCK\x00SYSCALL ERRNO\x00errno\x00PGSZ\x00getpagesize\x00pgsz out of range\x00fault\x00install\x00uninstall\x00list\x00defaultvfs\x00pagesize\x00VFS does not support xSetSystemCall\x00test_syscall\x00load_testfixture_extensions\x00SLAVE\x00CREATE TABLE x(  name TEXT,  arrayname TEXT,  value TEXT,  fullname TEXT PRIMARY KEY) WITHOUT ROWID\x00array names\x00tclvar_filter_cmd\x00%s(%s)\x00expr {[info exists ::tclvar_set_omit] && $::tclvar_set_omit}\x00the 'fullname' column must be TEXT\x00prohibited TCL variable change\x00proc like {pattern str} {\n  set p [string map {% * _ ?} $pattern]\n  string match $p $str\n}\nproc tclvar_filter_cmd {eq match glob regexp like} {\n  set res {}\n  set pattern $eq\n  if {$pattern=={}} { set pattern $match }\n  if {$pattern=={}} { set pattern * }\n  foreach v [uplevel #0 info vars $pattern] {\n    if {($glob=={} || [string match $glob [uplevel #0 set $v]])\n     && ($like=={} || [like $like [uplevel #0 set $v]])\n     && ($regexp=={} || [regexp $regexp [uplevel #0 set $v]])\n    } {\n      lappend res $v\n    }\n  }\n  set res\n}\n\x00register_tclvar_module\x00clock_seconds\x00sqlthread\x00sqlite3_blocking_step\x00sqlite3_blocking_prepare_v2\x00sqlite3_nonblocking_prepare_v2\x00set\x00Error in Tcl_CreateThread()\x00no parent thread\x00parent\x00spawn\x00VARNAME SCRIPT\x00DBNAME\x00id\x00%s \x00SQLITE_IOERR\x00SQLITE_LOCKED\x00SQLITE_BUSY\x00SQLITE_READONLY\x00SQLITE_READONLY_CANTINIT\x00SQLITE_NOTFOUND\x00SQLITE_OMIT\x00normal|dataonly\x00full|dataonly\x00xCheckReservedLock\x00BEGIN_ATOMIC_WRITE\x00COMMIT_ATOMIC_WRITE\x00ZIPVFS\x00anon\x00SQLITE_ACCESS_EXISTS\x00SQLITE_ACCESS_READWRITE\x00SQLITE_ACCESS_READ\x00xShmOpen\x00 lock\x00 unlock\x00 shared\x00 exclusive\x00shm\x00filter\x00ioerr\x00fullerr\x00cantopenerr\x00script\x00devchar\x00sectorsize\x00subcommand\x00FILE ?VALUE?\x00failed to get full path: \x00no such file: \x00unknown method: \x00?CNT PERSIST?\x00default\x00undeletable_when_open\x00immutable\x00?ATTR-LIST?\x00bad flags: \x00?VALUE?\x00-noshm\x00-szosfile\x00-mxpathname\x00-iversion\x00-fullshm\x00VFSNAME ?-noshm BOOL? ?-fullshm BOOL? ?-default BOOL? ?-mxpathname INT? ?-szosfile INT? ?-iversion INT?\x00shared\x00lock\x00unlock\x00DB DBNAME (shared|exclusive) (lock|unlock) OFFSET N\x00ARG\x00DB DBNAME SLOT ?VALUE?\x00*-shm is not yet mapped\x00testvfs\x00vfs_shmlock\x00vfs_set_readmark\x00DB NAME XSTEP XFINAL XVALUE XINVERSE\x00fff\x00misuse test error\x00invalid argument\x00sumint\x00sum\x00sqlite3_create_window_function\x00test_create_window_function_misuse\x00test_create_sumint\x00test_override_sum\x00"
 61542  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data