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

     1  // Code generated by 'ccgo -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_SERIES_CONSTRAINT_VERIFY=1 -DSQLITE_SERVER=1 -DTCLSH_INIT_PROC=sqlite3TestInit -D_HAVE_SQLITE_CONFIG_H -I/usr/local/include/tcl8.6 -export-defines "" -export-fields F -ignore-unsupported-alignment -trace-translation-units -volatile=sqlite3_io_error_pending,sqlite3_open_file_count,sqlite3_pager_readdb_count,sqlite3_pager_writedb_count,sqlite3_pager_writej_count,sqlite3_search_count,sqlite3_sort_count,saved_cnt -lgitlab.com/CoiaPrant/sqlite3/libtest -lmodernc.org/tcl/lib -lmodernc.org/z/lib -o internal/testfixture/testfixture_openbsd_arm64.go -Itestdata/sqlite-src-3390300/ext/async -Itestdata/sqlite-src-3390300/ext/fts3 -Itestdata/sqlite-src-3390300/ext/icu -Itestdata/sqlite-src-3390300/ext/rtree -Itestdata/sqlite-src-3390300/ext/session -Itestdata/sqlite-src-3390300/ext/userauth -Itestdata/sqlite-src-3390300/src -Itestdata/sqlite-amalgamation-3390300 -Itestdata/sqlite-src-3390300 -full-path-comments testdata/sqlite-src-3390300/ext/expert/sqlite3expert.c testdata/sqlite-src-3390300/ext/expert/test_expert.c testdata/sqlite-src-3390300/ext/fts3/fts3_term.c testdata/sqlite-src-3390300/ext/fts3/fts3_test.c testdata/sqlite-src-3390300/ext/fts5/fts5_tcl.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_mi.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_tok.c testdata/sqlite-src-3390300/ext/misc/appendvfs.c testdata/sqlite-src-3390300/ext/misc/amatch.c testdata/sqlite-src-3390300/ext/misc/carray.c testdata/sqlite-src-3390300/ext/misc/cksumvfs.c testdata/sqlite-src-3390300/ext/misc/closure.c testdata/sqlite-src-3390300/ext/misc/csv.c testdata/sqlite-src-3390300/ext/misc/decimal.c testdata/sqlite-src-3390300/ext/misc/eval.c testdata/sqlite-src-3390300/ext/misc/explain.c testdata/sqlite-src-3390300/ext/misc/fileio.c testdata/sqlite-src-3390300/ext/misc/fuzzer.c testdata/sqlite-src-3390300/ext/misc/ieee754.c testdata/sqlite-src-3390300/ext/misc/mmapwarm.c testdata/sqlite-src-3390300/ext/misc/nextchar.c testdata/sqlite-src-3390300/ext/misc/normalize.c testdata/sqlite-src-3390300/ext/misc/percentile.c testdata/sqlite-src-3390300/ext/misc/prefixes.c testdata/sqlite-src-3390300/ext/misc/qpvtab.c testdata/sqlite-src-3390300/ext/misc/regexp.c testdata/sqlite-src-3390300/ext/misc/remember.c testdata/sqlite-src-3390300/ext/misc/series.c testdata/sqlite-src-3390300/ext/misc/spellfix.c testdata/sqlite-src-3390300/ext/misc/totype.c testdata/sqlite-src-3390300/ext/misc/unionvtab.c testdata/sqlite-src-3390300/ext/misc/wholenumber.c testdata/sqlite-src-3390300/ext/rbu/test_rbu.c testdata/sqlite-src-3390300/ext/rtree/test_rtreedoc.c testdata/sqlite-src-3390300/ext/session/test_session.c testdata/sqlite-src-3390300/ext/userauth/userauth.c testdata/sqlite-src-3390300/src/tclsqlite.c testdata/sqlite-src-3390300/src/test1.c testdata/sqlite-src-3390300/src/test2.c testdata/sqlite-src-3390300/src/test3.c testdata/sqlite-src-3390300/src/test4.c testdata/sqlite-src-3390300/src/test5.c testdata/sqlite-src-3390300/src/test6.c testdata/sqlite-src-3390300/src/test7.c testdata/sqlite-src-3390300/src/test8.c testdata/sqlite-src-3390300/src/test9.c testdata/sqlite-src-3390300/src/test_async.c testdata/sqlite-src-3390300/src/test_autoext.c testdata/sqlite-src-3390300/src/test_backup.c testdata/sqlite-src-3390300/src/test_bestindex.c testdata/sqlite-src-3390300/src/test_blob.c testdata/sqlite-src-3390300/src/test_btree.c testdata/sqlite-src-3390300/src/test_config.c testdata/sqlite-src-3390300/src/test_delete.c testdata/sqlite-src-3390300/src/test_demovfs.c testdata/sqlite-src-3390300/src/test_devsym.c testdata/sqlite-src-3390300/src/test_fs.c testdata/sqlite-src-3390300/src/test_func.c testdata/sqlite-src-3390300/src/test_hexio.c testdata/sqlite-src-3390300/src/test_init.c testdata/sqlite-src-3390300/src/test_intarray.c testdata/sqlite-src-3390300/src/test_journal.c testdata/sqlite-src-3390300/src/test_malloc.c testdata/sqlite-src-3390300/src/test_md5.c testdata/sqlite-src-3390300/src/test_multiplex.c testdata/sqlite-src-3390300/src/test_mutex.c testdata/sqlite-src-3390300/src/test_onefile.c testdata/sqlite-src-3390300/src/test_osinst.c testdata/sqlite-src-3390300/src/test_pcache.c testdata/sqlite-src-3390300/src/test_quota.c testdata/sqlite-src-3390300/src/test_rtree.c testdata/sqlite-src-3390300/src/test_schema.c testdata/sqlite-src-3390300/src/test_server.c testdata/sqlite-src-3390300/src/test_superlock.c testdata/sqlite-src-3390300/src/test_syscall.c testdata/sqlite-src-3390300/src/test_tclsh.c testdata/sqlite-src-3390300/src/test_tclvar.c testdata/sqlite-src-3390300/src/test_thread.c testdata/sqlite-src-3390300/src/test_vdbecov.c testdata/sqlite-src-3390300/src/test_vfs.c testdata/sqlite-src-3390300/src/test_windirent.c testdata/sqlite-src-3390300/src/test_window.c testdata/sqlite-src-3390300/src/test_wsd.c -DNDEBUG -DHAVE_USLEEP -DLONGDOUBLE_TYPE=double -DSQLITE_CKSUMVFS_STATIC -DSQLITE_CORE -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_PAGE_SIZE=1024 -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_DESERIALIZE -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_OFFSET_SQL_FUNC -DSQLITE_ENABLE_PREUPDATE_HOOK -DSQLITE_ENABLE_RBU -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_SNAPSHOT -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MUTEX_APPDEF=1 -DSQLITE_MUTEX_NOOP -DSQLITE_SOUNDEX -DSQLITE_TEMP_STORE=1 -DSQLITE_TEST -DSQLITE_THREADSAFE=1', DO NOT EDIT.
     2  
     3  package main
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  
    11  	"modernc.org/libc"
    12  	"modernc.org/libc/sys/types"
    13  	"gitlab.com/CoiaPrant/sqlite3/libtest"
    14  	"modernc.org/tcl/lib"
    15  )
    16  
    17  var _ = math.Pi
    18  var _ reflect.Kind
    19  var _ atomic.Value
    20  var _ unsafe.Pointer
    21  var _ *libc.TLS
    22  var _ types.Size_t
    23  
    24  func main() { libc.Start(main1) }
    25  
    26  const (
    27  	BIG_ENDIAN                            = 4321
    28  	BUFSIZ                                = 1024
    29  	BYTE_ORDER                            = 1234
    30  	EOF                                   = -1
    31  	EXPERT_CONFIG_SAMPLE                  = 1
    32  	EXPERT_REPORT_CANDIDATES              = 4
    33  	EXPERT_REPORT_INDEXES                 = 2
    34  	EXPERT_REPORT_PLAN                    = 3
    35  	EXPERT_REPORT_SQL                     = 1
    36  	FILENAME_MAX                          = 1024
    37  	FOPEN_MAX                             = 20
    38  	FTS5_TOKENIZE_AUX                     = 0x0008
    39  	FTS5_TOKENIZE_DOCUMENT                = 0x0004
    40  	FTS5_TOKENIZE_PREFIX                  = 0x0002
    41  	FTS5_TOKENIZE_QUERY                   = 0x0001
    42  	FTS5_TOKEN_COLOCATED                  = 0x0001
    43  	FULLY_WITHIN                          = 2
    44  	HAVE_USLEEP                           = 1
    45  	IDX_HASH_SIZE                         = 1023
    46  	LITTLE_ENDIAN                         = 1234
    47  	L_ctermid                             = 1024
    48  	L_tmpnam                              = 1024
    49  	NDEBUG                                = 1
    50  	NOT_WITHIN                            = 0
    51  	PARTLY_WITHIN                         = 1
    52  	PDP_ENDIAN                            = 3412
    53  	P_tmpdir                              = "/tmp/"
    54  	SEEK_CUR                              = 1
    55  	SEEK_END                              = 2
    56  	SEEK_SET                              = 0
    57  	SQLITE3_H                             = 0
    58  	SQLITE3_TEXT                          = 3
    59  	SQLITEEXPERT_H                        = 1
    60  	SQLITE_ABORT                          = 4
    61  	SQLITE_ABORT_ROLLBACK                 = 516
    62  	SQLITE_ACCESS_EXISTS                  = 0
    63  	SQLITE_ACCESS_READ                    = 2
    64  	SQLITE_ACCESS_READWRITE               = 1
    65  	SQLITE_ALTER_TABLE                    = 26
    66  	SQLITE_ANALYZE                        = 28
    67  	SQLITE_ANY                            = 5
    68  	SQLITE_API                            = 0
    69  	SQLITE_APICALL                        = 0
    70  	SQLITE_ATTACH                         = 24
    71  	SQLITE_AUTH                           = 23
    72  	SQLITE_AUTH_USER                      = 279
    73  	SQLITE_BLOB                           = 4
    74  	SQLITE_BUSY                           = 5
    75  	SQLITE_BUSY_RECOVERY                  = 261
    76  	SQLITE_BUSY_SNAPSHOT                  = 517
    77  	SQLITE_BUSY_TIMEOUT                   = 773
    78  	SQLITE_CALLBACK                       = 0
    79  	SQLITE_CANTOPEN                       = 14
    80  	SQLITE_CANTOPEN_CONVPATH              = 1038
    81  	SQLITE_CANTOPEN_DIRTYWAL              = 1294
    82  	SQLITE_CANTOPEN_FULLPATH              = 782
    83  	SQLITE_CANTOPEN_ISDIR                 = 526
    84  	SQLITE_CANTOPEN_NOTEMPDIR             = 270
    85  	SQLITE_CANTOPEN_SYMLINK               = 1550
    86  	SQLITE_CDECL                          = 0
    87  	SQLITE_CHANGESETAPPLY_INVERT          = 0x0002
    88  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT     = 0x0001
    89  	SQLITE_CHANGESETSTART_INVERT          = 0x0002
    90  	SQLITE_CHANGESET_ABORT                = 2
    91  	SQLITE_CHANGESET_CONFLICT             = 3
    92  	SQLITE_CHANGESET_CONSTRAINT           = 4
    93  	SQLITE_CHANGESET_DATA                 = 1
    94  	SQLITE_CHANGESET_FOREIGN_KEY          = 5
    95  	SQLITE_CHANGESET_NOTFOUND             = 2
    96  	SQLITE_CHANGESET_OMIT                 = 0
    97  	SQLITE_CHANGESET_REPLACE              = 1
    98  	SQLITE_CHECKPOINT_FULL                = 1
    99  	SQLITE_CHECKPOINT_PASSIVE             = 0
   100  	SQLITE_CHECKPOINT_RESTART             = 2
   101  	SQLITE_CHECKPOINT_TRUNCATE            = 3
   102  	SQLITE_CKSUMVFS_STATIC                = 1
   103  	SQLITE_CONFIG_COVERING_INDEX_SCAN     = 20
   104  	SQLITE_CONFIG_GETMALLOC               = 5
   105  	SQLITE_CONFIG_GETMUTEX                = 11
   106  	SQLITE_CONFIG_GETPCACHE               = 15
   107  	SQLITE_CONFIG_GETPCACHE2              = 19
   108  	SQLITE_CONFIG_HEAP                    = 8
   109  	SQLITE_CONFIG_LOG                     = 16
   110  	SQLITE_CONFIG_LOOKASIDE               = 13
   111  	SQLITE_CONFIG_MALLOC                  = 4
   112  	SQLITE_CONFIG_MEMDB_MAXSIZE           = 29
   113  	SQLITE_CONFIG_MEMSTATUS               = 9
   114  	SQLITE_CONFIG_MMAP_SIZE               = 22
   115  	SQLITE_CONFIG_MULTITHREAD             = 2
   116  	SQLITE_CONFIG_MUTEX                   = 10
   117  	SQLITE_CONFIG_PAGECACHE               = 7
   118  	SQLITE_CONFIG_PCACHE                  = 14
   119  	SQLITE_CONFIG_PCACHE2                 = 18
   120  	SQLITE_CONFIG_PCACHE_HDRSZ            = 24
   121  	SQLITE_CONFIG_PMASZ                   = 25
   122  	SQLITE_CONFIG_SCRATCH                 = 6
   123  	SQLITE_CONFIG_SERIALIZED              = 3
   124  	SQLITE_CONFIG_SINGLETHREAD            = 1
   125  	SQLITE_CONFIG_SMALL_MALLOC            = 27
   126  	SQLITE_CONFIG_SORTERREF_SIZE          = 28
   127  	SQLITE_CONFIG_SQLLOG                  = 21
   128  	SQLITE_CONFIG_STMTJRNL_SPILL          = 26
   129  	SQLITE_CONFIG_URI                     = 17
   130  	SQLITE_CONFIG_WIN32_HEAPSIZE          = 23
   131  	SQLITE_CONSTRAINT                     = 19
   132  	SQLITE_CONSTRAINT_CHECK               = 275
   133  	SQLITE_CONSTRAINT_COMMITHOOK          = 531
   134  	SQLITE_CONSTRAINT_DATATYPE            = 3091
   135  	SQLITE_CONSTRAINT_FOREIGNKEY          = 787
   136  	SQLITE_CONSTRAINT_FUNCTION            = 1043
   137  	SQLITE_CONSTRAINT_NOTNULL             = 1299
   138  	SQLITE_CONSTRAINT_PINNED              = 2835
   139  	SQLITE_CONSTRAINT_PRIMARYKEY          = 1555
   140  	SQLITE_CONSTRAINT_ROWID               = 2579
   141  	SQLITE_CONSTRAINT_TRIGGER             = 1811
   142  	SQLITE_CONSTRAINT_UNIQUE              = 2067
   143  	SQLITE_CONSTRAINT_VTAB                = 2323
   144  	SQLITE_COPY                           = 0
   145  	SQLITE_CORE                           = 1
   146  	SQLITE_CORRUPT                        = 11
   147  	SQLITE_CORRUPT_INDEX                  = 779
   148  	SQLITE_CORRUPT_SEQUENCE               = 523
   149  	SQLITE_CORRUPT_VTAB                   = 267
   150  	SQLITE_CREATE_INDEX                   = 1
   151  	SQLITE_CREATE_TABLE                   = 2
   152  	SQLITE_CREATE_TEMP_INDEX              = 3
   153  	SQLITE_CREATE_TEMP_TABLE              = 4
   154  	SQLITE_CREATE_TEMP_TRIGGER            = 5
   155  	SQLITE_CREATE_TEMP_VIEW               = 6
   156  	SQLITE_CREATE_TRIGGER                 = 7
   157  	SQLITE_CREATE_VIEW                    = 8
   158  	SQLITE_CREATE_VTABLE                  = 29
   159  	SQLITE_DBCONFIG_DEFENSIVE             = 1010
   160  	SQLITE_DBCONFIG_DQS_DDL               = 1014
   161  	SQLITE_DBCONFIG_DQS_DML               = 1013
   162  	SQLITE_DBCONFIG_ENABLE_FKEY           = 1002
   163  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004
   164  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005
   165  	SQLITE_DBCONFIG_ENABLE_QPSG           = 1007
   166  	SQLITE_DBCONFIG_ENABLE_TRIGGER        = 1003
   167  	SQLITE_DBCONFIG_ENABLE_VIEW           = 1015
   168  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    = 1012
   169  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    = 1016
   170  	SQLITE_DBCONFIG_LOOKASIDE             = 1001
   171  	SQLITE_DBCONFIG_MAINDBNAME            = 1000
   172  	SQLITE_DBCONFIG_MAX                   = 1017
   173  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      = 1006
   174  	SQLITE_DBCONFIG_RESET_DATABASE        = 1009
   175  	SQLITE_DBCONFIG_TRIGGER_EQP           = 1008
   176  	SQLITE_DBCONFIG_TRUSTED_SCHEMA        = 1017
   177  	SQLITE_DBCONFIG_WRITABLE_SCHEMA       = 1011
   178  	SQLITE_DBSTATUS_CACHE_HIT             = 7
   179  	SQLITE_DBSTATUS_CACHE_MISS            = 8
   180  	SQLITE_DBSTATUS_CACHE_SPILL           = 12
   181  	SQLITE_DBSTATUS_CACHE_USED            = 1
   182  	SQLITE_DBSTATUS_CACHE_USED_SHARED     = 11
   183  	SQLITE_DBSTATUS_CACHE_WRITE           = 9
   184  	SQLITE_DBSTATUS_DEFERRED_FKS          = 10
   185  	SQLITE_DBSTATUS_LOOKASIDE_HIT         = 4
   186  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   = 6
   187  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   = 5
   188  	SQLITE_DBSTATUS_LOOKASIDE_USED        = 0
   189  	SQLITE_DBSTATUS_MAX                   = 12
   190  	SQLITE_DBSTATUS_SCHEMA_USED           = 2
   191  	SQLITE_DBSTATUS_STMT_USED             = 3
   192  	SQLITE_DEFAULT_MEMSTATUS              = 0
   193  	SQLITE_DEFAULT_PAGE_SIZE              = 1024
   194  	SQLITE_DELETE                         = 9
   195  	SQLITE_DENY                           = 1
   196  	SQLITE_DEPRECATED                     = 0
   197  	SQLITE_DESERIALIZE_FREEONCLOSE        = 1
   198  	SQLITE_DESERIALIZE_READONLY           = 4
   199  	SQLITE_DESERIALIZE_RESIZEABLE         = 2
   200  	SQLITE_DETACH                         = 25
   201  	SQLITE_DETERMINISTIC                  = 0x000000800
   202  	SQLITE_DIRECTONLY                     = 0x000080000
   203  	SQLITE_DONE                           = 101
   204  	SQLITE_DROP_INDEX                     = 10
   205  	SQLITE_DROP_TABLE                     = 11
   206  	SQLITE_DROP_TEMP_INDEX                = 12
   207  	SQLITE_DROP_TEMP_TABLE                = 13
   208  	SQLITE_DROP_TEMP_TRIGGER              = 14
   209  	SQLITE_DROP_TEMP_VIEW                 = 15
   210  	SQLITE_DROP_TRIGGER                   = 16
   211  	SQLITE_DROP_VIEW                      = 17
   212  	SQLITE_DROP_VTABLE                    = 30
   213  	SQLITE_EMPTY                          = 16
   214  	SQLITE_ENABLE_BYTECODE_VTAB           = 1
   215  	SQLITE_ENABLE_COLUMN_METADATA         = 1
   216  	SQLITE_ENABLE_DBPAGE_VTAB             = 1
   217  	SQLITE_ENABLE_DBSTAT_VTAB             = 1
   218  	SQLITE_ENABLE_DESERIALIZE             = 1
   219  	SQLITE_ENABLE_EXPLAIN_COMMENTS        = 1
   220  	SQLITE_ENABLE_FTS5                    = 1
   221  	SQLITE_ENABLE_GEOPOLY                 = 1
   222  	SQLITE_ENABLE_MATH_FUNCTIONS          = 1
   223  	SQLITE_ENABLE_MEMORY_MANAGEMENT       = 1
   224  	SQLITE_ENABLE_OFFSET_SQL_FUNC         = 1
   225  	SQLITE_ENABLE_PREUPDATE_HOOK          = 1
   226  	SQLITE_ENABLE_RBU                     = 1
   227  	SQLITE_ENABLE_RTREE                   = 1
   228  	SQLITE_ENABLE_SESSION                 = 1
   229  	SQLITE_ENABLE_SNAPSHOT                = 1
   230  	SQLITE_ENABLE_STAT4                   = 1
   231  	SQLITE_ENABLE_STMTVTAB                = 1
   232  	SQLITE_ENABLE_UNLOCK_NOTIFY           = 1
   233  	SQLITE_ERROR                          = 1
   234  	SQLITE_ERROR_MISSING_COLLSEQ          = 257
   235  	SQLITE_ERROR_RETRY                    = 513
   236  	SQLITE_ERROR_SNAPSHOT                 = 769
   237  	SQLITE_EXPERIMENTAL                   = 0
   238  	SQLITE_FAIL                           = 3
   239  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE       = 31
   240  	SQLITE_FCNTL_BUSYHANDLER              = 15
   241  	SQLITE_FCNTL_CHUNK_SIZE               = 6
   242  	SQLITE_FCNTL_CKPT_DONE                = 37
   243  	SQLITE_FCNTL_CKPT_START               = 39
   244  	SQLITE_FCNTL_CKSM_FILE                = 41
   245  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE      = 32
   246  	SQLITE_FCNTL_COMMIT_PHASETWO          = 22
   247  	SQLITE_FCNTL_DATA_VERSION             = 35
   248  	SQLITE_FCNTL_EXTERNAL_READER          = 40
   249  	SQLITE_FCNTL_FILE_POINTER             = 7
   250  	SQLITE_FCNTL_GET_LOCKPROXYFILE        = 2
   251  	SQLITE_FCNTL_HAS_MOVED                = 20
   252  	SQLITE_FCNTL_JOURNAL_POINTER          = 28
   253  	SQLITE_FCNTL_LAST_ERRNO               = 4
   254  	SQLITE_FCNTL_LOCKSTATE                = 1
   255  	SQLITE_FCNTL_LOCK_TIMEOUT             = 34
   256  	SQLITE_FCNTL_MMAP_SIZE                = 18
   257  	SQLITE_FCNTL_OVERWRITE                = 11
   258  	SQLITE_FCNTL_PDB                      = 30
   259  	SQLITE_FCNTL_PERSIST_WAL              = 10
   260  	SQLITE_FCNTL_POWERSAFE_OVERWRITE      = 13
   261  	SQLITE_FCNTL_PRAGMA                   = 14
   262  	SQLITE_FCNTL_RBU                      = 26
   263  	SQLITE_FCNTL_RESERVE_BYTES            = 38
   264  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE    = 33
   265  	SQLITE_FCNTL_SET_LOCKPROXYFILE        = 3
   266  	SQLITE_FCNTL_SIZE_HINT                = 5
   267  	SQLITE_FCNTL_SIZE_LIMIT               = 36
   268  	SQLITE_FCNTL_SYNC                     = 21
   269  	SQLITE_FCNTL_SYNC_OMITTED             = 8
   270  	SQLITE_FCNTL_TEMPFILENAME             = 16
   271  	SQLITE_FCNTL_TRACE                    = 19
   272  	SQLITE_FCNTL_VFSNAME                  = 12
   273  	SQLITE_FCNTL_VFS_POINTER              = 27
   274  	SQLITE_FCNTL_WAL_BLOCK                = 24
   275  	SQLITE_FCNTL_WIN32_AV_RETRY           = 9
   276  	SQLITE_FCNTL_WIN32_GET_HANDLE         = 29
   277  	SQLITE_FCNTL_WIN32_SET_HANDLE         = 23
   278  	SQLITE_FCNTL_ZIPVFS                   = 25
   279  	SQLITE_FLOAT                          = 2
   280  	SQLITE_FORMAT                         = 24
   281  	SQLITE_FULL                           = 13
   282  	SQLITE_FUNCTION                       = 31
   283  	SQLITE_GET_LOCKPROXYFILE              = 2
   284  	SQLITE_IGNORE                         = 2
   285  	SQLITE_INDEX_CONSTRAINT_EQ            = 2
   286  	SQLITE_INDEX_CONSTRAINT_FUNCTION      = 150
   287  	SQLITE_INDEX_CONSTRAINT_GE            = 32
   288  	SQLITE_INDEX_CONSTRAINT_GLOB          = 66
   289  	SQLITE_INDEX_CONSTRAINT_GT            = 4
   290  	SQLITE_INDEX_CONSTRAINT_IS            = 72
   291  	SQLITE_INDEX_CONSTRAINT_ISNOT         = 69
   292  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL     = 70
   293  	SQLITE_INDEX_CONSTRAINT_ISNULL        = 71
   294  	SQLITE_INDEX_CONSTRAINT_LE            = 8
   295  	SQLITE_INDEX_CONSTRAINT_LIKE          = 65
   296  	SQLITE_INDEX_CONSTRAINT_LIMIT         = 73
   297  	SQLITE_INDEX_CONSTRAINT_LT            = 16
   298  	SQLITE_INDEX_CONSTRAINT_MATCH         = 64
   299  	SQLITE_INDEX_CONSTRAINT_NE            = 68
   300  	SQLITE_INDEX_CONSTRAINT_OFFSET        = 74
   301  	SQLITE_INDEX_CONSTRAINT_REGEXP        = 67
   302  	SQLITE_INDEX_SCAN_UNIQUE              = 1
   303  	SQLITE_INNOCUOUS                      = 0x000200000
   304  	SQLITE_INSERT                         = 18
   305  	SQLITE_INTEGER                        = 1
   306  	SQLITE_INTERNAL                       = 2
   307  	SQLITE_INTERRUPT                      = 9
   308  	SQLITE_IOCAP_ATOMIC                   = 0x00000001
   309  	SQLITE_IOCAP_ATOMIC16K                = 0x00000040
   310  	SQLITE_IOCAP_ATOMIC1K                 = 0x00000004
   311  	SQLITE_IOCAP_ATOMIC2K                 = 0x00000008
   312  	SQLITE_IOCAP_ATOMIC32K                = 0x00000080
   313  	SQLITE_IOCAP_ATOMIC4K                 = 0x00000010
   314  	SQLITE_IOCAP_ATOMIC512                = 0x00000002
   315  	SQLITE_IOCAP_ATOMIC64K                = 0x00000100
   316  	SQLITE_IOCAP_ATOMIC8K                 = 0x00000020
   317  	SQLITE_IOCAP_BATCH_ATOMIC             = 0x00004000
   318  	SQLITE_IOCAP_IMMUTABLE                = 0x00002000
   319  	SQLITE_IOCAP_POWERSAFE_OVERWRITE      = 0x00001000
   320  	SQLITE_IOCAP_SAFE_APPEND              = 0x00000200
   321  	SQLITE_IOCAP_SEQUENTIAL               = 0x00000400
   322  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN    = 0x00000800
   323  	SQLITE_IOERR                          = 10
   324  	SQLITE_IOERR_ACCESS                   = 3338
   325  	SQLITE_IOERR_AUTH                     = 7178
   326  	SQLITE_IOERR_BEGIN_ATOMIC             = 7434
   327  	SQLITE_IOERR_BLOCKED                  = 2826
   328  	SQLITE_IOERR_CHECKRESERVEDLOCK        = 3594
   329  	SQLITE_IOERR_CLOSE                    = 4106
   330  	SQLITE_IOERR_COMMIT_ATOMIC            = 7690
   331  	SQLITE_IOERR_CONVPATH                 = 6666
   332  	SQLITE_IOERR_CORRUPTFS                = 8458
   333  	SQLITE_IOERR_DATA                     = 8202
   334  	SQLITE_IOERR_DELETE                   = 2570
   335  	SQLITE_IOERR_DELETE_NOENT             = 5898
   336  	SQLITE_IOERR_DIR_CLOSE                = 4362
   337  	SQLITE_IOERR_DIR_FSYNC                = 1290
   338  	SQLITE_IOERR_FSTAT                    = 1802
   339  	SQLITE_IOERR_FSYNC                    = 1034
   340  	SQLITE_IOERR_GETTEMPPATH              = 6410
   341  	SQLITE_IOERR_LOCK                     = 3850
   342  	SQLITE_IOERR_MMAP                     = 6154
   343  	SQLITE_IOERR_NOMEM                    = 3082
   344  	SQLITE_IOERR_RDLOCK                   = 2314
   345  	SQLITE_IOERR_READ                     = 266
   346  	SQLITE_IOERR_ROLLBACK_ATOMIC          = 7946
   347  	SQLITE_IOERR_SEEK                     = 5642
   348  	SQLITE_IOERR_SHMLOCK                  = 5130
   349  	SQLITE_IOERR_SHMMAP                   = 5386
   350  	SQLITE_IOERR_SHMOPEN                  = 4618
   351  	SQLITE_IOERR_SHMSIZE                  = 4874
   352  	SQLITE_IOERR_SHORT_READ               = 522
   353  	SQLITE_IOERR_TRUNCATE                 = 1546
   354  	SQLITE_IOERR_UNLOCK                   = 2058
   355  	SQLITE_IOERR_VNODE                    = 6922
   356  	SQLITE_IOERR_WRITE                    = 778
   357  	SQLITE_LAST_ERRNO                     = 4
   358  	SQLITE_LIKE_DOESNT_MATCH_BLOBS        = 1
   359  	SQLITE_LIMIT_ATTACHED                 = 7
   360  	SQLITE_LIMIT_COLUMN                   = 2
   361  	SQLITE_LIMIT_COMPOUND_SELECT          = 4
   362  	SQLITE_LIMIT_EXPR_DEPTH               = 3
   363  	SQLITE_LIMIT_FUNCTION_ARG             = 6
   364  	SQLITE_LIMIT_LENGTH                   = 0
   365  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH      = 8
   366  	SQLITE_LIMIT_SQL_LENGTH               = 1
   367  	SQLITE_LIMIT_TRIGGER_DEPTH            = 10
   368  	SQLITE_LIMIT_VARIABLE_NUMBER          = 9
   369  	SQLITE_LIMIT_VDBE_OP                  = 5
   370  	SQLITE_LIMIT_WORKER_THREADS           = 11
   371  	SQLITE_LOCKED                         = 6
   372  	SQLITE_LOCKED_SHAREDCACHE             = 262
   373  	SQLITE_LOCKED_VTAB                    = 518
   374  	SQLITE_LOCK_EXCLUSIVE                 = 4
   375  	SQLITE_LOCK_NONE                      = 0
   376  	SQLITE_LOCK_PENDING                   = 3
   377  	SQLITE_LOCK_RESERVED                  = 2
   378  	SQLITE_LOCK_SHARED                    = 1
   379  	SQLITE_MISMATCH                       = 20
   380  	SQLITE_MISUSE                         = 21
   381  	SQLITE_MUTEX_APPDEF                   = 1
   382  	SQLITE_MUTEX_FAST                     = 0
   383  	SQLITE_MUTEX_NOOP                     = 1
   384  	SQLITE_MUTEX_RECURSIVE                = 1
   385  	SQLITE_MUTEX_STATIC_APP1              = 8
   386  	SQLITE_MUTEX_STATIC_APP2              = 9
   387  	SQLITE_MUTEX_STATIC_APP3              = 10
   388  	SQLITE_MUTEX_STATIC_LRU               = 6
   389  	SQLITE_MUTEX_STATIC_LRU2              = 7
   390  	SQLITE_MUTEX_STATIC_MAIN              = 2
   391  	SQLITE_MUTEX_STATIC_MASTER            = 2
   392  	SQLITE_MUTEX_STATIC_MEM               = 3
   393  	SQLITE_MUTEX_STATIC_MEM2              = 4
   394  	SQLITE_MUTEX_STATIC_OPEN              = 4
   395  	SQLITE_MUTEX_STATIC_PMEM              = 7
   396  	SQLITE_MUTEX_STATIC_PRNG              = 5
   397  	SQLITE_MUTEX_STATIC_VFS1              = 11
   398  	SQLITE_MUTEX_STATIC_VFS2              = 12
   399  	SQLITE_MUTEX_STATIC_VFS3              = 13
   400  	SQLITE_NOLFS                          = 22
   401  	SQLITE_NOMEM                          = 7
   402  	SQLITE_NOTADB                         = 26
   403  	SQLITE_NOTFOUND                       = 12
   404  	SQLITE_NOTICE                         = 27
   405  	SQLITE_NOTICE_RECOVER_ROLLBACK        = 539
   406  	SQLITE_NOTICE_RECOVER_WAL             = 283
   407  	SQLITE_NULL                           = 5
   408  	SQLITE_OK                             = 0
   409  	SQLITE_OK_LOAD_PERMANENTLY            = 256
   410  	SQLITE_OK_SYMLINK                     = 512
   411  	SQLITE_OMIT_LOAD_EXTENSION            = 1
   412  	SQLITE_OPEN_AUTOPROXY                 = 0x00000020
   413  	SQLITE_OPEN_CREATE                    = 0x00000004
   414  	SQLITE_OPEN_DELETEONCLOSE             = 0x00000008
   415  	SQLITE_OPEN_EXCLUSIVE                 = 0x00000010
   416  	SQLITE_OPEN_EXRESCODE                 = 0x02000000
   417  	SQLITE_OPEN_FULLMUTEX                 = 0x00010000
   418  	SQLITE_OPEN_MAIN_DB                   = 0x00000100
   419  	SQLITE_OPEN_MAIN_JOURNAL              = 0x00000800
   420  	SQLITE_OPEN_MASTER_JOURNAL            = 0x00004000
   421  	SQLITE_OPEN_MEMORY                    = 0x00000080
   422  	SQLITE_OPEN_NOFOLLOW                  = 0x01000000
   423  	SQLITE_OPEN_NOMUTEX                   = 0x00008000
   424  	SQLITE_OPEN_PRIVATECACHE              = 0x00040000
   425  	SQLITE_OPEN_READONLY                  = 0x00000001
   426  	SQLITE_OPEN_READWRITE                 = 0x00000002
   427  	SQLITE_OPEN_SHAREDCACHE               = 0x00020000
   428  	SQLITE_OPEN_SUBJOURNAL                = 0x00002000
   429  	SQLITE_OPEN_SUPER_JOURNAL             = 0x00004000
   430  	SQLITE_OPEN_TEMP_DB                   = 0x00000200
   431  	SQLITE_OPEN_TEMP_JOURNAL              = 0x00001000
   432  	SQLITE_OPEN_TRANSIENT_DB              = 0x00000400
   433  	SQLITE_OPEN_URI                       = 0x00000040
   434  	SQLITE_OPEN_WAL                       = 0x00080000
   435  	SQLITE_PERM                           = 3
   436  	SQLITE_PRAGMA                         = 19
   437  	SQLITE_PREPARE_NORMALIZE              = 0x02
   438  	SQLITE_PREPARE_NO_VTAB                = 0x04
   439  	SQLITE_PREPARE_PERSISTENT             = 0x01
   440  	SQLITE_PROTOCOL                       = 15
   441  	SQLITE_RANGE                          = 25
   442  	SQLITE_READ                           = 20
   443  	SQLITE_READONLY                       = 8
   444  	SQLITE_READONLY_CANTINIT              = 1288
   445  	SQLITE_READONLY_CANTLOCK              = 520
   446  	SQLITE_READONLY_DBMOVED               = 1032
   447  	SQLITE_READONLY_DIRECTORY             = 1544
   448  	SQLITE_READONLY_RECOVERY              = 264
   449  	SQLITE_READONLY_ROLLBACK              = 776
   450  	SQLITE_RECURSIVE                      = 33
   451  	SQLITE_REINDEX                        = 27
   452  	SQLITE_REPLACE                        = 5
   453  	SQLITE_ROLLBACK                       = 1
   454  	SQLITE_ROW                            = 100
   455  	SQLITE_SAVEPOINT                      = 32
   456  	SQLITE_SCANSTAT_EST                   = 2
   457  	SQLITE_SCANSTAT_EXPLAIN               = 4
   458  	SQLITE_SCANSTAT_NAME                  = 3
   459  	SQLITE_SCANSTAT_NLOOP                 = 0
   460  	SQLITE_SCANSTAT_NVISIT                = 1
   461  	SQLITE_SCANSTAT_SELECTID              = 5
   462  	SQLITE_SCHEMA                         = 17
   463  	SQLITE_SELECT                         = 21
   464  	SQLITE_SERIALIZE_NOCOPY               = 0x001
   465  	SQLITE_SERIES_CONSTRAINT_VERIFY       = 1
   466  	SQLITE_SERVER                         = 1
   467  	SQLITE_SESSION_CONFIG_STRMSIZE        = 1
   468  	SQLITE_SESSION_OBJCONFIG_SIZE         = 1
   469  	SQLITE_SET_LOCKPROXYFILE              = 3
   470  	SQLITE_SHM_EXCLUSIVE                  = 8
   471  	SQLITE_SHM_LOCK                       = 2
   472  	SQLITE_SHM_NLOCK                      = 8
   473  	SQLITE_SHM_SHARED                     = 4
   474  	SQLITE_SHM_UNLOCK                     = 1
   475  	SQLITE_SOUNDEX                        = 1
   476  	SQLITE_SOURCE_ID                      = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   477  	SQLITE_STATUS_MALLOC_COUNT            = 9
   478  	SQLITE_STATUS_MALLOC_SIZE             = 5
   479  	SQLITE_STATUS_MEMORY_USED             = 0
   480  	SQLITE_STATUS_PAGECACHE_OVERFLOW      = 2
   481  	SQLITE_STATUS_PAGECACHE_SIZE          = 7
   482  	SQLITE_STATUS_PAGECACHE_USED          = 1
   483  	SQLITE_STATUS_PARSER_STACK            = 6
   484  	SQLITE_STATUS_SCRATCH_OVERFLOW        = 4
   485  	SQLITE_STATUS_SCRATCH_SIZE            = 8
   486  	SQLITE_STATUS_SCRATCH_USED            = 3
   487  	SQLITE_STDCALL                        = 0
   488  	SQLITE_STMTSTATUS_AUTOINDEX           = 3
   489  	SQLITE_STMTSTATUS_FILTER_HIT          = 8
   490  	SQLITE_STMTSTATUS_FILTER_MISS         = 7
   491  	SQLITE_STMTSTATUS_FULLSCAN_STEP       = 1
   492  	SQLITE_STMTSTATUS_MEMUSED             = 99
   493  	SQLITE_STMTSTATUS_REPREPARE           = 5
   494  	SQLITE_STMTSTATUS_RUN                 = 6
   495  	SQLITE_STMTSTATUS_SORT                = 2
   496  	SQLITE_STMTSTATUS_VM_STEP             = 4
   497  	SQLITE_SUBTYPE                        = 0x000100000
   498  	SQLITE_SYNC_DATAONLY                  = 0x00010
   499  	SQLITE_SYNC_FULL                      = 0x00003
   500  	SQLITE_SYNC_NORMAL                    = 0x00002
   501  	SQLITE_SYSAPI                         = 0
   502  	SQLITE_TEMP_STORE                     = 1
   503  	SQLITE_TEST                           = 1
   504  	SQLITE_TESTCTRL_ALWAYS                = 13
   505  	SQLITE_TESTCTRL_ASSERT                = 12
   506  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   = 10
   507  	SQLITE_TESTCTRL_BITVEC_TEST           = 8
   508  	SQLITE_TESTCTRL_BYTEORDER             = 22
   509  	SQLITE_TESTCTRL_EXPLAIN_STMT          = 19
   510  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   = 29
   511  	SQLITE_TESTCTRL_FAULT_INSTALL         = 9
   512  	SQLITE_TESTCTRL_FIRST                 = 5
   513  	SQLITE_TESTCTRL_IMPOSTER              = 25
   514  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS    = 17
   515  	SQLITE_TESTCTRL_ISINIT                = 23
   516  	SQLITE_TESTCTRL_ISKEYWORD             = 16
   517  	SQLITE_TESTCTRL_LAST                  = 33
   518  	SQLITE_TESTCTRL_LOCALTIME_FAULT       = 18
   519  	SQLITE_TESTCTRL_LOGEST                = 33
   520  	SQLITE_TESTCTRL_NEVER_CORRUPT         = 20
   521  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD  = 19
   522  	SQLITE_TESTCTRL_OPTIMIZATIONS         = 15
   523  	SQLITE_TESTCTRL_PARSER_COVERAGE       = 26
   524  	SQLITE_TESTCTRL_PENDING_BYTE          = 11
   525  	SQLITE_TESTCTRL_PRNG_RESET            = 7
   526  	SQLITE_TESTCTRL_PRNG_RESTORE          = 6
   527  	SQLITE_TESTCTRL_PRNG_SAVE             = 5
   528  	SQLITE_TESTCTRL_PRNG_SEED             = 28
   529  	SQLITE_TESTCTRL_RESERVE               = 14
   530  	SQLITE_TESTCTRL_RESULT_INTREAL        = 27
   531  	SQLITE_TESTCTRL_SCRATCHMALLOC         = 17
   532  	SQLITE_TESTCTRL_SEEK_COUNT            = 30
   533  	SQLITE_TESTCTRL_SORTER_MMAP           = 24
   534  	SQLITE_TESTCTRL_TRACEFLAGS            = 31
   535  	SQLITE_TESTCTRL_TUNE                  = 32
   536  	SQLITE_TESTCTRL_VDBE_COVERAGE         = 21
   537  	SQLITE_TEXT                           = 3
   538  	SQLITE_THREADSAFE                     = 1
   539  	SQLITE_TOOBIG                         = 18
   540  	SQLITE_TRACE_CLOSE                    = 0x08
   541  	SQLITE_TRACE_PROFILE                  = 0x02
   542  	SQLITE_TRACE_ROW                      = 0x04
   543  	SQLITE_TRACE_STMT                     = 0x01
   544  	SQLITE_TRANSACTION                    = 22
   545  	SQLITE_TXN_NONE                       = 0
   546  	SQLITE_TXN_READ                       = 1
   547  	SQLITE_TXN_WRITE                      = 2
   548  	SQLITE_UPDATE                         = 23
   549  	SQLITE_UTF16                          = 4
   550  	SQLITE_UTF16BE                        = 3
   551  	SQLITE_UTF16LE                        = 2
   552  	SQLITE_UTF16_ALIGNED                  = 8
   553  	SQLITE_UTF8                           = 1
   554  	SQLITE_VERSION                        = "3.39.3"
   555  	SQLITE_VERSION_NUMBER                 = 3039003
   556  	SQLITE_VTAB_CONSTRAINT_SUPPORT        = 1
   557  	SQLITE_VTAB_DIRECTONLY                = 3
   558  	SQLITE_VTAB_INNOCUOUS                 = 2
   559  	SQLITE_WARNING                        = 28
   560  	SQLITE_WARNING_AUTOINDEX              = 284
   561  	SQLITE_WIN32_DATA_DIRECTORY_TYPE      = 1
   562  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE      = 2
   563  	TMP_MAX                               = 0x7fffffff
   564  	UNIQUE_TABLE_NAME                     = "t592690916721053953805701627921227776"
   565  	X_ASSERT_H_                           = 0
   566  	X_BIG_ENDIAN                          = 4321
   567  	X_BYTE_ORDER                          = 1234
   568  	X_CLOCKID_T_DEFINED_                  = 0
   569  	X_CLOCK_T_DEFINED_                    = 0
   570  	X_FILE_OFFSET_BITS                    = 64
   571  	X_FSTDIO                              = 0
   572  	X_FTS5_H                              = 0
   573  	X_HAVE_SQLITE_CONFIG_H                = 1
   574  	X_INT16_T_DEFINED_                    = 0
   575  	X_INT32_T_DEFINED_                    = 0
   576  	X_INT64_T_DEFINED_                    = 0
   577  	X_INT8_T_DEFINED_                     = 0
   578  	X_IOFBF                               = 0
   579  	X_IOLBF                               = 1
   580  	X_IONBF                               = 2
   581  	X_LITTLE_ENDIAN                       = 1234
   582  	X_LOCALE_T_DEFINED_                   = 0
   583  	X_LP64                                = 1
   584  	X_MACHINE_CDEFS_H_                    = 0
   585  	X_MACHINE_ENDIAN_H_                   = 0
   586  	X_MACHINE__TYPES_H_                   = 0
   587  	X_MAX_PAGE_SHIFT                      = 12
   588  	X_OFF_T_DEFINED_                      = 0
   589  	X_PDP_ENDIAN                          = 3412
   590  	X_PID_T_DEFINED_                      = 0
   591  	X_QUAD_HIGHWORD                       = 1
   592  	X_QUAD_LOWWORD                        = 0
   593  	X_RET_PROTECTOR                       = 1
   594  	X_SIZE_T_DEFINED_                     = 0
   595  	X_SQLITE3RTREE_H_                     = 0
   596  	X_SSIZE_T_DEFINED_                    = 0
   597  	X_STACKALIGNBYTES                     = 15
   598  	X_STDARG_H_                           = 0
   599  	X_STDIO_H_                            = 0
   600  	X_STRINGS_H_                          = 0
   601  	X_STRING_H_                           = 0
   602  	X_SYS_CDEFS_H_                        = 0
   603  	X_SYS_ENDIAN_H_                       = 0
   604  	X_SYS_TYPES_H_                        = 0
   605  	X_SYS__ENDIAN_H_                      = 0
   606  	X_SYS__TYPES_H_                       = 0
   607  	X_TIMER_T_DEFINED_                    = 0
   608  	X_TIME_T_DEFINED_                     = 0
   609  	X_UINT16_T_DEFINED_                   = 0
   610  	X_UINT32_T_DEFINED_                   = 0
   611  	X_UINT64_T_DEFINED_                   = 0
   612  	X_UINT8_T_DEFINED_                    = 0
   613  	Unix                                  = 1
   614  	CRTIMPORT                             = 0
   615  	DLLIMPORT                             = 0
   616  	INLINE                                = 0
   617  	MP_DIGIT_DECLARED                     = 0
   618  	MP_INT_DECLARED                       = 0
   619  	NUM_STATIC_TOKENS                     = 20
   620  	SQLITE_TCLAPI                         = 0
   621  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   622  	TCL_ALL_EVENTS                        = -3
   623  	TCL_ALPHA_RELEASE                     = 0
   624  	TCL_APPEND_VALUE                      = 4
   625  	TCL_ARGV_CONSTANT                     = 15
   626  	TCL_ARGV_END                          = 23
   627  	TCL_ARGV_FLOAT                        = 19
   628  	TCL_ARGV_FUNC                         = 20
   629  	TCL_ARGV_GENFUNC                      = 21
   630  	TCL_ARGV_HELP                         = 22
   631  	TCL_ARGV_INT                          = 16
   632  	TCL_ARGV_REST                         = 18
   633  	TCL_ARGV_STRING                       = 17
   634  	TCL_BETA_RELEASE                      = 1
   635  	TCL_BREAK                             = 3
   636  	TCL_CANCEL_UNWIND                     = 0x100000
   637  	TCL_CHANNEL_THREAD_INSERT             = 0
   638  	TCL_CHANNEL_THREAD_REMOVE             = 1
   639  	TCL_CLOSE_READ                        = 2
   640  	TCL_CLOSE_WRITE                       = 4
   641  	TCL_CONTINUE                          = 4
   642  	TCL_CONVERT_MULTIBYTE                 = -1
   643  	TCL_CONVERT_NOSPACE                   = -4
   644  	TCL_CONVERT_SYNTAX                    = -2
   645  	TCL_CONVERT_UNKNOWN                   = -3
   646  	TCL_CREATE_HARD_LINK                  = 0x02
   647  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   648  	TCL_CUSTOM_PTR_KEYS                   = -1
   649  	TCL_CUSTOM_TYPE_KEYS                  = -2
   650  	TCL_DONT_QUOTE_HASH                   = 8
   651  	TCL_DONT_USE_BRACES                   = 1
   652  	TCL_DONT_WAIT                         = 2
   653  	TCL_DOUBLE_SPACE                      = 27
   654  	TCL_DSTRING_STATIC_SIZE               = 200
   655  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   656  	TCL_ENCODING_END                      = 0x02
   657  	TCL_ENCODING_NO_TERMINATE             = 0x08
   658  	TCL_ENCODING_START                    = 0x01
   659  	TCL_ENCODING_STOPONERROR              = 0x04
   660  	TCL_ENFORCE_MODE                      = 16
   661  	TCL_ENSEMBLE_PREFIX                   = 0x02
   662  	TCL_ERROR                             = 1
   663  	TCL_EVAL_DIRECT                       = 0x040000
   664  	TCL_EVAL_GLOBAL                       = 0x020000
   665  	TCL_EVAL_INVOKE                       = 0x080000
   666  	TCL_EVAL_NOERR                        = 0x200000
   667  	TCL_EXACT                             = 1
   668  	TCL_EXCEPTION                         = 8
   669  	TCL_FILE_EVENTS                       = 8
   670  	TCL_FINAL_RELEASE                     = 2
   671  	TCL_GLOBAL_ONLY                       = 1
   672  	TCL_GLOB_PERM_HIDDEN                  = 2
   673  	TCL_GLOB_PERM_R                       = 4
   674  	TCL_GLOB_PERM_RONLY                   = 1
   675  	TCL_GLOB_PERM_W                       = 8
   676  	TCL_GLOB_PERM_X                       = 16
   677  	TCL_GLOB_TYPE_BLOCK                   = 1
   678  	TCL_GLOB_TYPE_CHAR                    = 2
   679  	TCL_GLOB_TYPE_DIR                     = 4
   680  	TCL_GLOB_TYPE_FILE                    = 16
   681  	TCL_GLOB_TYPE_LINK                    = 32
   682  	TCL_GLOB_TYPE_MOUNT                   = 128
   683  	TCL_GLOB_TYPE_PIPE                    = 8
   684  	TCL_GLOB_TYPE_SOCK                    = 64
   685  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   686  	TCL_HASH_KEY_STORE_HASH               = 1
   687  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   688  	TCL_HASH_KEY_TYPE_VERSION             = 1
   689  	TCL_IDLE_EVENTS                       = 32
   690  	TCL_INTEGER_SPACE                     = 24
   691  	TCL_INTERP_DESTROYED                  = 0x100
   692  	TCL_LEAVE_ERR_MSG                     = 0x200
   693  	TCL_LIMIT_COMMANDS                    = 0x01
   694  	TCL_LIMIT_TIME                        = 0x02
   695  	TCL_LINK_BOOLEAN                      = 3
   696  	TCL_LINK_CHAR                         = 6
   697  	TCL_LINK_DOUBLE                       = 2
   698  	TCL_LINK_FLOAT                        = 13
   699  	TCL_LINK_INT                          = 1
   700  	TCL_LINK_LONG                         = 11
   701  	TCL_LINK_READ_ONLY                    = 0x80
   702  	TCL_LINK_SHORT                        = 8
   703  	TCL_LINK_STRING                       = 4
   704  	TCL_LINK_UCHAR                        = 7
   705  	TCL_LINK_UINT                         = 10
   706  	TCL_LINK_ULONG                        = 12
   707  	TCL_LINK_USHORT                       = 9
   708  	TCL_LINK_WIDE_INT                     = 5
   709  	TCL_LINK_WIDE_UINT                    = 14
   710  	TCL_LIST_ELEMENT                      = 8
   711  	TCL_LL_MODIFIER                       = "ll"
   712  	TCL_LOAD_GLOBAL                       = 1
   713  	TCL_LOAD_LAZY                         = 2
   714  	TCL_MAJOR_VERSION                     = 8
   715  	TCL_MATCH_NOCASE                      = 1
   716  	TCL_MAX_PREC                          = 17
   717  	TCL_MINOR_VERSION                     = 6
   718  	TCL_MODE_BLOCKING                     = 0
   719  	TCL_MODE_NONBLOCKING                  = 1
   720  	TCL_NAMESPACE_ONLY                    = 2
   721  	TCL_NORETURN1                         = 0
   722  	TCL_NO_EVAL                           = 0x010000
   723  	TCL_OK                                = 0
   724  	TCL_ONE_WORD_KEYS                     = 1
   725  	TCL_PARSE_BAD_NUMBER                  = 9
   726  	TCL_PARSE_BRACE_EXTRA                 = 2
   727  	TCL_PARSE_MISSING_BRACE               = 3
   728  	TCL_PARSE_MISSING_BRACKET             = 4
   729  	TCL_PARSE_MISSING_PAREN               = 5
   730  	TCL_PARSE_MISSING_QUOTE               = 6
   731  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   732  	TCL_PARSE_PART1                       = 0x400
   733  	TCL_PARSE_QUOTE_EXTRA                 = 1
   734  	TCL_PARSE_SUCCESS                     = 0
   735  	TCL_PARSE_SYNTAX                      = 8
   736  	TCL_PATCH_LEVEL                       = "8.6.12"
   737  	TCL_READABLE                          = 2
   738  	TCL_REG_ADVANCED                      = 000003
   739  	TCL_REG_ADVF                          = 000002
   740  	TCL_REG_BASIC                         = 000000
   741  	TCL_REG_CANMATCH                      = 001000
   742  	TCL_REG_EXPANDED                      = 000040
   743  	TCL_REG_EXTENDED                      = 000001
   744  	TCL_REG_NEWLINE                       = 000300
   745  	TCL_REG_NLANCH                        = 000200
   746  	TCL_REG_NLSTOP                        = 000100
   747  	TCL_REG_NOCASE                        = 000010
   748  	TCL_REG_NOSUB                         = 000020
   749  	TCL_REG_NOTBOL                        = 0001
   750  	TCL_REG_NOTEOL                        = 0002
   751  	TCL_REG_QUOTE                         = 000004
   752  	TCL_RELEASE_LEVEL                     = 2
   753  	TCL_RELEASE_SERIAL                    = 12
   754  	TCL_RESULT_SIZE                       = 200
   755  	TCL_RETURN                            = 2
   756  	TCL_SERVICE_ALL                       = 1
   757  	TCL_SERVICE_NONE                      = 0
   758  	TCL_SMALL_HASH_TABLE                  = 4
   759  	TCL_STDERR                            = 8
   760  	TCL_STDIN                             = 2
   761  	TCL_STDOUT                            = 4
   762  	TCL_STORAGE_CLASS                     = 0
   763  	TCL_STRING_KEYS                       = 0
   764  	TCL_SUBST_ALL                         = 007
   765  	TCL_SUBST_BACKSLASHES                 = 004
   766  	TCL_SUBST_COMMANDS                    = 001
   767  	TCL_SUBST_VARIABLES                   = 002
   768  	TCL_THREAD_CREATE_RETURN              = 0
   769  	TCL_THREAD_JOINABLE                   = 1
   770  	TCL_THREAD_NOFLAGS                    = 0
   771  	TCL_THREAD_STACK_DEFAULT              = 0
   772  	TCL_TIMER_EVENTS                      = 16
   773  	TCL_TOKEN_BS                          = 8
   774  	TCL_TOKEN_COMMAND                     = 16
   775  	TCL_TOKEN_EXPAND_WORD                 = 256
   776  	TCL_TOKEN_OPERATOR                    = 128
   777  	TCL_TOKEN_SIMPLE_WORD                 = 2
   778  	TCL_TOKEN_SUB_EXPR                    = 64
   779  	TCL_TOKEN_TEXT                        = 4
   780  	TCL_TOKEN_VARIABLE                    = 32
   781  	TCL_TOKEN_WORD                        = 1
   782  	TCL_TRACE_ARRAY                       = 0x800
   783  	TCL_TRACE_DELETE                      = 0x4000
   784  	TCL_TRACE_DESTROYED                   = 0x80
   785  	TCL_TRACE_OLD_STYLE                   = 0x1000
   786  	TCL_TRACE_READS                       = 0x10
   787  	TCL_TRACE_RENAME                      = 0x2000
   788  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   789  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   790  	TCL_TRACE_UNSETS                      = 0x40
   791  	TCL_TRACE_WRITES                      = 0x20
   792  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   793  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   794  	TCL_UTF_MAX                           = 3
   795  	TCL_VERSION                           = "8.6"
   796  	TCL_WINDOW_EVENTS                     = 4
   797  	TCL_WRITABLE                          = 4
   798  	TCL_ZLIB_COMPRESS_BEST                = 9
   799  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   800  	TCL_ZLIB_COMPRESS_FAST                = 1
   801  	TCL_ZLIB_COMPRESS_NONE                = 0
   802  	TCL_ZLIB_FINALIZE                     = 4
   803  	TCL_ZLIB_FLUSH                        = 2
   804  	TCL_ZLIB_FORMAT_AUTO                  = 8
   805  	TCL_ZLIB_FORMAT_GZIP                  = 4
   806  	TCL_ZLIB_FORMAT_RAW                   = 1
   807  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   808  	TCL_ZLIB_FULLFLUSH                    = 3
   809  	TCL_ZLIB_NO_FLUSH                     = 0
   810  	TCL_ZLIB_STREAM_DEFLATE               = 16
   811  	TCL_ZLIB_STREAM_INFLATE               = 32
   812  	X_CLIENTDATA                          = 0
   813  	X_TCL                                 = 0
   814  	X_TCLDECLS                            = 0
   815  	X_TCLPLATDECLS                        = 0
   816  	X_FTSINT_H                            = 0
   817  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   818  	APND_MARK_FOS_SZ                      = 8
   819  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   820  	APND_MARK_PREFIX_SZ                   = 17
   821  	APND_MARK_SIZE                        = 25
   822  	APND_MAX_SIZE                         = 1073741824
   823  	APND_ROUNDUP                          = 4096
   824  	SQLITE3EXT_H                          = 0
   825  	SQLITE_EXTENSION_INIT1                = 0
   826  	SQLITE_EXTENSION_INIT3                = 0
   827  	AMATCH_COL_COMMAND                    = 3
   828  	AMATCH_COL_DISTANCE                   = 1
   829  	AMATCH_COL_LANGUAGE                   = 2
   830  	AMATCH_COL_NWORD                      = 4
   831  	AMATCH_COL_WORD                       = 0
   832  	AMATCH_MX_COST                        = 1000
   833  	AMATCH_MX_LANGID                      = 2147483647
   834  	AMATCH_MX_LENGTH                      = 50
   835  	EXIT_FAILURE                          = 1
   836  	EXIT_SUCCESS                          = 0
   837  	RAND_MAX                              = 0x7fffffff
   838  	X_B                                   = 0x80
   839  	X_C                                   = 0x20
   840  	X_CTYPE_H_                            = 0
   841  	X_L                                   = 0x02
   842  	X_N                                   = 0x04
   843  	X_P                                   = 0x10
   844  	X_S                                   = 0x08
   845  	X_STDLIB_H_                           = 0
   846  	X_U                                   = 0x01
   847  	X_WCHAR_T_DEFINED_                    = 0
   848  	X_X                                   = 0x40
   849  	CARRAY_COLUMN_COUNT                   = 2
   850  	CARRAY_COLUMN_CTYPE                   = 3
   851  	CARRAY_COLUMN_POINTER                 = 1
   852  	CARRAY_COLUMN_VALUE                   = 0
   853  	CARRAY_DOUBLE                         = 2
   854  	CARRAY_INT32                          = 0
   855  	CARRAY_INT64                          = 1
   856  	CARRAY_TEXT                           = 3
   857  	CLOSURE_COL_DEPTH                     = 1
   858  	CLOSURE_COL_ID                        = 0
   859  	CLOSURE_COL_IDCOLUMN                  = 4
   860  	CLOSURE_COL_PARENTCOLUMN              = 5
   861  	CLOSURE_COL_ROOT                      = 2
   862  	CLOSURE_COL_TABLENAME                 = 3
   863  	CSVTEST_FIDX                          = 0x0001
   864  	CSV_INBUFSZ                           = 1024
   865  	CSV_MXERR                             = 200
   866  	EXPLN_COLUMN_ADDR                     = 0
   867  	EXPLN_COLUMN_COMMENT                  = 7
   868  	EXPLN_COLUMN_OPCODE                   = 1
   869  	EXPLN_COLUMN_P1                       = 2
   870  	EXPLN_COLUMN_P2                       = 3
   871  	EXPLN_COLUMN_P3                       = 4
   872  	EXPLN_COLUMN_P4                       = 5
   873  	EXPLN_COLUMN_P5                       = 6
   874  	EXPLN_COLUMN_SQL                      = 8
   875  	ACCESSPERMS                           = 511
   876  	ALLPERMS                              = 4095
   877  	AT_EACCESS                            = 0x01
   878  	AT_FDCWD                              = -100
   879  	AT_REMOVEDIR                          = 0x08
   880  	AT_SYMLINK_FOLLOW                     = 0x04
   881  	AT_SYMLINK_NOFOLLOW                   = 0x02
   882  	CLK_TCK                               = 100
   883  	CLOCKS_PER_SEC                        = 100
   884  	CLOCK_BOOTTIME                        = 6
   885  	CLOCK_MONOTONIC                       = 3
   886  	CLOCK_PROCESS_CPUTIME_ID              = 2
   887  	CLOCK_REALTIME                        = 0
   888  	CLOCK_THREAD_CPUTIME_ID               = 4
   889  	CLOCK_UPTIME                          = 5
   890  	DEFFILEMODE                           = 438
   891  	DIRBLKSIZ                             = 1024
   892  	DST_AUST                              = 2
   893  	DST_CAN                               = 6
   894  	DST_EET                               = 5
   895  	DST_MET                               = 4
   896  	DST_NONE                              = 0
   897  	DST_USA                               = 1
   898  	DST_WET                               = 3
   899  	DT_BLK                                = 6
   900  	DT_CHR                                = 2
   901  	DT_DIR                                = 4
   902  	DT_FIFO                               = 1
   903  	DT_LNK                                = 10
   904  	DT_REG                                = 8
   905  	DT_SOCK                               = 12
   906  	DT_UNKNOWN                            = 0
   907  	E2BIG                                 = 7
   908  	EACCES                                = 13
   909  	EADDRINUSE                            = 48
   910  	EADDRNOTAVAIL                         = 49
   911  	EAFNOSUPPORT                          = 47
   912  	EAGAIN                                = 35
   913  	EALREADY                              = 37
   914  	EAUTH                                 = 80
   915  	EBADF                                 = 9
   916  	EBADMSG                               = 92
   917  	EBADRPC                               = 72
   918  	EBUSY                                 = 16
   919  	ECANCELED                             = 88
   920  	ECHILD                                = 10
   921  	ECONNABORTED                          = 53
   922  	ECONNREFUSED                          = 61
   923  	ECONNRESET                            = 54
   924  	EDEADLK                               = 11
   925  	EDESTADDRREQ                          = 39
   926  	EDOM                                  = 33
   927  	EDQUOT                                = 69
   928  	EEXIST                                = 17
   929  	EFAULT                                = 14
   930  	EFBIG                                 = 27
   931  	EFTYPE                                = 79
   932  	EHOSTDOWN                             = 64
   933  	EHOSTUNREACH                          = 65
   934  	EIDRM                                 = 89
   935  	EILSEQ                                = 84
   936  	EINPROGRESS                           = 36
   937  	EINTR                                 = 4
   938  	EINVAL                                = 22
   939  	EIO                                   = 5
   940  	EIPSEC                                = 82
   941  	EISCONN                               = 56
   942  	EISDIR                                = 21
   943  	ELAST                                 = 95
   944  	ELOOP                                 = 62
   945  	EMEDIUMTYPE                           = 86
   946  	EMFILE                                = 24
   947  	EMLINK                                = 31
   948  	EMSGSIZE                              = 40
   949  	ENAMETOOLONG                          = 63
   950  	ENEEDAUTH                             = 81
   951  	ENETDOWN                              = 50
   952  	ENETRESET                             = 52
   953  	ENETUNREACH                           = 51
   954  	ENFILE                                = 23
   955  	ENOATTR                               = 83
   956  	ENOBUFS                               = 55
   957  	ENODEV                                = 19
   958  	ENOENT                                = 2
   959  	ENOEXEC                               = 8
   960  	ENOLCK                                = 77
   961  	ENOMEDIUM                             = 85
   962  	ENOMEM                                = 12
   963  	ENOMSG                                = 90
   964  	ENOPROTOOPT                           = 42
   965  	ENOSPC                                = 28
   966  	ENOSYS                                = 78
   967  	ENOTBLK                               = 15
   968  	ENOTCONN                              = 57
   969  	ENOTDIR                               = 20
   970  	ENOTEMPTY                             = 66
   971  	ENOTRECOVERABLE                       = 93
   972  	ENOTSOCK                              = 38
   973  	ENOTSUP                               = 91
   974  	ENOTTY                                = 25
   975  	ENXIO                                 = 6
   976  	EOPNOTSUPP                            = 45
   977  	EOVERFLOW                             = 87
   978  	EOWNERDEAD                            = 94
   979  	EPERM                                 = 1
   980  	EPFNOSUPPORT                          = 46
   981  	EPIPE                                 = 32
   982  	EPROCLIM                              = 67
   983  	EPROCUNAVAIL                          = 76
   984  	EPROGMISMATCH                         = 75
   985  	EPROGUNAVAIL                          = 74
   986  	EPROTO                                = 95
   987  	EPROTONOSUPPORT                       = 43
   988  	EPROTOTYPE                            = 41
   989  	ERANGE                                = 34
   990  	EREMOTE                               = 71
   991  	EROFS                                 = 30
   992  	ERPCMISMATCH                          = 73
   993  	ESHUTDOWN                             = 58
   994  	ESOCKTNOSUPPORT                       = 44
   995  	ESPIPE                                = 29
   996  	ESRCH                                 = 3
   997  	ESTALE                                = 70
   998  	ETIMEDOUT                             = 60
   999  	ETOOMANYREFS                          = 59
  1000  	ETXTBSY                               = 26
  1001  	EUSERS                                = 68
  1002  	EWOULDBLOCK                           = 35
  1003  	EXDEV                                 = 18
  1004  	FAPPEND                               = 8
  1005  	FASYNC                                = 64
  1006  	FD_CLOEXEC                            = 1
  1007  	FD_SETSIZE                            = 1024
  1008  	FFSYNC                                = 128
  1009  	FNDELAY                               = 4
  1010  	FNONBLOCK                             = 4
  1011  	FREAD                                 = 0x0001
  1012  	FSDIR_COLUMN_DATA                     = 3
  1013  	FSDIR_COLUMN_DIR                      = 5
  1014  	FSDIR_COLUMN_MODE                     = 1
  1015  	FSDIR_COLUMN_MTIME                    = 2
  1016  	FSDIR_COLUMN_NAME                     = 0
  1017  	FSDIR_COLUMN_PATH                     = 4
  1018  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1019  	FWRITE                                = 0x0002
  1020  	F_DUPFD                               = 0
  1021  	F_DUPFD_CLOEXEC                       = 10
  1022  	F_GETFD                               = 1
  1023  	F_GETFL                               = 3
  1024  	F_GETLK                               = 7
  1025  	F_GETOWN                              = 5
  1026  	F_ISATTY                              = 11
  1027  	F_LOCK                                = 1
  1028  	F_OK                                  = 0
  1029  	F_RDLCK                               = 1
  1030  	F_SETFD                               = 2
  1031  	F_SETFL                               = 4
  1032  	F_SETLK                               = 8
  1033  	F_SETLKW                              = 9
  1034  	F_SETOWN                              = 6
  1035  	F_TEST                                = 3
  1036  	F_TLOCK                               = 2
  1037  	F_ULOCK                               = 0
  1038  	F_UNLCK                               = 2
  1039  	F_WRLCK                               = 3
  1040  	ITIMER_PROF                           = 2
  1041  	ITIMER_REAL                           = 0
  1042  	ITIMER_VIRTUAL                        = 1
  1043  	KBIND_BLOCK_MAX                       = 2
  1044  	KBIND_DATA_MAX                        = 24
  1045  	LOCK_EX                               = 0x02
  1046  	LOCK_NB                               = 0x04
  1047  	LOCK_SH                               = 0x01
  1048  	LOCK_UN                               = 0x08
  1049  	L_INCR                                = 1
  1050  	L_SET                                 = 0
  1051  	L_XTND                                = 2
  1052  	MAXNAMLEN                             = 255
  1053  	NBBY                                  = 8
  1054  	O_ACCMODE                             = 0x0003
  1055  	O_APPEND                              = 0x0008
  1056  	O_ASYNC                               = 0x0040
  1057  	O_CLOEXEC                             = 0x10000
  1058  	O_CREAT                               = 0x0200
  1059  	O_DIRECTORY                           = 0x20000
  1060  	O_DSYNC                               = 128
  1061  	O_EXCL                                = 0x0800
  1062  	O_EXLOCK                              = 0x0020
  1063  	O_FSYNC                               = 0x0080
  1064  	O_NDELAY                              = 4
  1065  	O_NOCTTY                              = 0x8000
  1066  	O_NOFOLLOW                            = 0x0100
  1067  	O_NONBLOCK                            = 0x0004
  1068  	O_RDONLY                              = 0x0000
  1069  	O_RDWR                                = 0x0002
  1070  	O_RSYNC                               = 128
  1071  	O_SHLOCK                              = 0x0010
  1072  	O_SYNC                                = 0x0080
  1073  	O_TRUNC                               = 0x0400
  1074  	O_WRONLY                              = 0x0001
  1075  	R_OK                                  = 0x04
  1076  	SF_APPEND                             = 0x00040000
  1077  	SF_ARCHIVED                           = 0x00010000
  1078  	SF_IMMUTABLE                          = 0x00020000
  1079  	SF_SETTABLE                           = 0xffff0000
  1080  	STDERR_FILENO                         = 2
  1081  	STDIN_FILENO                          = 0
  1082  	STDOUT_FILENO                         = 1
  1083  	S_BLKSIZE                             = 512
  1084  	S_IEXEC                               = 64
  1085  	S_IFBLK                               = 0060000
  1086  	S_IFCHR                               = 0020000
  1087  	S_IFDIR                               = 0040000
  1088  	S_IFIFO                               = 0010000
  1089  	S_IFLNK                               = 0120000
  1090  	S_IFMT                                = 0170000
  1091  	S_IFREG                               = 0100000
  1092  	S_IFSOCK                              = 0140000
  1093  	S_IREAD                               = 256
  1094  	S_IRGRP                               = 0000040
  1095  	S_IROTH                               = 0000004
  1096  	S_IRUSR                               = 0000400
  1097  	S_IRWXG                               = 0000070
  1098  	S_IRWXO                               = 0000007
  1099  	S_IRWXU                               = 0000700
  1100  	S_ISGID                               = 0002000
  1101  	S_ISTXT                               = 0001000
  1102  	S_ISUID                               = 0004000
  1103  	S_ISVTX                               = 0001000
  1104  	S_IWGRP                               = 0000020
  1105  	S_IWOTH                               = 0000002
  1106  	S_IWRITE                              = 128
  1107  	S_IWUSR                               = 0000200
  1108  	S_IXGRP                               = 0000010
  1109  	S_IXOTH                               = 0000001
  1110  	S_IXUSR                               = 0000100
  1111  	TIMER_ABSTIME                         = 0x1
  1112  	TIMER_RELTIME                         = 0x0
  1113  	TIME_UTC                              = 1
  1114  	UF_APPEND                             = 0x00000004
  1115  	UF_IMMUTABLE                          = 0x00000002
  1116  	UF_NODUMP                             = 0x00000001
  1117  	UF_OPAQUE                             = 0x00000008
  1118  	UF_SETTABLE                           = 0x0000ffff
  1119  	UTIME_NOW                             = -2
  1120  	UTIME_OMIT                            = -1
  1121  	W_OK                                  = 0x02
  1122  	X_OK                                  = 0x01
  1123  	X_CS_PATH                             = 1
  1124  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS      = 2
  1125  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS     = 3
  1126  	X_CS_POSIX_V6_ILP32_OFF32_LIBS        = 4
  1127  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS     = 5
  1128  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS    = 6
  1129  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS       = 7
  1130  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS       = 8
  1131  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS      = 9
  1132  	X_CS_POSIX_V6_LP64_OFF64_LIBS         = 10
  1133  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS     = 11
  1134  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS    = 12
  1135  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS       = 13
  1136  	X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS   = 14
  1137  	X_CS_POSIX_V7_ILP32_OFF32_CFLAGS      = 16
  1138  	X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS     = 17
  1139  	X_CS_POSIX_V7_ILP32_OFF32_LIBS        = 18
  1140  	X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS     = 19
  1141  	X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS    = 20
  1142  	X_CS_POSIX_V7_ILP32_OFFBIG_LIBS       = 21
  1143  	X_CS_POSIX_V7_LP64_OFF64_CFLAGS       = 22
  1144  	X_CS_POSIX_V7_LP64_OFF64_LDFLAGS      = 23
  1145  	X_CS_POSIX_V7_LP64_OFF64_LIBS         = 24
  1146  	X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS     = 25
  1147  	X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS    = 26
  1148  	X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS       = 27
  1149  	X_CS_POSIX_V7_THREADS_CFLAGS          = 28
  1150  	X_CS_POSIX_V7_THREADS_LDFLAGS         = 29
  1151  	X_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS   = 30
  1152  	X_CS_V6_ENV                           = 15
  1153  	X_CS_V7_ENV                           = 31
  1154  	X_DIRENT_H_                           = 0
  1155  	X_ERRNO_H_                            = 0
  1156  	X_GETOPT_DEFINED_                     = 0
  1157  	X_INTPTR_T_DEFINED_                   = 0
  1158  	X_PC_2_SYMLINKS                       = 10
  1159  	X_PC_ALLOC_SIZE_MIN                   = 11
  1160  	X_PC_ASYNC_IO                         = 12
  1161  	X_PC_CHOWN_RESTRICTED                 = 7
  1162  	X_PC_FILESIZEBITS                     = 13
  1163  	X_PC_LINK_MAX                         = 1
  1164  	X_PC_MAX_CANON                        = 2
  1165  	X_PC_MAX_INPUT                        = 3
  1166  	X_PC_NAME_MAX                         = 4
  1167  	X_PC_NO_TRUNC                         = 8
  1168  	X_PC_PATH_MAX                         = 5
  1169  	X_PC_PIPE_BUF                         = 6
  1170  	X_PC_PRIO_IO                          = 14
  1171  	X_PC_REC_INCR_XFER_SIZE               = 15
  1172  	X_PC_REC_MAX_XFER_SIZE                = 16
  1173  	X_PC_REC_MIN_XFER_SIZE                = 17
  1174  	X_PC_REC_XFER_ALIGN                   = 18
  1175  	X_PC_SYMLINK_MAX                      = 19
  1176  	X_PC_SYNC_IO                          = 20
  1177  	X_PC_TIMESTAMP_RESOLUTION             = 21
  1178  	X_PC_VDISABLE                         = 9
  1179  	X_POSIX2_CHAR_TERM                    = 1
  1180  	X_POSIX2_C_BIND                       = 200112
  1181  	X_POSIX2_C_DEV                        = -1
  1182  	X_POSIX2_FORT_DEV                     = -1
  1183  	X_POSIX2_FORT_RUN                     = -1
  1184  	X_POSIX2_LOCALEDEF                    = -1
  1185  	X_POSIX2_PBS                          = -1
  1186  	X_POSIX2_PBS_ACCOUNTING               = -1
  1187  	X_POSIX2_PBS_CHECKPOINT               = -1
  1188  	X_POSIX2_PBS_LOCATE                   = -1
  1189  	X_POSIX2_PBS_MESSAGE                  = -1
  1190  	X_POSIX2_PBS_TRACK                    = -1
  1191  	X_POSIX2_SW_DEV                       = 200112
  1192  	X_POSIX2_UPE                          = 200112
  1193  	X_POSIX2_VERSION                      = 200809
  1194  	X_POSIX_ADVISORY_INFO                 = -1
  1195  	X_POSIX_ASYNCHRONOUS_IO               = -1
  1196  	X_POSIX_ASYNC_IO                      = -1
  1197  	X_POSIX_BARRIERS                      = 200112
  1198  	X_POSIX_CHOWN_RESTRICTED              = 1
  1199  	X_POSIX_CLOCK_SELECTION               = -1
  1200  	X_POSIX_CPUTIME                       = 200809
  1201  	X_POSIX_FSYNC                         = 200112
  1202  	X_POSIX_IPV6                          = 0
  1203  	X_POSIX_JOB_CONTROL                   = 1
  1204  	X_POSIX_MAPPED_FILES                  = 200112
  1205  	X_POSIX_MEMLOCK                       = 200112
  1206  	X_POSIX_MEMLOCK_RANGE                 = 200112
  1207  	X_POSIX_MEMORY_PROTECTION             = 200112
  1208  	X_POSIX_MESSAGE_PASSING               = -1
  1209  	X_POSIX_MONOTONIC_CLOCK               = 200112
  1210  	X_POSIX_NO_TRUNC                      = 1
  1211  	X_POSIX_PRIORITIZED_IO                = -1
  1212  	X_POSIX_PRIORITY_SCHEDULING           = -1
  1213  	X_POSIX_PRIO_IO                       = -1
  1214  	X_POSIX_RAW_SOCKETS                   = 200112
  1215  	X_POSIX_READER_WRITER_LOCKS           = 200112
  1216  	X_POSIX_REALTIME_SIGNALS              = -1
  1217  	X_POSIX_REGEXP                        = 1
  1218  	X_POSIX_SAVED_IDS                     = 1
  1219  	X_POSIX_SEMAPHORES                    = 200112
  1220  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200809
  1221  	X_POSIX_SHELL                         = 1
  1222  	X_POSIX_SPAWN                         = 200112
  1223  	X_POSIX_SPIN_LOCKS                    = 200112
  1224  	X_POSIX_SPORADIC_SERVER               = -1
  1225  	X_POSIX_SYNCHRONIZED_IO               = -1
  1226  	X_POSIX_SYNC_IO                       = -1
  1227  	X_POSIX_THREADS                       = 200112
  1228  	X_POSIX_THREAD_ATTR_STACKADDR         = 200112
  1229  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200112
  1230  	X_POSIX_THREAD_CPUTIME                = 200809
  1231  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = -1
  1232  	X_POSIX_THREAD_PRIO_INHERIT           = -1
  1233  	X_POSIX_THREAD_PRIO_PROTECT           = -1
  1234  	X_POSIX_THREAD_PROCESS_SHARED         = -1
  1235  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT    = -1
  1236  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT    = -1
  1237  	X_POSIX_THREAD_SAFE_FUNCTIONS         = 200112
  1238  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1239  	X_POSIX_TIMEOUTS                      = 200112
  1240  	X_POSIX_TIMERS                        = -1
  1241  	X_POSIX_TRACE                         = -1
  1242  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1243  	X_POSIX_TRACE_INHERIT                 = -1
  1244  	X_POSIX_TRACE_LOG                     = -1
  1245  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1246  	X_POSIX_V6_ILP32_OFF32                = -1
  1247  	X_POSIX_V6_ILP32_OFFBIG               = 0
  1248  	X_POSIX_V6_LP64_OFF64                 = 0
  1249  	X_POSIX_V6_LPBIG_OFFBIG               = 0
  1250  	X_POSIX_V7_ILP32_OFF32                = -1
  1251  	X_POSIX_V7_ILP32_OFFBIG               = 0
  1252  	X_POSIX_V7_LP64_OFF64                 = 0
  1253  	X_POSIX_V7_LPBIG_OFFBIG               = 0
  1254  	X_POSIX_VDISABLE                      = 255
  1255  	X_POSIX_VERSION                       = 200809
  1256  	X_SC_2_CHAR_TERM                      = 20
  1257  	X_SC_2_C_BIND                         = 18
  1258  	X_SC_2_C_DEV                          = 19
  1259  	X_SC_2_FORT_DEV                       = 21
  1260  	X_SC_2_FORT_RUN                       = 22
  1261  	X_SC_2_LOCALEDEF                      = 23
  1262  	X_SC_2_PBS                            = 35
  1263  	X_SC_2_PBS_ACCOUNTING                 = 36
  1264  	X_SC_2_PBS_CHECKPOINT                 = 37
  1265  	X_SC_2_PBS_LOCATE                     = 38
  1266  	X_SC_2_PBS_MESSAGE                    = 39
  1267  	X_SC_2_PBS_TRACK                      = 40
  1268  	X_SC_2_SW_DEV                         = 24
  1269  	X_SC_2_UPE                            = 25
  1270  	X_SC_2_VERSION                        = 17
  1271  	X_SC_ADVISORY_INFO                    = 41
  1272  	X_SC_AIO_LISTIO_MAX                   = 42
  1273  	X_SC_AIO_MAX                          = 43
  1274  	X_SC_AIO_PRIO_DELTA_MAX               = 44
  1275  	X_SC_ARG_MAX                          = 1
  1276  	X_SC_ASYNCHRONOUS_IO                  = 45
  1277  	X_SC_ATEXIT_MAX                       = 46
  1278  	X_SC_AVPHYS_PAGES                     = 501
  1279  	X_SC_BARRIERS                         = 47
  1280  	X_SC_BC_BASE_MAX                      = 9
  1281  	X_SC_BC_DIM_MAX                       = 10
  1282  	X_SC_BC_SCALE_MAX                     = 11
  1283  	X_SC_BC_STRING_MAX                    = 12
  1284  	X_SC_CHILD_MAX                        = 2
  1285  	X_SC_CLK_TCK                          = 3
  1286  	X_SC_CLOCK_SELECTION                  = 48
  1287  	X_SC_COLL_WEIGHTS_MAX                 = 13
  1288  	X_SC_CPUTIME                          = 49
  1289  	X_SC_DELAYTIMER_MAX                   = 50
  1290  	X_SC_EXPR_NEST_MAX                    = 14
  1291  	X_SC_FSYNC                            = 29
  1292  	X_SC_GETGR_R_SIZE_MAX                 = 100
  1293  	X_SC_GETPW_R_SIZE_MAX                 = 101
  1294  	X_SC_HOST_NAME_MAX                    = 33
  1295  	X_SC_IOV_MAX                          = 51
  1296  	X_SC_IPV6                             = 52
  1297  	X_SC_JOB_CONTROL                      = 6
  1298  	X_SC_LINE_MAX                         = 15
  1299  	X_SC_LOGIN_NAME_MAX                   = 102
  1300  	X_SC_MAPPED_FILES                     = 53
  1301  	X_SC_MEMLOCK                          = 54
  1302  	X_SC_MEMLOCK_RANGE                    = 55
  1303  	X_SC_MEMORY_PROTECTION                = 56
  1304  	X_SC_MESSAGE_PASSING                  = 57
  1305  	X_SC_MONOTONIC_CLOCK                  = 34
  1306  	X_SC_MQ_OPEN_MAX                      = 58
  1307  	X_SC_MQ_PRIO_MAX                      = 59
  1308  	X_SC_NGROUPS_MAX                      = 4
  1309  	X_SC_NPROCESSORS_CONF                 = 502
  1310  	X_SC_NPROCESSORS_ONLN                 = 503
  1311  	X_SC_OPEN_MAX                         = 5
  1312  	X_SC_PAGESIZE                         = 28
  1313  	X_SC_PAGE_SIZE                        = 28
  1314  	X_SC_PHYS_PAGES                       = 500
  1315  	X_SC_PRIORITIZED_IO                   = 60
  1316  	X_SC_PRIORITY_SCHEDULING              = 61
  1317  	X_SC_RAW_SOCKETS                      = 62
  1318  	X_SC_READER_WRITER_LOCKS              = 63
  1319  	X_SC_REALTIME_SIGNALS                 = 64
  1320  	X_SC_REGEXP                           = 65
  1321  	X_SC_RE_DUP_MAX                       = 16
  1322  	X_SC_RTSIG_MAX                        = 66
  1323  	X_SC_SAVED_IDS                        = 7
  1324  	X_SC_SEMAPHORES                       = 67
  1325  	X_SC_SEM_NSEMS_MAX                    = 31
  1326  	X_SC_SEM_VALUE_MAX                    = 32
  1327  	X_SC_SHARED_MEMORY_OBJECTS            = 68
  1328  	X_SC_SHELL                            = 69
  1329  	X_SC_SIGQUEUE_MAX                     = 70
  1330  	X_SC_SPAWN                            = 71
  1331  	X_SC_SPIN_LOCKS                       = 72
  1332  	X_SC_SPORADIC_SERVER                  = 73
  1333  	X_SC_SS_REPL_MAX                      = 74
  1334  	X_SC_STREAM_MAX                       = 26
  1335  	X_SC_SYMLOOP_MAX                      = 76
  1336  	X_SC_SYNCHRONIZED_IO                  = 75
  1337  	X_SC_THREADS                          = 91
  1338  	X_SC_THREAD_ATTR_STACKADDR            = 77
  1339  	X_SC_THREAD_ATTR_STACKSIZE            = 78
  1340  	X_SC_THREAD_CPUTIME                   = 79
  1341  	X_SC_THREAD_DESTRUCTOR_ITERATIONS     = 80
  1342  	X_SC_THREAD_KEYS_MAX                  = 81
  1343  	X_SC_THREAD_PRIORITY_SCHEDULING       = 84
  1344  	X_SC_THREAD_PRIO_INHERIT              = 82
  1345  	X_SC_THREAD_PRIO_PROTECT              = 83
  1346  	X_SC_THREAD_PROCESS_SHARED            = 85
  1347  	X_SC_THREAD_ROBUST_PRIO_INHERIT       = 86
  1348  	X_SC_THREAD_ROBUST_PRIO_PROTECT       = 87
  1349  	X_SC_THREAD_SAFE_FUNCTIONS            = 103
  1350  	X_SC_THREAD_SPORADIC_SERVER           = 88
  1351  	X_SC_THREAD_STACK_MIN                 = 89
  1352  	X_SC_THREAD_THREADS_MAX               = 90
  1353  	X_SC_TIMEOUTS                         = 92
  1354  	X_SC_TIMERS                           = 94
  1355  	X_SC_TIMER_MAX                        = 93
  1356  	X_SC_TRACE                            = 95
  1357  	X_SC_TRACE_EVENT_FILTER               = 96
  1358  	X_SC_TRACE_EVENT_NAME_MAX             = 97
  1359  	X_SC_TRACE_INHERIT                    = 98
  1360  	X_SC_TRACE_LOG                        = 99
  1361  	X_SC_TRACE_NAME_MAX                   = 104
  1362  	X_SC_TRACE_SYS_MAX                    = 105
  1363  	X_SC_TRACE_USER_EVENT_MAX             = 106
  1364  	X_SC_TTY_NAME_MAX                     = 107
  1365  	X_SC_TYPED_MEMORY_OBJECTS             = 108
  1366  	X_SC_TZNAME_MAX                       = 27
  1367  	X_SC_V6_ILP32_OFF32                   = 109
  1368  	X_SC_V6_ILP32_OFFBIG                  = 110
  1369  	X_SC_V6_LP64_OFF64                    = 111
  1370  	X_SC_V6_LPBIG_OFFBIG                  = 112
  1371  	X_SC_V7_ILP32_OFF32                   = 113
  1372  	X_SC_V7_ILP32_OFFBIG                  = 114
  1373  	X_SC_V7_LP64_OFF64                    = 115
  1374  	X_SC_V7_LPBIG_OFFBIG                  = 116
  1375  	X_SC_VERSION                          = 8
  1376  	X_SC_XOPEN_CRYPT                      = 117
  1377  	X_SC_XOPEN_ENH_I18N                   = 118
  1378  	X_SC_XOPEN_LEGACY                     = 119
  1379  	X_SC_XOPEN_REALTIME                   = 120
  1380  	X_SC_XOPEN_REALTIME_THREADS           = 121
  1381  	X_SC_XOPEN_SHM                        = 30
  1382  	X_SC_XOPEN_STREAMS                    = 122
  1383  	X_SC_XOPEN_UNIX                       = 123
  1384  	X_SC_XOPEN_UUCP                       = 124
  1385  	X_SC_XOPEN_VERSION                    = 125
  1386  	X_SELECT_DEFINED_                     = 0
  1387  	X_SIGSET_T_DEFINED_                   = 0
  1388  	X_SYS_DIRENT_H_                       = 0
  1389  	X_SYS_FCNTL_H_                        = 0
  1390  	X_SYS_SELECT_H_                       = 0
  1391  	X_SYS_STAT_H_                         = 0
  1392  	X_SYS_TIME_H_                         = 0
  1393  	X_SYS_UNISTD_H_                       = 0
  1394  	X_SYS__TIME_H_                        = 0
  1395  	X_TIMESPEC_DECLARED                   = 0
  1396  	X_TIMEVAL_DECLARED                    = 0
  1397  	X_TIME_H_                             = 0
  1398  	X_UNISTD_H_                           = 0
  1399  	X_UTIME_H_                            = 0
  1400  	X_XOPEN_CRYPT                         = 1
  1401  	X_XOPEN_ENH_I18N                      = -1
  1402  	X_XOPEN_LEGACY                        = -1
  1403  	X_XOPEN_REALTIME                      = -1
  1404  	X_XOPEN_REALTIME_THREADS              = -1
  1405  	X_XOPEN_SHM                           = 1
  1406  	X_XOPEN_STREAMS                       = -1
  1407  	X_XOPEN_UNIX                          = -1
  1408  	X_XOPEN_UUCP                          = -1
  1409  	FUZZER_HASH                           = 4001
  1410  	FUZZER_MX_COST                        = 1000
  1411  	FUZZER_MX_LENGTH                      = 50
  1412  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1413  	FUZZER_MX_RULEID                      = 2147483647
  1414  	FUZZER_NQUEUE                         = 20
  1415  	CC_AND                                = 24
  1416  	CC_BANG                               = 15
  1417  	CC_COMMA                              = 23
  1418  	CC_DIGIT                              = 3
  1419  	CC_DOLLAR                             = 4
  1420  	CC_DOT                                = 26
  1421  	CC_EQ                                 = 14
  1422  	CC_GT                                 = 13
  1423  	CC_ID                                 = 2
  1424  	CC_ILLEGAL                            = 27
  1425  	CC_KYWD                               = 1
  1426  	CC_LP                                 = 17
  1427  	CC_LT                                 = 12
  1428  	CC_MINUS                              = 11
  1429  	CC_PERCENT                            = 22
  1430  	CC_PIPE                               = 10
  1431  	CC_PLUS                               = 20
  1432  	CC_QUOTE                              = 8
  1433  	CC_QUOTE2                             = 9
  1434  	CC_RP                                 = 18
  1435  	CC_SEMI                               = 19
  1436  	CC_SLASH                              = 16
  1437  	CC_SPACE                              = 7
  1438  	CC_STAR                               = 21
  1439  	CC_TILDA                              = 25
  1440  	CC_VARALPHA                           = 5
  1441  	CC_VARNUM                             = 6
  1442  	CC_X                                  = 0
  1443  	TK_BITAND                             = 3
  1444  	TK_BITNOT                             = 3
  1445  	TK_BITOR                              = 3
  1446  	TK_BLOB                               = 2
  1447  	TK_COMMA                              = 3
  1448  	TK_CONCAT                             = 3
  1449  	TK_DOT                                = 3
  1450  	TK_EQ                                 = 3
  1451  	TK_ERROR                              = 4
  1452  	TK_FLOAT                              = 2
  1453  	TK_GE                                 = 3
  1454  	TK_GT                                 = 3
  1455  	TK_ID                                 = 1
  1456  	TK_ILLEGAL                            = 4
  1457  	TK_INTEGER                            = 2
  1458  	TK_LE                                 = 3
  1459  	TK_LITERAL                            = 2
  1460  	TK_LP                                 = 3
  1461  	TK_LSHIFT                             = 3
  1462  	TK_LT                                 = 3
  1463  	TK_MINUS                              = 3
  1464  	TK_NAME                               = 1
  1465  	TK_NE                                 = 3
  1466  	TK_PLUS                               = 3
  1467  	TK_PUNCT                              = 3
  1468  	TK_REM                                = 3
  1469  	TK_RP                                 = 3
  1470  	TK_RSHIFT                             = 3
  1471  	TK_SEMI                               = 3
  1472  	TK_SLASH                              = 3
  1473  	TK_SPACE                              = 0
  1474  	TK_STAR                               = 3
  1475  	TK_STRING                             = 2
  1476  	TK_VARIABLE                           = 2
  1477  	Deliberate_fall_through               = 0
  1478  	QPVTAB_A                              = 6
  1479  	QPVTAB_B                              = 7
  1480  	QPVTAB_C                              = 8
  1481  	QPVTAB_CN                             = 2
  1482  	QPVTAB_D                              = 9
  1483  	QPVTAB_E                              = 10
  1484  	QPVTAB_FLAGS                          = 11
  1485  	QPVTAB_IX                             = 1
  1486  	QPVTAB_NONE                           = 12
  1487  	QPVTAB_OP                             = 3
  1488  	QPVTAB_RHS                            = 5
  1489  	QPVTAB_UX                             = 4
  1490  	QPVTAB_VN                             = 0
  1491  	RE_EOF                                = 0
  1492  	RE_OP_ACCEPT                          = 6
  1493  	RE_OP_ANY                             = 2
  1494  	RE_OP_ANYSTAR                         = 3
  1495  	RE_OP_BOUNDARY                        = 17
  1496  	RE_OP_CC_EXC                          = 8
  1497  	RE_OP_CC_INC                          = 7
  1498  	RE_OP_CC_RANGE                        = 10
  1499  	RE_OP_CC_VALUE                        = 9
  1500  	RE_OP_DIGIT                           = 13
  1501  	RE_OP_FORK                            = 4
  1502  	RE_OP_GOTO                            = 5
  1503  	RE_OP_MATCH                           = 1
  1504  	RE_OP_NOTDIGIT                        = 14
  1505  	RE_OP_NOTSPACE                        = 16
  1506  	RE_OP_NOTWORD                         = 12
  1507  	RE_OP_SPACE                           = 15
  1508  	RE_OP_WORD                            = 11
  1509  	SERIES_COLUMN_START                   = 1
  1510  	SERIES_COLUMN_STEP                    = 3
  1511  	SERIES_COLUMN_STOP                    = 2
  1512  	SERIES_COLUMN_VALUE                   = 0
  1513  	CCLASS_B                              = 2
  1514  	CCLASS_C                              = 3
  1515  	CCLASS_D                              = 4
  1516  	CCLASS_DIGIT                          = 10
  1517  	CCLASS_H                              = 5
  1518  	CCLASS_L                              = 6
  1519  	CCLASS_M                              = 8
  1520  	CCLASS_OTHER                          = 12
  1521  	CCLASS_R                              = 7
  1522  	CCLASS_SILENT                         = 0
  1523  	CCLASS_SPACE                          = 11
  1524  	CCLASS_VOWEL                          = 1
  1525  	CCLASS_Y                              = 9
  1526  	FINAL_INS_COST_DIV                    = 4
  1527  	SCRIPT_ARABIC                         = 0x0010
  1528  	SCRIPT_CYRILLIC                       = 0x0002
  1529  	SCRIPT_GREEK                          = 0x0004
  1530  	SCRIPT_HEBREW                         = 0x0008
  1531  	SCRIPT_LATIN                          = 0x0001
  1532  	SPELLFIX_COL_COMMAND                  = 11
  1533  	SPELLFIX_COL_DISTANCE                 = 2
  1534  	SPELLFIX_COL_LANGID                   = 3
  1535  	SPELLFIX_COL_MATCHLEN                 = 5
  1536  	SPELLFIX_COL_PHONEHASH                = 6
  1537  	SPELLFIX_COL_RANK                     = 1
  1538  	SPELLFIX_COL_SCOPE                    = 8
  1539  	SPELLFIX_COL_SCORE                    = 4
  1540  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1541  	SPELLFIX_COL_SRCHCNT                  = 9
  1542  	SPELLFIX_COL_TOP                      = 7
  1543  	SPELLFIX_COL_WORD                     = 0
  1544  	SPELLFIX_IDXNUM_DIST                  = 48
  1545  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1546  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1547  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1548  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1549  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1550  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1551  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1552  	SPELLFIX_MX_HASH                      = 32
  1553  	SPELLFIX_MX_RUN                       = 1
  1554  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1555  	SWARMVTAB_MAX_OPEN                    = 9
  1556  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1557  	SQLITE_RBU_STATE_DONE                 = 4
  1558  	SQLITE_RBU_STATE_ERROR                = 5
  1559  	SQLITE_RBU_STATE_MOVE                 = 2
  1560  	SQLITE_RBU_STATE_OAL                  = 1
  1561  	X_SQLITE3RBU_H                        = 0
  1562  	BTREE_APPEND                          = 0x08
  1563  	BTREE_APPLICATION_ID                  = 8
  1564  	BTREE_AUTOVACUUM_FULL                 = 1
  1565  	BTREE_AUTOVACUUM_INCR                 = 2
  1566  	BTREE_AUTOVACUUM_NONE                 = 0
  1567  	BTREE_AUXDELETE                       = 0x04
  1568  	BTREE_BLOBKEY                         = 2
  1569  	BTREE_BULKLOAD                        = 0x00000001
  1570  	BTREE_DATA_VERSION                    = 15
  1571  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1572  	BTREE_FILE_FORMAT                     = 2
  1573  	BTREE_FORDELETE                       = 0x00000008
  1574  	BTREE_FREE_PAGE_COUNT                 = 0
  1575  	BTREE_HINT_RANGE                      = 0
  1576  	BTREE_INCR_VACUUM                     = 7
  1577  	BTREE_INTKEY                          = 1
  1578  	BTREE_LARGEST_ROOT_PAGE               = 4
  1579  	BTREE_MEMORY                          = 2
  1580  	BTREE_OMIT_JOURNAL                    = 1
  1581  	BTREE_PREFORMAT                       = 0x80
  1582  	BTREE_SAVEPOSITION                    = 0x02
  1583  	BTREE_SCHEMA_VERSION                  = 1
  1584  	BTREE_SEEK_EQ                         = 0x00000002
  1585  	BTREE_SINGLE                          = 4
  1586  	BTREE_TEXT_ENCODING                   = 5
  1587  	BTREE_UNORDERED                       = 8
  1588  	BTREE_USER_VERSION                    = 6
  1589  	BTREE_WRCSR                           = 0x00000004
  1590  	COLFLAG_BUSY                          = 0x0100
  1591  	COLFLAG_GENERATED                     = 0x0060
  1592  	COLFLAG_HASCOLL                       = 0x0200
  1593  	COLFLAG_HASTYPE                       = 0x0004
  1594  	COLFLAG_HIDDEN                        = 0x0002
  1595  	COLFLAG_NOEXPAND                      = 0x0400
  1596  	COLFLAG_NOINSERT                      = 0x0062
  1597  	COLFLAG_NOTAVAIL                      = 0x0080
  1598  	COLFLAG_PRIMKEY                       = 0x0001
  1599  	COLFLAG_SORTERREF                     = 0x0010
  1600  	COLFLAG_STORED                        = 0x0040
  1601  	COLFLAG_UNIQUE                        = 0x0008
  1602  	COLFLAG_VIRTUAL                       = 0x0020
  1603  	COLNAME_COLUMN                        = 4
  1604  	COLNAME_DATABASE                      = 2
  1605  	COLNAME_DECLTYPE                      = 1
  1606  	COLNAME_N                             = 5
  1607  	COLNAME_NAME                          = 0
  1608  	COLNAME_TABLE                         = 3
  1609  	COLTYPE_ANY                           = 1
  1610  	COLTYPE_BLOB                          = 2
  1611  	COLTYPE_CUSTOM                        = 0
  1612  	COLTYPE_INT                           = 3
  1613  	COLTYPE_INTEGER                       = 4
  1614  	COLTYPE_REAL                          = 5
  1615  	COLTYPE_TEXT                          = 6
  1616  	DBFLAG_EncodingFixed                  = 0x0040
  1617  	DBFLAG_InternalFunc                   = 0x0020
  1618  	DBFLAG_PreferBuiltin                  = 0x0002
  1619  	DBFLAG_SchemaChange                   = 0x0001
  1620  	DBFLAG_SchemaKnownOk                  = 0x0010
  1621  	DBFLAG_Vacuum                         = 0x0004
  1622  	DBFLAG_VacuumInto                     = 0x0008
  1623  	DB_ResetWanted                        = 0x0008
  1624  	DB_SchemaLoaded                       = 0x0001
  1625  	DB_UnresetViews                       = 0x0002
  1626  	ENAME_NAME                            = 0
  1627  	ENAME_SPAN                            = 1
  1628  	ENAME_TAB                             = 2
  1629  	EP_Agg                                = 0x000010
  1630  	EP_CanBeNull                          = 0x200000
  1631  	EP_Collate                            = 0x000200
  1632  	EP_Commuted                           = 0x000400
  1633  	EP_ConstFunc                          = 0x100000
  1634  	EP_DblQuoted                          = 0x000080
  1635  	EP_Distinct                           = 0x000004
  1636  	EP_FixedCol                           = 0x000020
  1637  	EP_FromDDL                            = 0x40000000
  1638  	EP_HasFunc                            = 0x000008
  1639  	EP_IfNullRow                          = 0x040000
  1640  	EP_Immutable                          = 0x02
  1641  	EP_InfixFunc                          = 0x000100
  1642  	EP_InnerON                            = 0x000002
  1643  	EP_IntValue                           = 0x000800
  1644  	EP_IsFalse                            = 0x20000000
  1645  	EP_IsTrue                             = 0x10000000
  1646  	EP_Leaf                               = 0x800000
  1647  	EP_MemToken                           = 0x020000
  1648  	EP_NoReduce                           = 0x01
  1649  	EP_OuterON                            = 0x000001
  1650  	EP_Propagate                          = 4194824
  1651  	EP_Quoted                             = 0x4000000
  1652  	EP_Reduced                            = 0x004000
  1653  	EP_Skip                               = 0x002000
  1654  	EP_Static                             = 0x8000000
  1655  	EP_Subquery                           = 0x400000
  1656  	EP_Subrtn                             = 0x2000000
  1657  	EP_TokenOnly                          = 0x010000
  1658  	EP_Unlikely                           = 0x080000
  1659  	EP_VarSelect                          = 0x000040
  1660  	EP_Win                                = 0x008000
  1661  	EP_WinFunc                            = 0x1000000
  1662  	EP_xIsSelect                          = 0x001000
  1663  	EU4_EXPR                              = 2
  1664  	EU4_IDX                               = 1
  1665  	EU4_NONE                              = 0
  1666  	EXCLUSIVE_LOCK                        = 4
  1667  	EXPRDUP_REDUCE                        = 0x0001
  1668  	GCC_VERSION                           = 4002001
  1669  	HAVE_DLFCN_H                          = 1
  1670  	HAVE_FCHOWN                           = 1
  1671  	HAVE_FDATASYNC                        = 1
  1672  	HAVE_GMTIME_R                         = 1
  1673  	HAVE_INT16_T                          = 1
  1674  	HAVE_INT32_T                          = 1
  1675  	HAVE_INT64_T                          = 1
  1676  	HAVE_INT8_T                           = 1
  1677  	HAVE_INTPTR_T                         = 1
  1678  	HAVE_INTTYPES_H                       = 1
  1679  	HAVE_ISNAN                            = 1
  1680  	HAVE_LOCALTIME_R                      = 1
  1681  	HAVE_LSTAT                            = 1
  1682  	HAVE_MEMORY_H                         = 1
  1683  	HAVE_PREAD                            = 1
  1684  	HAVE_PWRITE                           = 1
  1685  	HAVE_READLINK                         = 1
  1686  	HAVE_STDINT_H                         = 1
  1687  	HAVE_STDLIB_H                         = 1
  1688  	HAVE_STRINGS_H                        = 1
  1689  	HAVE_STRING_H                         = 1
  1690  	HAVE_SYS_STAT_H                       = 1
  1691  	HAVE_SYS_TYPES_H                      = 1
  1692  	HAVE_UINT16_T                         = 1
  1693  	HAVE_UINT32_T                         = 1
  1694  	HAVE_UINT64_T                         = 1
  1695  	HAVE_UINT8_T                          = 1
  1696  	HAVE_UINTPTR_T                        = 1
  1697  	HAVE_UNISTD_H                         = 1
  1698  	HAVE_UTIME                            = 1
  1699  	INITFLAG_AlterAdd                     = 0x0003
  1700  	INITFLAG_AlterDrop                    = 0x0002
  1701  	INITFLAG_AlterMask                    = 0x0003
  1702  	INITFLAG_AlterRename                  = 0x0001
  1703  	INLINEFUNC_affinity                   = 4
  1704  	INLINEFUNC_coalesce                   = 0
  1705  	INLINEFUNC_expr_compare               = 3
  1706  	INLINEFUNC_expr_implies_expr          = 2
  1707  	INLINEFUNC_iif                        = 5
  1708  	INLINEFUNC_implies_nonnull_row        = 1
  1709  	INLINEFUNC_sqlite_offset              = 6
  1710  	INLINEFUNC_unlikely                   = 99
  1711  	INT16_MAX                             = 0x7fff
  1712  	INT16_MIN                             = -32768
  1713  	INT32_MAX                             = 0x7fffffff
  1714  	INT32_MIN                             = -2147483648
  1715  	INT64_MAX                             = 0x7fffffffffffffff
  1716  	INT64_MIN                             = -9223372036854775808
  1717  	INT8_MAX                              = 0x7f
  1718  	INT8_MIN                              = -128
  1719  	INTMAX_MAX                            = 9223372036854775807
  1720  	INTMAX_MIN                            = -9223372036854775808
  1721  	INTPTR_MAX                            = 0x7fffffffffffffff
  1722  	INTPTR_MIN                            = -9223372036854775808
  1723  	INT_FAST16_MAX                        = 2147483647
  1724  	INT_FAST16_MIN                        = -2147483648
  1725  	INT_FAST32_MAX                        = 2147483647
  1726  	INT_FAST32_MIN                        = -2147483648
  1727  	INT_FAST64_MAX                        = 9223372036854775807
  1728  	INT_FAST64_MIN                        = -9223372036854775808
  1729  	INT_FAST8_MAX                         = 2147483647
  1730  	INT_FAST8_MIN                         = -2147483648
  1731  	INT_LEAST16_MAX                       = 32767
  1732  	INT_LEAST16_MIN                       = -32768
  1733  	INT_LEAST32_MAX                       = 2147483647
  1734  	INT_LEAST32_MIN                       = -2147483648
  1735  	INT_LEAST64_MAX                       = 9223372036854775807
  1736  	INT_LEAST64_MIN                       = -9223372036854775808
  1737  	INT_LEAST8_MAX                        = 127
  1738  	INT_LEAST8_MIN                        = -128
  1739  	IN_INDEX_EPH                          = 2
  1740  	IN_INDEX_INDEX_ASC                    = 3
  1741  	IN_INDEX_INDEX_DESC                   = 4
  1742  	IN_INDEX_LOOP                         = 0x0004
  1743  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1744  	IN_INDEX_NOOP                         = 5
  1745  	IN_INDEX_NOOP_OK                      = 0x0001
  1746  	IN_INDEX_ROWID                        = 1
  1747  	JT_CROSS                              = 0x02
  1748  	JT_ERROR                              = 0x80
  1749  	JT_INNER                              = 0x01
  1750  	JT_LEFT                               = 0x08
  1751  	JT_LTORJ                              = 0x40
  1752  	JT_NATURAL                            = 0x04
  1753  	JT_OUTER                              = 0x20
  1754  	JT_RIGHT                              = 0x10
  1755  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1756  	KEYINFO_ORDER_DESC                    = 0x01
  1757  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1758  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1759  	LOCATE_NOERR                          = 0x02
  1760  	LOCATE_VIEW                           = 0x01
  1761  	LOOKASIDE_SMALL                       = 128
  1762  	LT_OBJDIR                             = ".libs/"
  1763  	M10d_Any                              = 1
  1764  	M10d_No                               = 2
  1765  	M10d_Yes                              = 0
  1766  	MEMTYPE_HEAP                          = 0x01
  1767  	MEMTYPE_LOOKASIDE                     = 0x02
  1768  	MEMTYPE_PCACHE                        = 0x04
  1769  	MSVC_VERSION                          = 0
  1770  	NC_AllowAgg                           = 0x000001
  1771  	NC_AllowWin                           = 0x004000
  1772  	NC_Complex                            = 0x002000
  1773  	NC_FromDDL                            = 0x040000
  1774  	NC_GenCol                             = 0x000008
  1775  	NC_HasAgg                             = 0x000010
  1776  	NC_HasWin                             = 0x008000
  1777  	NC_IdxExpr                            = 0x000020
  1778  	NC_InAggFunc                          = 0x020000
  1779  	NC_IsCheck                            = 0x000004
  1780  	NC_IsDDL                              = 0x010000
  1781  	NC_MinMaxAgg                          = 0x001000
  1782  	NC_NoSelect                           = 0x080000
  1783  	NC_OrderAgg                           = 0x8000000
  1784  	NC_PartIdx                            = 0x000002
  1785  	NC_SelfRef                            = 0x00002e
  1786  	NC_UAggInfo                           = 0x000100
  1787  	NC_UBaseReg                           = 0x000400
  1788  	NC_UEList                             = 0x000080
  1789  	NC_UUpsert                            = 0x000200
  1790  	NC_VarSelect                          = 0x000040
  1791  	NO_LOCK                               = 0
  1792  	OE_Abort                              = 2
  1793  	OE_Cascade                            = 10
  1794  	OE_Default                            = 11
  1795  	OE_Fail                               = 3
  1796  	OE_Ignore                             = 4
  1797  	OE_None                               = 0
  1798  	OE_Replace                            = 5
  1799  	OE_Restrict                           = 7
  1800  	OE_Rollback                           = 1
  1801  	OE_SetDflt                            = 9
  1802  	OE_SetNull                            = 8
  1803  	OE_Update                             = 6
  1804  	OMIT_TEMPDB                           = 0
  1805  	ONEPASS_MULTI                         = 2
  1806  	ONEPASS_OFF                           = 0
  1807  	ONEPASS_SINGLE                        = 1
  1808  	OPFLAG_APPEND                         = 0x08
  1809  	OPFLAG_AUXDELETE                      = 0x04
  1810  	OPFLAG_BULKCSR                        = 0x01
  1811  	OPFLAG_EPHEM                          = 0x01
  1812  	OPFLAG_FORDELETE                      = 0x08
  1813  	OPFLAG_ISNOOP                         = 0x40
  1814  	OPFLAG_ISUPDATE                       = 0x04
  1815  	OPFLAG_LASTROWID                      = 0x20
  1816  	OPFLAG_LENGTHARG                      = 0x40
  1817  	OPFLAG_NCHANGE                        = 0x01
  1818  	OPFLAG_NOCHNG                         = 0x01
  1819  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1820  	OPFLAG_P2ISREG                        = 0x10
  1821  	OPFLAG_PERMUTE                        = 0x01
  1822  	OPFLAG_PREFORMAT                      = 0x80
  1823  	OPFLAG_SAVEPOSITION                   = 0x02
  1824  	OPFLAG_SEEKEQ                         = 0x02
  1825  	OPFLAG_TYPEOFARG                      = 0x80
  1826  	OPFLAG_USESEEKRESULT                  = 0x10
  1827  	OPFLG_IN1                             = 0x02
  1828  	OPFLG_IN2                             = 0x04
  1829  	OPFLG_IN3                             = 0x08
  1830  	OPFLG_JUMP                            = 0x01
  1831  	OPFLG_OUT2                            = 0x10
  1832  	OPFLG_OUT3                            = 0x20
  1833  	OP_Abortable                          = 186
  1834  	OP_Add                                = 106
  1835  	OP_AddImm                             = 86
  1836  	OP_Affinity                           = 96
  1837  	OP_AggFinal                           = 165
  1838  	OP_AggInverse                         = 161
  1839  	OP_AggStep                            = 162
  1840  	OP_AggStep1                           = 163
  1841  	OP_AggValue                           = 164
  1842  	OP_And                                = 44
  1843  	OP_AutoCommit                         = 1
  1844  	OP_BeginSubrtn                        = 74
  1845  	OP_BitAnd                             = 102
  1846  	OP_BitNot                             = 114
  1847  	OP_BitOr                              = 103
  1848  	OP_Blob                               = 77
  1849  	OP_Cast                               = 88
  1850  	OP_Checkpoint                         = 3
  1851  	OP_Clear                              = 145
  1852  	OP_Close                              = 122
  1853  	OP_ClrSubtype                         = 179
  1854  	OP_CollSeq                            = 85
  1855  	OP_Column                             = 94
  1856  	OP_ColumnsUsed                        = 123
  1857  	OP_Compare                            = 90
  1858  	OP_Concat                             = 111
  1859  	OP_Copy                               = 80
  1860  	OP_Count                              = 98
  1861  	OP_CreateBtree                        = 147
  1862  	OP_CursorHint                         = 182
  1863  	OP_CursorLock                         = 167
  1864  	OP_CursorUnlock                       = 168
  1865  	OP_DecrJumpZero                       = 60
  1866  	OP_DeferredSeek                       = 141
  1867  	OP_Delete                             = 130
  1868  	OP_Destroy                            = 144
  1869  	OP_Divide                             = 109
  1870  	OP_DropIndex                          = 152
  1871  	OP_DropTable                          = 151
  1872  	OP_DropTrigger                        = 154
  1873  	OP_ElseEq                             = 58
  1874  	OP_EndCoroutine                       = 68
  1875  	OP_Eq                                 = 53
  1876  	OP_Expire                             = 166
  1877  	OP_Explain                            = 185
  1878  	OP_Filter                             = 63
  1879  	OP_FilterAdd                          = 180
  1880  	OP_FinishSeek                         = 143
  1881  	OP_FkCheck                            = 83
  1882  	OP_FkCounter                          = 158
  1883  	OP_FkIfZero                           = 48
  1884  	OP_Found                              = 28
  1885  	OP_Function                           = 66
  1886  	OP_Ge                                 = 57
  1887  	OP_Gosub                              = 9
  1888  	OP_Goto                               = 8
  1889  	OP_Gt                                 = 54
  1890  	OP_Halt                               = 70
  1891  	OP_HaltIfNull                         = 69
  1892  	OP_IdxDelete                          = 140
  1893  	OP_IdxGE                              = 42
  1894  	OP_IdxGT                              = 40
  1895  	OP_IdxInsert                          = 138
  1896  	OP_IdxLE                              = 39
  1897  	OP_IdxLT                              = 41
  1898  	OP_IdxRowid                           = 142
  1899  	OP_If                                 = 15
  1900  	OP_IfNoHope                           = 25
  1901  	OP_IfNot                              = 16
  1902  	OP_IfNotOpen                          = 24
  1903  	OP_IfNotZero                          = 59
  1904  	OP_IfNullRow                          = 18
  1905  	OP_IfPos                              = 49
  1906  	OP_IfSmaller                          = 32
  1907  	OP_IncrVacuum                         = 61
  1908  	OP_Init                               = 64
  1909  	OP_InitCoroutine                      = 10
  1910  	OP_Insert                             = 128
  1911  	OP_Int64                              = 72
  1912  	OP_IntCopy                            = 82
  1913  	OP_Integer                            = 71
  1914  	OP_IntegrityCk                        = 155
  1915  	OP_IsNull                             = 50
  1916  	OP_IsNullOrType                       = 17
  1917  	OP_IsTrue                             = 91
  1918  	OP_JournalMode                        = 4
  1919  	OP_Jump                               = 13
  1920  	OP_Last                               = 31
  1921  	OP_Le                                 = 55
  1922  	OP_LoadAnalysis                       = 150
  1923  	OP_Lt                                 = 56
  1924  	OP_MakeRecord                         = 97
  1925  	OP_MaxPgcnt                           = 178
  1926  	OP_MemMax                             = 159
  1927  	OP_Move                               = 79
  1928  	OP_Multiply                           = 108
  1929  	OP_MustBeInt                          = 12
  1930  	OP_Ne                                 = 52
  1931  	OP_NewRowid                           = 127
  1932  	OP_Next                               = 38
  1933  	OP_NoConflict                         = 26
  1934  	OP_Noop                               = 184
  1935  	OP_Not                                = 19
  1936  	OP_NotExists                          = 30
  1937  	OP_NotFound                           = 27
  1938  	OP_NotNull                            = 51
  1939  	OP_Null                               = 75
  1940  	OP_NullRow                            = 136
  1941  	OP_Offset                             = 93
  1942  	OP_OffsetLimit                        = 160
  1943  	OP_Once                               = 14
  1944  	OP_OpenAutoindex                      = 116
  1945  	OP_OpenDup                            = 115
  1946  	OP_OpenEphemeral                      = 118
  1947  	OP_OpenPseudo                         = 121
  1948  	OP_OpenRead                           = 112
  1949  	OP_OpenWrite                          = 113
  1950  	OP_Or                                 = 43
  1951  	OP_Pagecount                          = 177
  1952  	OP_Param                              = 157
  1953  	OP_ParseSchema                        = 149
  1954  	OP_Permutation                        = 89
  1955  	OP_Prev                               = 37
  1956  	OP_Program                            = 47
  1957  	OP_PureFunc                           = 65
  1958  	OP_ReadCookie                         = 99
  1959  	OP_Real                               = 153
  1960  	OP_RealAffinity                       = 87
  1961  	OP_ReleaseReg                         = 183
  1962  	OP_Remainder                          = 110
  1963  	OP_ReopenIdx                          = 101
  1964  	OP_ResetCount                         = 131
  1965  	OP_ResetSorter                        = 146
  1966  	OP_ResultRow                          = 84
  1967  	OP_Return                             = 67
  1968  	OP_Rewind                             = 35
  1969  	OP_RowCell                            = 129
  1970  	OP_RowData                            = 134
  1971  	OP_RowSetAdd                          = 156
  1972  	OP_RowSetRead                         = 45
  1973  	OP_RowSetTest                         = 46
  1974  	OP_Rowid                              = 135
  1975  	OP_SCopy                              = 81
  1976  	OP_Savepoint                          = 0
  1977  	OP_SeekEnd                            = 137
  1978  	OP_SeekGE                             = 22
  1979  	OP_SeekGT                             = 23
  1980  	OP_SeekHit                            = 125
  1981  	OP_SeekLE                             = 21
  1982  	OP_SeekLT                             = 20
  1983  	OP_SeekRowid                          = 29
  1984  	OP_SeekScan                           = 124
  1985  	OP_Sequence                           = 126
  1986  	OP_SequenceTest                       = 120
  1987  	OP_SetCookie                          = 100
  1988  	OP_ShiftLeft                          = 104
  1989  	OP_ShiftRight                         = 105
  1990  	OP_SoftNull                           = 76
  1991  	OP_Sort                               = 34
  1992  	OP_SorterCompare                      = 132
  1993  	OP_SorterData                         = 133
  1994  	OP_SorterInsert                       = 139
  1995  	OP_SorterNext                         = 36
  1996  	OP_SorterOpen                         = 119
  1997  	OP_SorterSort                         = 33
  1998  	OP_SqlExec                            = 148
  1999  	OP_String                             = 73
  2000  	OP_String8                            = 117
  2001  	OP_Subtract                           = 107
  2002  	OP_TableLock                          = 169
  2003  	OP_Trace                              = 181
  2004  	OP_Transaction                        = 2
  2005  	OP_TypeCheck                          = 95
  2006  	OP_VBegin                             = 170
  2007  	OP_VColumn                            = 175
  2008  	OP_VCreate                            = 171
  2009  	OP_VDestroy                           = 172
  2010  	OP_VFilter                            = 6
  2011  	OP_VInitIn                            = 174
  2012  	OP_VNext                              = 62
  2013  	OP_VOpen                              = 173
  2014  	OP_VRename                            = 176
  2015  	OP_VUpdate                            = 7
  2016  	OP_Vacuum                             = 5
  2017  	OP_Variable                           = 78
  2018  	OP_Yield                              = 11
  2019  	OP_ZeroOrNull                         = 92
  2020  	OS_VXWORKS                            = 0
  2021  	P4_COLLSEQ                            = -2
  2022  	P4_DYNAMIC                            = -6
  2023  	P4_EXPR                               = -9
  2024  	P4_FREE_IF_LE                         = -6
  2025  	P4_FUNCCTX                            = -15
  2026  	P4_FUNCDEF                            = -7
  2027  	P4_INT32                              = -3
  2028  	P4_INT64                              = -13
  2029  	P4_INTARRAY                           = -14
  2030  	P4_KEYINFO                            = -8
  2031  	P4_MEM                                = -10
  2032  	P4_NOTUSED                            = 0
  2033  	P4_REAL                               = -12
  2034  	P4_STATIC                             = -1
  2035  	P4_SUBPROGRAM                         = -4
  2036  	P4_TABLE                              = -5
  2037  	P4_TRANSIENT                          = 0
  2038  	P4_VTAB                               = -11
  2039  	P5_ConstraintCheck                    = 3
  2040  	P5_ConstraintFK                       = 4
  2041  	P5_ConstraintNotNull                  = 1
  2042  	P5_ConstraintUnique                   = 2
  2043  	PACKAGE_BUGREPORT                     = ""
  2044  	PACKAGE_NAME                          = "sqlite"
  2045  	PACKAGE_STRING                        = "sqlite 3.39.3"
  2046  	PACKAGE_TARNAME                       = "sqlite"
  2047  	PACKAGE_VERSION                       = "3.39.3"
  2048  	PAGER_CACHESPILL                      = 0x20
  2049  	PAGER_CKPT_FULLFSYNC                  = 0x10
  2050  	PAGER_FLAGS_MASK                      = 0x38
  2051  	PAGER_FULLFSYNC                       = 0x08
  2052  	PAGER_GET_NOCONTENT                   = 0x01
  2053  	PAGER_GET_READONLY                    = 0x02
  2054  	PAGER_JOURNALMODE_DELETE              = 0
  2055  	PAGER_JOURNALMODE_MEMORY              = 4
  2056  	PAGER_JOURNALMODE_OFF                 = 2
  2057  	PAGER_JOURNALMODE_PERSIST             = 1
  2058  	PAGER_JOURNALMODE_QUERY               = -1
  2059  	PAGER_JOURNALMODE_TRUNCATE            = 3
  2060  	PAGER_JOURNALMODE_WAL                 = 5
  2061  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  2062  	PAGER_LOCKINGMODE_NORMAL              = 0
  2063  	PAGER_LOCKINGMODE_QUERY               = -1
  2064  	PAGER_MEMORY                          = 0x0002
  2065  	PAGER_OMIT_JOURNAL                    = 0x0001
  2066  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  2067  	PAGER_SYNCHRONOUS_FULL                = 0x03
  2068  	PAGER_SYNCHRONOUS_MASK                = 0x07
  2069  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  2070  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  2071  	PARSE_MODE_DECLARE_VTAB               = 1
  2072  	PARSE_MODE_NORMAL                     = 0
  2073  	PARSE_MODE_RENAME                     = 2
  2074  	PARSE_MODE_UNMAP                      = 3
  2075  	PENDING_LOCK                          = 3
  2076  	PGHDR_CLEAN                           = 0x001
  2077  	PGHDR_DIRTY                           = 0x002
  2078  	PGHDR_DONT_WRITE                      = 0x010
  2079  	PGHDR_MMAP                            = 0x020
  2080  	PGHDR_NEED_SYNC                       = 0x008
  2081  	PGHDR_WAL_APPEND                      = 0x040
  2082  	PGHDR_WRITEABLE                       = 0x004
  2083  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2084  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2085  	PRIX16                                = "X"
  2086  	PRIX32                                = "X"
  2087  	PRIX64                                = "llX"
  2088  	PRIX8                                 = "X"
  2089  	PRIXFAST16                            = "X"
  2090  	PRIXFAST32                            = "X"
  2091  	PRIXFAST64                            = "llX"
  2092  	PRIXFAST8                             = "X"
  2093  	PRIXLEAST16                           = "X"
  2094  	PRIXLEAST32                           = "X"
  2095  	PRIXLEAST64                           = "llX"
  2096  	PRIXLEAST8                            = "X"
  2097  	PRIXMAX                               = "jX"
  2098  	PRIXPTR                               = "lX"
  2099  	PRId16                                = "d"
  2100  	PRId32                                = "d"
  2101  	PRId64                                = "lld"
  2102  	PRId8                                 = "d"
  2103  	PRIdFAST16                            = "d"
  2104  	PRIdFAST32                            = "d"
  2105  	PRIdFAST64                            = "lld"
  2106  	PRIdFAST8                             = "d"
  2107  	PRIdLEAST16                           = "d"
  2108  	PRIdLEAST32                           = "d"
  2109  	PRIdLEAST64                           = "lld"
  2110  	PRIdLEAST8                            = "d"
  2111  	PRIdMAX                               = "jd"
  2112  	PRIdPTR                               = "ld"
  2113  	PRIi16                                = "i"
  2114  	PRIi32                                = "i"
  2115  	PRIi64                                = "lli"
  2116  	PRIi8                                 = "i"
  2117  	PRIiFAST16                            = "i"
  2118  	PRIiFAST32                            = "i"
  2119  	PRIiFAST64                            = "lli"
  2120  	PRIiFAST8                             = "i"
  2121  	PRIiLEAST16                           = "i"
  2122  	PRIiLEAST32                           = "i"
  2123  	PRIiLEAST64                           = "lli"
  2124  	PRIiLEAST8                            = "i"
  2125  	PRIiMAX                               = "ji"
  2126  	PRIiPTR                               = "li"
  2127  	PRIo16                                = "o"
  2128  	PRIo32                                = "o"
  2129  	PRIo64                                = "llo"
  2130  	PRIo8                                 = "o"
  2131  	PRIoFAST16                            = "o"
  2132  	PRIoFAST32                            = "o"
  2133  	PRIoFAST64                            = "llo"
  2134  	PRIoFAST8                             = "o"
  2135  	PRIoLEAST16                           = "o"
  2136  	PRIoLEAST32                           = "o"
  2137  	PRIoLEAST64                           = "llo"
  2138  	PRIoLEAST8                            = "o"
  2139  	PRIoMAX                               = "jo"
  2140  	PRIoPTR                               = "lo"
  2141  	PRIu16                                = "u"
  2142  	PRIu32                                = "u"
  2143  	PRIu64                                = "llu"
  2144  	PRIu8                                 = "u"
  2145  	PRIuFAST16                            = "u"
  2146  	PRIuFAST32                            = "u"
  2147  	PRIuFAST64                            = "llu"
  2148  	PRIuFAST8                             = "u"
  2149  	PRIuLEAST16                           = "u"
  2150  	PRIuLEAST32                           = "u"
  2151  	PRIuLEAST64                           = "llu"
  2152  	PRIuLEAST8                            = "u"
  2153  	PRIuMAX                               = "ju"
  2154  	PRIuPTR                               = "lu"
  2155  	PRIx16                                = "x"
  2156  	PRIx32                                = "x"
  2157  	PRIx64                                = "llx"
  2158  	PRIx8                                 = "x"
  2159  	PRIxFAST16                            = "x"
  2160  	PRIxFAST32                            = "x"
  2161  	PRIxFAST64                            = "llx"
  2162  	PRIxFAST8                             = "x"
  2163  	PRIxLEAST16                           = "x"
  2164  	PRIxLEAST32                           = "x"
  2165  	PRIxLEAST64                           = "llx"
  2166  	PRIxLEAST8                            = "x"
  2167  	PRIxMAX                               = "jx"
  2168  	PRIxPTR                               = "lx"
  2169  	PTRDIFF_MAX                           = 9223372036854775807
  2170  	PTRDIFF_MIN                           = -9223372036854775808
  2171  	RESERVED_LOCK                         = 2
  2172  	SAVEPOINT_BEGIN                       = 0
  2173  	SAVEPOINT_RELEASE                     = 1
  2174  	SAVEPOINT_ROLLBACK                    = 2
  2175  	SCHEMA_ROOT                           = 1
  2176  	SCNd16                                = "hd"
  2177  	SCNd32                                = "d"
  2178  	SCNd64                                = "lld"
  2179  	SCNd8                                 = "hhd"
  2180  	SCNdFAST16                            = "d"
  2181  	SCNdFAST32                            = "d"
  2182  	SCNdFAST64                            = "lld"
  2183  	SCNdFAST8                             = "d"
  2184  	SCNdLEAST16                           = "hd"
  2185  	SCNdLEAST32                           = "d"
  2186  	SCNdLEAST64                           = "lld"
  2187  	SCNdLEAST8                            = "hhd"
  2188  	SCNdMAX                               = "jd"
  2189  	SCNdPTR                               = "ld"
  2190  	SCNi16                                = "hi"
  2191  	SCNi32                                = "i"
  2192  	SCNi64                                = "lli"
  2193  	SCNi8                                 = "hhi"
  2194  	SCNiFAST16                            = "i"
  2195  	SCNiFAST32                            = "i"
  2196  	SCNiFAST64                            = "lli"
  2197  	SCNiFAST8                             = "i"
  2198  	SCNiLEAST16                           = "hi"
  2199  	SCNiLEAST32                           = "i"
  2200  	SCNiLEAST64                           = "lli"
  2201  	SCNiLEAST8                            = "hhi"
  2202  	SCNiMAX                               = "ji"
  2203  	SCNiPTR                               = "li"
  2204  	SCNo16                                = "ho"
  2205  	SCNo32                                = "o"
  2206  	SCNo64                                = "llo"
  2207  	SCNo8                                 = "hho"
  2208  	SCNoFAST16                            = "o"
  2209  	SCNoFAST32                            = "o"
  2210  	SCNoFAST64                            = "llo"
  2211  	SCNoFAST8                             = "o"
  2212  	SCNoLEAST16                           = "ho"
  2213  	SCNoLEAST32                           = "o"
  2214  	SCNoLEAST64                           = "llo"
  2215  	SCNoLEAST8                            = "hho"
  2216  	SCNoMAX                               = "jo"
  2217  	SCNoPTR                               = "lo"
  2218  	SCNu16                                = "hu"
  2219  	SCNu32                                = "u"
  2220  	SCNu64                                = "llu"
  2221  	SCNu8                                 = "hhu"
  2222  	SCNuFAST16                            = "u"
  2223  	SCNuFAST32                            = "u"
  2224  	SCNuFAST64                            = "llu"
  2225  	SCNuFAST8                             = "u"
  2226  	SCNuLEAST16                           = "hu"
  2227  	SCNuLEAST32                           = "u"
  2228  	SCNuLEAST64                           = "llu"
  2229  	SCNuLEAST8                            = "hhu"
  2230  	SCNuMAX                               = "ju"
  2231  	SCNuPTR                               = "lu"
  2232  	SCNx16                                = "hx"
  2233  	SCNx32                                = "x"
  2234  	SCNx64                                = "llx"
  2235  	SCNx8                                 = "hhx"
  2236  	SCNxFAST16                            = "x"
  2237  	SCNxFAST32                            = "x"
  2238  	SCNxFAST64                            = "llx"
  2239  	SCNxFAST8                             = "x"
  2240  	SCNxLEAST16                           = "hx"
  2241  	SCNxLEAST32                           = "x"
  2242  	SCNxLEAST64                           = "llx"
  2243  	SCNxLEAST8                            = "hhx"
  2244  	SCNxMAX                               = "jx"
  2245  	SCNxPTR                               = "lx"
  2246  	SF_Aggregate                          = 0x0000008
  2247  	SF_All                                = 0x0000002
  2248  	SF_ComplexResult                      = 0x0040000
  2249  	SF_Compound                           = 0x0000100
  2250  	SF_Converted                          = 0x0010000
  2251  	SF_CopyCte                            = 0x4000000
  2252  	SF_Distinct                           = 0x0000001
  2253  	SF_Expanded                           = 0x0000040
  2254  	SF_FixedLimit                         = 0x0004000
  2255  	SF_HasAgg                             = 0x0000010
  2256  	SF_HasTypeInfo                        = 0x0000080
  2257  	SF_IncludeHidden                      = 0x0020000
  2258  	SF_MaybeConvert                       = 0x0008000
  2259  	SF_MinMaxAgg                          = 0x0001000
  2260  	SF_MultiPart                          = 0x2000000
  2261  	SF_MultiValue                         = 0x0000400
  2262  	SF_NestedFrom                         = 0x0000800
  2263  	SF_NoopOrderBy                        = 0x0400000
  2264  	SF_OrderByReqd                        = 0x8000000
  2265  	SF_PushDown                           = 0x1000000
  2266  	SF_Recursive                          = 0x0002000
  2267  	SF_Resolved                           = 0x0000004
  2268  	SF_UFSrcCheck                         = 0x0800000
  2269  	SF_UsesEphemeral                      = 0x0000020
  2270  	SF_Values                             = 0x0000200
  2271  	SF_View                               = 0x0200000
  2272  	SF_WhereBegin                         = 0x0080000
  2273  	SF_WinRewrite                         = 0x0100000
  2274  	SHARED_LOCK                           = 1
  2275  	SHARED_SIZE                           = 510
  2276  	SIG_ATOMIC_MAX                        = 2147483647
  2277  	SIG_ATOMIC_MIN                        = -2147483648
  2278  	SIZE_MAX                              = 18446744073709551615
  2279  	SQLITECONFIG_H                        = 1
  2280  	SQLITEINT_H                           = 0
  2281  	SQLITE_AFF_BLOB                       = 0x41
  2282  	SQLITE_AFF_INTEGER                    = 0x44
  2283  	SQLITE_AFF_MASK                       = 0x47
  2284  	SQLITE_AFF_NONE                       = 0x40
  2285  	SQLITE_AFF_NUMERIC                    = 0x43
  2286  	SQLITE_AFF_REAL                       = 0x45
  2287  	SQLITE_AFF_TEXT                       = 0x42
  2288  	SQLITE_ASCII                          = 1
  2289  	SQLITE_ATOMIC_INTRINSICS              = 0
  2290  	SQLITE_AllOpts                        = 0xffffffff
  2291  	SQLITE_AutoIndex                      = 0x00008000
  2292  	SQLITE_BIGENDIAN                      = 0
  2293  	SQLITE_BTREE_H                        = 0
  2294  	SQLITE_BYTEORDER                      = 1234
  2295  	SQLITE_BalancedMerge                  = 0x00200000
  2296  	SQLITE_BloomFilter                    = 0x00080000
  2297  	SQLITE_BloomPulldown                  = 0x00100000
  2298  	SQLITE_CacheSpill                     = 0x00000020
  2299  	SQLITE_CellSizeCk                     = 0x00200000
  2300  	SQLITE_CkptFullFSync                  = 0x00000010
  2301  	SQLITE_CountOfView                    = 0x00000200
  2302  	SQLITE_CoverIdxScan                   = 0x00000020
  2303  	SQLITE_CursorHints                    = 0x00000400
  2304  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2305  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2306  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2307  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2308  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2309  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2310  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2311  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2312  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2313  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2314  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2315  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2316  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2317  	SQLITE_Defensive                      = 0x10000000
  2318  	SQLITE_DeferFKs                       = 0x00080000
  2319  	SQLITE_DistinctOpt                    = 0x00000010
  2320  	SQLITE_DqsDDL                         = 0x20000000
  2321  	SQLITE_DqsDML                         = 0x40000000
  2322  	SQLITE_ECEL_DUP                       = 0x01
  2323  	SQLITE_ECEL_FACTOR                    = 0x02
  2324  	SQLITE_ECEL_OMITREF                   = 0x08
  2325  	SQLITE_ECEL_REF                       = 0x04
  2326  	SQLITE_EnableQPSG                     = 0x00800000
  2327  	SQLITE_EnableTrigger                  = 0x00040000
  2328  	SQLITE_EnableView                     = 0x80000000
  2329  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2330  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2331  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2332  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2333  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2334  	SQLITE_FUNC_CASE                      = 0x0008
  2335  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2336  	SQLITE_FUNC_COUNT                     = 0x0100
  2337  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2338  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2339  	SQLITE_FUNC_EPHEM                     = 0x0010
  2340  	SQLITE_FUNC_HASH_SZ                   = 23
  2341  	SQLITE_FUNC_INLINE                    = 0x00400000
  2342  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2343  	SQLITE_FUNC_LENGTH                    = 0x0040
  2344  	SQLITE_FUNC_LIKE                      = 0x0004
  2345  	SQLITE_FUNC_MINMAX                    = 0x1000
  2346  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2347  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2348  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2349  	SQLITE_FUNC_TEST                      = 0x4000
  2350  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2351  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2352  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2353  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2354  	SQLITE_FactorOutConst                 = 0x00000008
  2355  	SQLITE_FlttnUnionAll                  = 0x00800000
  2356  	SQLITE_ForeignKeys                    = 0x00004000
  2357  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2358  	SQLITE_FullColNames                   = 0x00000004
  2359  	SQLITE_FullFSync                      = 0x00000008
  2360  	SQLITE_GroupByOrder                   = 0x00000004
  2361  	SQLITE_HASH_H                         = 0
  2362  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2363  	SQLITE_HAVE_OS_TRACE                  = 0
  2364  	SQLITE_IDXTYPE_APPDEF                 = 0
  2365  	SQLITE_IDXTYPE_IPK                    = 3
  2366  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2367  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2368  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2369  	SQLITE_IgnoreChecks                   = 0x00000200
  2370  	SQLITE_JUMPIFNULL                     = 0x10
  2371  	SQLITE_LITTLEENDIAN                   = 1
  2372  	SQLITE_LegacyAlter                    = 0x04000000
  2373  	SQLITE_LegacyFileFmt                  = 0x00000002
  2374  	SQLITE_LoadExtFunc                    = 0x00020000
  2375  	SQLITE_LoadExtension                  = 0x00010000
  2376  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2377  	SQLITE_MAX_ATTACHED                   = 10
  2378  	SQLITE_MAX_COLUMN                     = 2000
  2379  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2380  	SQLITE_MAX_DB                         = 12
  2381  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2382  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2383  	SQLITE_MAX_FILE_FORMAT                = 4
  2384  	SQLITE_MAX_FUNCTION_ARG               = 127
  2385  	SQLITE_MAX_LENGTH                     = 1000000000
  2386  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2387  	SQLITE_MAX_MMAP_SIZE                  = 0
  2388  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2389  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2390  	SQLITE_MAX_PATHLEN                    = 1024
  2391  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2392  	SQLITE_MAX_SYMLINK                    = 200
  2393  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2394  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2395  	SQLITE_MAX_VDBE_OP                    = 250000000
  2396  	SQLITE_MAX_WORKER_THREADS             = 8
  2397  	SQLITE_MSVC_H                         = 0
  2398  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2399  	SQLITE_MX_JUMP_OPCODE                 = 64
  2400  	SQLITE_MinMaxOpt                      = 0x00010000
  2401  	SQLITE_NEED_ERR_NAME                  = 0
  2402  	SQLITE_NOMEM_BKPT                     = 7
  2403  	SQLITE_NOTNULL                        = 0x90
  2404  	SQLITE_NTUNE                          = 6
  2405  	SQLITE_NULLEQ                         = 0x80
  2406  	SQLITE_N_BTREE_META                   = 16
  2407  	SQLITE_N_LIMIT                        = 12
  2408  	SQLITE_N_STDTYPE                      = 6
  2409  	SQLITE_NoCkptOnClose                  = 0x00000800
  2410  	SQLITE_NoSchemaError                  = 0x08000000
  2411  	SQLITE_NullCallback                   = 0x00000100
  2412  	SQLITE_OS_OTHER                       = 0
  2413  	SQLITE_OS_SETUP_H                     = 0
  2414  	SQLITE_OS_UNIX                        = 1
  2415  	SQLITE_OS_WIN                         = 0
  2416  	SQLITE_OmitNoopJoin                   = 0x00000100
  2417  	SQLITE_OmitOrderBy                    = 0x00040000
  2418  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2419  	SQLITE_PAGER_H                        = 0
  2420  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2421  	SQLITE_PREPARE_MASK                   = 0x0f
  2422  	SQLITE_PREPARE_SAVESQL                = 0x80
  2423  	SQLITE_PRINTF_INTERNAL                = 0x01
  2424  	SQLITE_PRINTF_MALLOCED                = 0x04
  2425  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2426  	SQLITE_PTRSIZE                        = 8
  2427  	SQLITE_PropagateConst                 = 0x00008000
  2428  	SQLITE_PushDown                       = 0x00001000
  2429  	SQLITE_QueryFlattener                 = 0x00000001
  2430  	SQLITE_QueryOnly                      = 0x00100000
  2431  	SQLITE_ReadUncommit                   = 0x00000400
  2432  	SQLITE_RecTriggers                    = 0x00002000
  2433  	SQLITE_ReleaseReg                     = 0x00400000
  2434  	SQLITE_ResetDatabase                  = 0x02000000
  2435  	SQLITE_ReverseOrder                   = 0x00001000
  2436  	SQLITE_SO_ASC                         = 0
  2437  	SQLITE_SO_DESC                        = 1
  2438  	SQLITE_SO_UNDEFINED                   = -1
  2439  	SQLITE_STATE_BUSY                     = 0x6d
  2440  	SQLITE_STATE_CLOSED                   = 0xce
  2441  	SQLITE_STATE_ERROR                    = 0xd5
  2442  	SQLITE_STATE_OPEN                     = 0x76
  2443  	SQLITE_STATE_SICK                     = 0xba
  2444  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2445  	SQLITE_SYSTEM_MALLOC                  = 1
  2446  	SQLITE_SeekScan                       = 0x00020000
  2447  	SQLITE_ShortColNames                  = 0x00000040
  2448  	SQLITE_SimplifyJoin                   = 0x00002000
  2449  	SQLITE_SkipScan                       = 0x00004000
  2450  	SQLITE_Stat4                          = 0x00000800
  2451  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2452  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2453  	SQLITE_TOKEN_QUOTED                   = 0x1
  2454  	SQLITE_TRACE_LEGACY                   = 0x40
  2455  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2456  	SQLITE_TRACE_XPROFILE                 = 0x80
  2457  	SQLITE_Transitive                     = 0x00000080
  2458  	SQLITE_TriggerEQP                     = 0x01000000
  2459  	SQLITE_TrustedSchema                  = 0x00000080
  2460  	SQLITE_UTF16NATIVE                    = 2
  2461  	SQLITE_VDBE_H                         = 0
  2462  	SQLITE_VTABRISK_High                  = 2
  2463  	SQLITE_VTABRISK_Low                   = 0
  2464  	SQLITE_VTABRISK_Normal                = 1
  2465  	SQLITE_WSD                            = 0
  2466  	SQLITE_WindowFunc                     = 0x00000002
  2467  	SQLITE_WriteSchema                    = 0x00000001
  2468  	SRT_Coroutine                         = 13
  2469  	SRT_Discard                           = 4
  2470  	SRT_DistFifo                          = 5
  2471  	SRT_DistQueue                         = 6
  2472  	SRT_EphemTab                          = 12
  2473  	SRT_Except                            = 2
  2474  	SRT_Exists                            = 3
  2475  	SRT_Fifo                              = 8
  2476  	SRT_Mem                               = 10
  2477  	SRT_Output                            = 9
  2478  	SRT_Queue                             = 7
  2479  	SRT_Set                               = 11
  2480  	SRT_Table                             = 14
  2481  	SRT_Union                             = 1
  2482  	SRT_Upfrom                            = 15
  2483  	STDC_HEADERS                          = 1
  2484  	TABTYP_NORM                           = 0
  2485  	TABTYP_VIEW                           = 2
  2486  	TABTYP_VTAB                           = 1
  2487  	TF_Autoincrement                      = 0x00000008
  2488  	TF_Ephemeral                          = 0x00004000
  2489  	TF_Eponymous                          = 0x00008000
  2490  	TF_HasGenerated                       = 0x00000060
  2491  	TF_HasHidden                          = 0x00000002
  2492  	TF_HasNotNull                         = 0x00000800
  2493  	TF_HasPrimaryKey                      = 0x00000004
  2494  	TF_HasStat1                           = 0x00000010
  2495  	TF_HasStat4                           = 0x00002000
  2496  	TF_HasStored                          = 0x00000040
  2497  	TF_HasVirtual                         = 0x00000020
  2498  	TF_NoVisibleRowid                     = 0x00000200
  2499  	TF_OOOHidden                          = 0x00000400
  2500  	TF_Readonly                           = 0x00000001
  2501  	TF_Shadow                             = 0x00001000
  2502  	TF_StatsUsed                          = 0x00000100
  2503  	TF_Strict                             = 0x00010000
  2504  	TF_WithoutRowid                       = 0x00000080
  2505  	TK_ABORT                              = 27
  2506  	TK_ACTION                             = 28
  2507  	TK_ADD                                = 163
  2508  	TK_AFTER                              = 29
  2509  	TK_AGG_COLUMN                         = 169
  2510  	TK_AGG_FUNCTION                       = 168
  2511  	TK_ALL                                = 135
  2512  	TK_ALTER                              = 162
  2513  	TK_ALWAYS                             = 96
  2514  	TK_ANALYZE                            = 30
  2515  	TK_AND                                = 44
  2516  	TK_ANY                                = 101
  2517  	TK_AS                                 = 24
  2518  	TK_ASC                                = 31
  2519  	TK_ASTERISK                           = 180
  2520  	TK_ATTACH                             = 32
  2521  	TK_AUTOINCR                           = 126
  2522  	TK_BEFORE                             = 33
  2523  	TK_BEGIN                              = 5
  2524  	TK_BETWEEN                            = 48
  2525  	TK_BY                                 = 34
  2526  	TK_CASCADE                            = 35
  2527  	TK_CASE                               = 157
  2528  	TK_CAST                               = 36
  2529  	TK_CHECK                              = 124
  2530  	TK_COLLATE                            = 113
  2531  	TK_COLUMN                             = 167
  2532  	TK_COLUMNKW                           = 60
  2533  	TK_COMMIT                             = 10
  2534  	TK_CONFLICT                           = 37
  2535  	TK_CONSTRAINT                         = 119
  2536  	TK_CREATE                             = 17
  2537  	TK_CTIME_KW                           = 100
  2538  	TK_CURRENT                            = 85
  2539  	TK_DATABASE                           = 38
  2540  	TK_DEFAULT                            = 120
  2541  	TK_DEFERRABLE                         = 131
  2542  	TK_DEFERRED                           = 7
  2543  	TK_DELETE                             = 128
  2544  	TK_DESC                               = 39
  2545  	TK_DETACH                             = 40
  2546  	TK_DISTINCT                           = 140
  2547  	TK_DO                                 = 61
  2548  	TK_DROP                               = 133
  2549  	TK_EACH                               = 41
  2550  	TK_ELSE                               = 160
  2551  	TK_END                                = 11
  2552  	TK_ESCAPE                             = 58
  2553  	TK_EXCEPT                             = 136
  2554  	TK_EXCLUDE                            = 91
  2555  	TK_EXCLUSIVE                          = 9
  2556  	TK_EXISTS                             = 20
  2557  	TK_EXPLAIN                            = 2
  2558  	TK_FAIL                               = 42
  2559  	TK_FILTER                             = 166
  2560  	TK_FIRST                              = 83
  2561  	TK_FOLLOWING                          = 86
  2562  	TK_FOR                                = 62
  2563  	TK_FOREIGN                            = 132
  2564  	TK_FROM                               = 142
  2565  	TK_FUNCTION                           = 172
  2566  	TK_GENERATED                          = 95
  2567  	TK_GROUP                              = 146
  2568  	TK_GROUPS                             = 92
  2569  	TK_HAVING                             = 147
  2570  	TK_IF                                 = 18
  2571  	TK_IF_NULL_ROW                        = 179
  2572  	TK_IGNORE                             = 63
  2573  	TK_IMMEDIATE                          = 8
  2574  	TK_IN                                 = 49
  2575  	TK_INDEX                              = 161
  2576  	TK_INDEXED                            = 116
  2577  	TK_INITIALLY                          = 64
  2578  	TK_INSERT                             = 127
  2579  	TK_INSTEAD                            = 65
  2580  	TK_INTERSECT                          = 137
  2581  	TK_INTO                               = 151
  2582  	TK_IS                                 = 45
  2583  	TK_ISNOT                              = 171
  2584  	TK_ISNULL                             = 50
  2585  	TK_JOIN                               = 143
  2586  	TK_JOIN_KW                            = 118
  2587  	TK_KEY                                = 67
  2588  	TK_LAST                               = 84
  2589  	TK_LIKE_KW                            = 47
  2590  	TK_LIMIT                              = 148
  2591  	TK_MATCH                              = 46
  2592  	TK_MATERIALIZED                       = 97
  2593  	TK_NO                                 = 66
  2594  	TK_NOT                                = 19
  2595  	TK_NOTHING                            = 152
  2596  	TK_NOTNULL                            = 51
  2597  	TK_NULL                               = 121
  2598  	TK_NULLS                              = 82
  2599  	TK_OF                                 = 68
  2600  	TK_OFFSET                             = 69
  2601  	TK_ON                                 = 115
  2602  	TK_OR                                 = 43
  2603  	TK_ORDER                              = 145
  2604  	TK_OTHERS                             = 93
  2605  	TK_OVER                               = 165
  2606  	TK_PARTITION                          = 87
  2607  	TK_PLAN                               = 4
  2608  	TK_PRAGMA                             = 70
  2609  	TK_PRECEDING                          = 88
  2610  	TK_PRIMARY                            = 122
  2611  	TK_PTR                                = 112
  2612  	TK_QUERY                              = 3
  2613  	TK_RAISE                              = 71
  2614  	TK_RANGE                              = 89
  2615  	TK_RECURSIVE                          = 72
  2616  	TK_REFERENCES                         = 125
  2617  	TK_REGISTER                           = 176
  2618  	TK_REINDEX                            = 98
  2619  	TK_RELEASE                            = 14
  2620  	TK_RENAME                             = 99
  2621  	TK_REPLACE                            = 73
  2622  	TK_RESTRICT                           = 74
  2623  	TK_RETURNING                          = 150
  2624  	TK_ROLLBACK                           = 12
  2625  	TK_ROW                                = 75
  2626  	TK_ROWS                               = 76
  2627  	TK_SAVEPOINT                          = 13
  2628  	TK_SELECT                             = 138
  2629  	TK_SELECT_COLUMN                      = 178
  2630  	TK_SET                                = 130
  2631  	TK_SPAN                               = 181
  2632  	TK_TABLE                              = 16
  2633  	TK_TEMP                               = 21
  2634  	TK_THEN                               = 159
  2635  	TK_TIES                               = 94
  2636  	TK_TO                                 = 15
  2637  	TK_TRANSACTION                        = 6
  2638  	TK_TRIGGER                            = 77
  2639  	TK_TRUEFALSE                          = 170
  2640  	TK_TRUTH                              = 175
  2641  	TK_UMINUS                             = 173
  2642  	TK_UNBOUNDED                          = 90
  2643  	TK_UNION                              = 134
  2644  	TK_UNIQUE                             = 123
  2645  	TK_UPDATE                             = 129
  2646  	TK_UPLUS                              = 174
  2647  	TK_USING                              = 144
  2648  	TK_VACUUM                             = 78
  2649  	TK_VALUES                             = 139
  2650  	TK_VECTOR                             = 177
  2651  	TK_VIEW                               = 79
  2652  	TK_VIRTUAL                            = 80
  2653  	TK_WHEN                               = 158
  2654  	TK_WHERE                              = 149
  2655  	TK_WINDOW                             = 164
  2656  	TK_WITH                               = 81
  2657  	TK_WITHOUT                            = 26
  2658  	TREETRACE_ENABLED                     = 0
  2659  	TRIGGER_AFTER                         = 2
  2660  	TRIGGER_BEFORE                        = 1
  2661  	UINT16_MAX                            = 0xffff
  2662  	UINT32_MAX                            = 0xffffffff
  2663  	UINT64_MAX                            = 0xffffffffffffffff
  2664  	UINT8_MAX                             = 0xff
  2665  	UINTMAX_MAX                           = 18446744073709551615
  2666  	UINTPTR_MAX                           = 0xffffffffffffffff
  2667  	UINT_FAST16_MAX                       = 4294967295
  2668  	UINT_FAST32_MAX                       = 4294967295
  2669  	UINT_FAST64_MAX                       = 18446744073709551615
  2670  	UINT_FAST8_MAX                        = 4294967295
  2671  	UINT_LEAST16_MAX                      = 65535
  2672  	UINT_LEAST32_MAX                      = 4294967295
  2673  	UINT_LEAST64_MAX                      = 18446744073709551615
  2674  	UINT_LEAST8_MAX                       = 255
  2675  	WCHAR_MAX                             = 2147483647
  2676  	WCHAR_MIN                             = -2147483648
  2677  	WHERE_AGG_DISTINCT                    = 0x0400
  2678  	WHERE_DISTINCTBY                      = 0x0080
  2679  	WHERE_DISTINCT_NOOP                   = 0
  2680  	WHERE_DISTINCT_ORDERED                = 2
  2681  	WHERE_DISTINCT_UNIQUE                 = 1
  2682  	WHERE_DISTINCT_UNORDERED              = 3
  2683  	WHERE_DUPLICATES_OK                   = 0x0010
  2684  	WHERE_GROUPBY                         = 0x0040
  2685  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2686  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2687  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2688  	WHERE_ORDERBY_MAX                     = 0x0002
  2689  	WHERE_ORDERBY_MIN                     = 0x0001
  2690  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2691  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2692  	WHERE_RIGHT_JOIN                      = 0x1000
  2693  	WHERE_SORTBYGROUP                     = 0x0200
  2694  	WHERE_USE_LIMIT                       = 0x4000
  2695  	WHERE_WANT_DISTINCT                   = 0x0100
  2696  	WINT_MAX                              = 2147483647
  2697  	WINT_MIN                              = -2147483648
  2698  	WRC_Abort                             = 2
  2699  	WRC_Continue                          = 0
  2700  	WRC_Prune                             = 1
  2701  	XN_EXPR                               = -2
  2702  	XN_ROWID                              = -1
  2703  	X_BSD_SOURCE                          = 0
  2704  	X_GNU_SOURCE                          = 0
  2705  	X_INTTYPES_H_                         = 0
  2706  	X_LARGEFILE_SOURCE                    = 1
  2707  	X_LARGE_FILE                          = 1
  2708  	X_MBSTATE_T_DEFINED_                  = 0
  2709  	X_PTRDIFF_T_DEFINED_                  = 0
  2710  	X_SQLITE_OS_H_                        = 0
  2711  	X_STDDEF_H_                           = 0
  2712  	X_SYS_STDINT_H_                       = 0
  2713  	X_WINT_T_DEFINED_                     = 0
  2714  	X_XOPEN_SOURCE                        = 600
  2715  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2716  	BUS_ADRALN                            = 1
  2717  	BUS_ADRERR                            = 2
  2718  	BUS_OBJERR                            = 3
  2719  	CLD_CONTINUED                         = 6
  2720  	CLD_DUMPED                            = 3
  2721  	CLD_EXITED                            = 1
  2722  	CLD_KILLED                            = 2
  2723  	CLD_STOPPED                           = 5
  2724  	CLD_TRAPPED                           = 4
  2725  	EMT_TAGOVF                            = 1
  2726  	FPE_FLTDIV                            = 3
  2727  	FPE_FLTINV                            = 7
  2728  	FPE_FLTOVF                            = 4
  2729  	FPE_FLTRES                            = 6
  2730  	FPE_FLTSUB                            = 8
  2731  	FPE_FLTUND                            = 5
  2732  	FPE_INTDIV                            = 1
  2733  	FPE_INTOVF                            = 2
  2734  	ILL_BADSTK                            = 8
  2735  	ILL_COPROC                            = 7
  2736  	ILL_ILLADR                            = 3
  2737  	ILL_ILLOPC                            = 1
  2738  	ILL_ILLOPN                            = 2
  2739  	ILL_ILLTRP                            = 4
  2740  	ILL_PRVOPC                            = 5
  2741  	ILL_PRVREG                            = 6
  2742  	MAX_PREPARED_STMTS                    = 100
  2743  	MINSIGSTKSZ                           = 12288
  2744  	NSIG                                  = 33
  2745  	NSIGBUS                               = 3
  2746  	NSIGCLD                               = 6
  2747  	NSIGEMT                               = 1
  2748  	NSIGFPE                               = 8
  2749  	NSIGILL                               = 8
  2750  	NSIGSEGV                              = 2
  2751  	NSIGTRAP                              = 2
  2752  	NUM_PREPARED_STMTS                    = 10
  2753  	SA_NOCLDSTOP                          = 0x0008
  2754  	SA_NOCLDWAIT                          = 0x0020
  2755  	SA_NODEFER                            = 0x0010
  2756  	SA_ONSTACK                            = 0x0001
  2757  	SA_RESETHAND                          = 0x0004
  2758  	SA_RESTART                            = 0x0002
  2759  	SA_SIGINFO                            = 0x0040
  2760  	SEGV_ACCERR                           = 2
  2761  	SEGV_MAPERR                           = 1
  2762  	SIGABRT                               = 6
  2763  	SIGALRM                               = 14
  2764  	SIGBUS                                = 10
  2765  	SIGCHLD                               = 20
  2766  	SIGCONT                               = 19
  2767  	SIGEMT                                = 7
  2768  	SIGFPE                                = 8
  2769  	SIGHUP                                = 1
  2770  	SIGILL                                = 4
  2771  	SIGINFO                               = 29
  2772  	SIGINT                                = 2
  2773  	SIGIO                                 = 23
  2774  	SIGIOT                                = 6
  2775  	SIGKILL                               = 9
  2776  	SIGPIPE                               = 13
  2777  	SIGPROF                               = 27
  2778  	SIGQUIT                               = 3
  2779  	SIGSEGV                               = 11
  2780  	SIGSTKSZ                              = 28672
  2781  	SIGSTOP                               = 17
  2782  	SIGSYS                                = 12
  2783  	SIGTERM                               = 15
  2784  	SIGTHR                                = 32
  2785  	SIGTRAP                               = 5
  2786  	SIGTSTP                               = 18
  2787  	SIGTTIN                               = 21
  2788  	SIGTTOU                               = 22
  2789  	SIGURG                                = 16
  2790  	SIGUSR1                               = 30
  2791  	SIGUSR2                               = 31
  2792  	SIGVTALRM                             = 26
  2793  	SIGWINCH                              = 28
  2794  	SIGXCPU                               = 24
  2795  	SIGXFSZ                               = 25
  2796  	SIG_BLOCK                             = 1
  2797  	SIG_SETMASK                           = 3
  2798  	SIG_UNBLOCK                           = 2
  2799  	SI_LWP                                = -1
  2800  	SI_MAXSZ                              = 128
  2801  	SI_NOINFO                             = 32767
  2802  	SI_QUEUE                              = -2
  2803  	SI_TIMER                              = -3
  2804  	SI_USER                               = 0
  2805  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2806  	SQLITE_TCL_NRE                        = 1
  2807  	SS_DISABLE                            = 0x0004
  2808  	SS_ONSTACK                            = 0x0001
  2809  	SV_INTERRUPT                          = 2
  2810  	SV_ONSTACK                            = 1
  2811  	SV_RESETHAND                          = 4
  2812  	TCLSH                                 = 1
  2813  	TRAP_BRKPT                            = 1
  2814  	TRAP_TRACE                            = 2
  2815  	X_MACHINE_SIGNAL_H_                   = 0
  2816  	X_NSIG                                = 33
  2817  	X_SYS_SIGINFO_H                       = 0
  2818  	X_SYS_SIGNAL_H_                       = 0
  2819  	X_USER_SIGNAL_H                       = 0
  2820  	CACHE_STALE                           = 0
  2821  	CURTYPE_BTREE                         = 0
  2822  	CURTYPE_PSEUDO                        = 3
  2823  	CURTYPE_SORTER                        = 1
  2824  	CURTYPE_VTAB                          = 2
  2825  	MEM_AffMask                           = 0x003f
  2826  	MEM_Agg                               = 0x8000
  2827  	MEM_Blob                              = 0x0010
  2828  	MEM_Cleared                           = 0x0100
  2829  	MEM_Dyn                               = 0x1000
  2830  	MEM_Ephem                             = 0x4000
  2831  	MEM_FromBind                          = 0x0040
  2832  	MEM_Int                               = 0x0004
  2833  	MEM_IntReal                           = 0x0020
  2834  	MEM_Null                              = 0x0001
  2835  	MEM_Real                              = 0x0008
  2836  	MEM_Static                            = 0x2000
  2837  	MEM_Str                               = 0x0002
  2838  	MEM_Subtype                           = 0x0800
  2839  	MEM_Term                              = 0x0200
  2840  	MEM_TypeMask                          = 0x0dbf
  2841  	MEM_Undefined                         = 0x0000
  2842  	MEM_Zero                              = 0x0400
  2843  	PRIO_MAX                              = 20
  2844  	PRIO_MIN                              = -20
  2845  	PRIO_PGRP                             = 1
  2846  	PRIO_PROCESS                          = 0
  2847  	PRIO_USER                             = 2
  2848  	RLIMIT_CORE                           = 4
  2849  	RLIMIT_CPU                            = 0
  2850  	RLIMIT_DATA                           = 2
  2851  	RLIMIT_FSIZE                          = 1
  2852  	RLIMIT_MEMLOCK                        = 6
  2853  	RLIMIT_NOFILE                         = 8
  2854  	RLIMIT_NPROC                          = 7
  2855  	RLIMIT_RSS                            = 5
  2856  	RLIMIT_STACK                          = 3
  2857  	RLIM_NLIMITS                          = 9
  2858  	RUSAGE_CHILDREN                       = -1
  2859  	RUSAGE_SELF                           = 0
  2860  	RUSAGE_THREAD                         = 1
  2861  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  2862  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  2863  	SQLITE_MAX_SCHEMA_RETRY               = 50
  2864  	SQLITE_VDBEINT_H                      = 0
  2865  	VDBE_DISPLAY_P4                       = 1
  2866  	VDBE_HALT_STATE                       = 3
  2867  	VDBE_INIT_STATE                       = 0
  2868  	VDBE_READY_STATE                      = 1
  2869  	VDBE_RUN_STATE                        = 2
  2870  	X_SYS_RESOURCE_H_                     = 0
  2871  	BTCF_AtLast                           = 0x08
  2872  	BTCF_Incrblob                         = 0x10
  2873  	BTCF_Multiple                         = 0x20
  2874  	BTCF_Pinned                           = 0x40
  2875  	BTCF_ValidNKey                        = 0x02
  2876  	BTCF_ValidOvfl                        = 0x04
  2877  	BTCF_WriteFlag                        = 0x01
  2878  	BTCURSOR_MAX_DEPTH                    = 20
  2879  	BTS_EXCLUSIVE                         = 0x0040
  2880  	BTS_FAST_SECURE                       = 0x000c
  2881  	BTS_INITIALLY_EMPTY                   = 0x0010
  2882  	BTS_NO_WAL                            = 0x0020
  2883  	BTS_OVERWRITE                         = 0x0008
  2884  	BTS_PAGESIZE_FIXED                    = 0x0002
  2885  	BTS_PENDING                           = 0x0080
  2886  	BTS_READ_ONLY                         = 0x0001
  2887  	BTS_SECURE_DELETE                     = 0x0004
  2888  	CURSOR_FAULT                          = 4
  2889  	CURSOR_INVALID                        = 1
  2890  	CURSOR_REQUIRESEEK                    = 3
  2891  	CURSOR_SKIPNEXT                       = 2
  2892  	CURSOR_VALID                          = 0
  2893  	PTF_INTKEY                            = 0x01
  2894  	PTF_LEAF                              = 0x08
  2895  	PTF_LEAFDATA                          = 0x04
  2896  	PTF_ZERODATA                          = 0x02
  2897  	PTRMAP_BTREE                          = 5
  2898  	PTRMAP_FREEPAGE                       = 2
  2899  	PTRMAP_OVERFLOW1                      = 3
  2900  	PTRMAP_OVERFLOW2                      = 4
  2901  	PTRMAP_ROOTPAGE                       = 1
  2902  	READ_LOCK                             = 1
  2903  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  2904  	TRANS_NONE                            = 0
  2905  	TRANS_READ                            = 1
  2906  	TRANS_WRITE                           = 2
  2907  	WRITE_LOCK                            = 2
  2908  	ARG_MAX                               = 524288
  2909  	BC_BASE_MAX                           = 2147483647
  2910  	BC_DIM_MAX                            = 65535
  2911  	BC_SCALE_MAX                          = 2147483647
  2912  	BC_STRING_MAX                         = 2147483647
  2913  	CHAR_BIT                              = 8
  2914  	CHAR_MAX                              = 0xff
  2915  	CHAR_MIN                              = 0
  2916  	CHILD_MAX                             = 80
  2917  	COLL_WEIGHTS_MAX                      = 2
  2918  	EXPR_NEST_MAX                         = 32
  2919  	GID_MAX                               = 4294967295
  2920  	HOST_NAME_MAX                         = 255
  2921  	INT_MAX                               = 0x7fffffff
  2922  	INT_MIN                               = -2147483648
  2923  	IOV_MAX                               = 1024
  2924  	LINE_MAX                              = 2048
  2925  	LINK_MAX                              = 32767
  2926  	LLONG_MAX                             = 0x7fffffffffffffff
  2927  	LLONG_MIN                             = -9223372036854775808
  2928  	LOGIN_NAME_MAX                        = 32
  2929  	LONG_BIT                              = 64
  2930  	LONG_MAX                              = 0x7fffffffffffffff
  2931  	LONG_MIN                              = -9223372036854775808
  2932  	MAX_CANON                             = 255
  2933  	MAX_INPUT                             = 255
  2934  	MB_LEN_MAX                            = 4
  2935  	NAME_MAX                              = 255
  2936  	NGROUPS_MAX                           = 16
  2937  	NL_ARGMAX                             = 9
  2938  	NL_LANGMAX                            = 14
  2939  	NL_MSGMAX                             = 32767
  2940  	NL_SETMAX                             = 255
  2941  	NL_TEXTMAX                            = 255
  2942  	NZERO                                 = 20
  2943  	N_THREAD                              = 26
  2944  	OPEN_MAX                              = 64
  2945  	PATH_MAX                              = 1024
  2946  	PIPE_BUF                              = 512
  2947  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  2948  	PTHREAD_CANCEL_ASYNCHRONOUS           = 2
  2949  	PTHREAD_CANCEL_DEFERRED               = 0
  2950  	PTHREAD_CANCEL_DISABLE                = 1
  2951  	PTHREAD_CANCEL_ENABLE                 = 0
  2952  	PTHREAD_CREATE_DETACHED               = 1
  2953  	PTHREAD_CREATE_JOINABLE               = 0
  2954  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  2955  	PTHREAD_DETACHED                      = 0x1
  2956  	PTHREAD_DONE_INIT                     = 1
  2957  	PTHREAD_EXPLICIT_SCHED                = 0
  2958  	PTHREAD_INHERIT_SCHED                 = 0x4
  2959  	PTHREAD_KEYS_MAX                      = 256
  2960  	PTHREAD_NEEDS_INIT                    = 0
  2961  	PTHREAD_NOFLOAT                       = 0x8
  2962  	PTHREAD_PRIO_INHERIT                  = 1
  2963  	PTHREAD_PRIO_NONE                     = 0
  2964  	PTHREAD_PRIO_PROTECT                  = 2
  2965  	PTHREAD_PROCESS_PRIVATE               = 0
  2966  	PTHREAD_PROCESS_SHARED                = 1
  2967  	PTHREAD_SCOPE_PROCESS                 = 0
  2968  	PTHREAD_SCOPE_SYSTEM                  = 0x2
  2969  	PTHREAD_STACK_MIN                     = 4096
  2970  	PTHREAD_THREADS_MAX                   = 18446744073709551615
  2971  	QUAD_MAX                              = 0x7fffffffffffffff
  2972  	QUAD_MIN                              = -9223372036854775808
  2973  	RE_DUP_MAX                            = 255
  2974  	SCHAR_MAX                             = 0x7f
  2975  	SCHAR_MIN                             = -128
  2976  	SCHED_FIFO                            = 1
  2977  	SCHED_OTHER                           = 2
  2978  	SCHED_RR                              = 3
  2979  	SEM_VALUE_MAX                         = 4294967295
  2980  	SHRT_MAX                              = 0x7fff
  2981  	SHRT_MIN                              = -32768
  2982  	SIZE_T_MAX                            = 18446744073709551615
  2983  	SSIZE_MAX                             = 9223372036854775807
  2984  	SYMLINK_MAX                           = 1024
  2985  	SYMLOOP_MAX                           = 32
  2986  	TTY_NAME_MAX                          = 260
  2987  	UCHAR_MAX                             = 0xff
  2988  	UID_MAX                               = 4294967295
  2989  	UINT_MAX                              = 0xffffffff
  2990  	ULLONG_MAX                            = 0xffffffffffffffff
  2991  	ULONG_MAX                             = 0xffffffffffffffff
  2992  	UQUAD_MAX                             = 0xffffffffffffffff
  2993  	USHRT_MAX                             = 0xffff
  2994  	WORD_BIT                              = 32
  2995  	X_LIMITS_H_                           = 0
  2996  	X_MACHINE_LIMITS_H_                   = 0
  2997  	X_MAXCOMLEN                           = 24
  2998  	X_POSIX2_BC_BASE_MAX                  = 99
  2999  	X_POSIX2_BC_DIM_MAX                   = 2048
  3000  	X_POSIX2_BC_SCALE_MAX                 = 99
  3001  	X_POSIX2_BC_STRING_MAX                = 1000
  3002  	X_POSIX2_CHARCLASS_NAME_MAX           = 14
  3003  	X_POSIX2_COLL_WEIGHTS_MAX             = 2
  3004  	X_POSIX2_EXPR_NEST_MAX                = 32
  3005  	X_POSIX2_LINE_MAX                     = 2048
  3006  	X_POSIX2_RE_DUP_MAX                   = 255
  3007  	X_POSIX_ARG_MAX                       = 4096
  3008  	X_POSIX_CHILD_MAX                     = 25
  3009  	X_POSIX_CLOCKRES_MIN                  = 20000000
  3010  	X_POSIX_HOST_NAME_MAX                 = 255
  3011  	X_POSIX_LINK_MAX                      = 8
  3012  	X_POSIX_LOGIN_NAME_MAX                = 9
  3013  	X_POSIX_MAX_CANON                     = 255
  3014  	X_POSIX_MAX_INPUT                     = 255
  3015  	X_POSIX_NAME_MAX                      = 14
  3016  	X_POSIX_NGROUPS_MAX                   = 8
  3017  	X_POSIX_OPEN_MAX                      = 20
  3018  	X_POSIX_PATH_MAX                      = 256
  3019  	X_POSIX_PIPE_BUF                      = 512
  3020  	X_POSIX_RE_DUP_MAX                    = 255
  3021  	X_POSIX_SEM_NSEMS_MAX                 = 256
  3022  	X_POSIX_SEM_VALUE_MAX                 = 32767
  3023  	X_POSIX_SSIZE_MAX                     = 32767
  3024  	X_POSIX_STREAM_MAX                    = 8
  3025  	X_POSIX_SYMLINK_MAX                   = 255
  3026  	X_POSIX_SYMLOOP_MAX                   = 8
  3027  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS  = 4
  3028  	X_POSIX_THREAD_KEYS_MAX               = 128
  3029  	X_POSIX_THREAD_THREADS_MAX            = 4
  3030  	X_POSIX_TTY_NAME_MAX                  = 9
  3031  	X_POSIX_TZNAME_MAX                    = 6
  3032  	X_PTHREAD_H_                          = 0
  3033  	X_SCHED_H_                            = 0
  3034  	X_SYS_LIMITS_H_                       = 0
  3035  	X_XOPEN_IOV_MAX                       = 16
  3036  	X_XOPEN_NAME_MAX                      = 255
  3037  	X_XOPEN_PATH_MAX                      = 1024
  3038  	TCL_THREADS                           = 0
  3039  	MX_CHUNK_NUMBER                       = 299
  3040  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  3041  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  3042  	DEVSYM_MAX_PATHNAME                   = 512
  3043  	DEVSYM_VFS_NAME                       = "devsym"
  3044  	WRITECRASH_NAME                       = "writecrash"
  3045  	SQLITE_INTARRAY_H                     = 0
  3046  	JT_MAX_PATHNAME                       = 512
  3047  	JT_VFS_NAME                           = "jt"
  3048  	MALLOC_LOG_FRAMES                     = 10
  3049  	DEFAULT_SECTOR_SIZE                   = 0x1000
  3050  	MAX_PAGE_SIZE                         = 0x10000
  3051  	MULTIPLEX_CTRL_ENABLE                 = 214014
  3052  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  3053  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  3054  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  3055  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  3056  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  3057  	SQLITE_TEST_MULTIPLEX_H               = 0
  3058  	MAX_MUTEXES                           = 14
  3059  	STATIC_MUTEXES                        = 12
  3060  	BLOBSIZE                              = 10485760
  3061  	BLOCKSIZE                             = 512
  3062  	DATABASE_FILE                         = 1
  3063  	FS_VFS_NAME                           = "fs"
  3064  	JOURNAL_FILE                          = 2
  3065  	INST_MAX_PATHNAME                     = 512
  3066  	OS_ACCESS                             = 1
  3067  	OS_ANNOTATE                           = 28
  3068  	OS_CHECKRESERVEDLOCK                  = 2
  3069  	OS_CLOSE                              = 3
  3070  	OS_CURRENTTIME                        = 4
  3071  	OS_DELETE                             = 5
  3072  	OS_DEVCHAR                            = 6
  3073  	OS_FILECONTROL                        = 7
  3074  	OS_FILESIZE                           = 8
  3075  	OS_FULLPATHNAME                       = 9
  3076  	OS_LOCK                               = 11
  3077  	OS_NUMEVENTS                          = 29
  3078  	OS_OPEN                               = 12
  3079  	OS_RANDOMNESS                         = 13
  3080  	OS_READ                               = 14
  3081  	OS_SECTORSIZE                         = 15
  3082  	OS_SHMBARRIER                         = 26
  3083  	OS_SHMLOCK                            = 25
  3084  	OS_SHMMAP                             = 23
  3085  	OS_SHMUNMAP                           = 22
  3086  	OS_SLEEP                              = 16
  3087  	OS_SYNC                               = 17
  3088  	OS_TRUNCATE                           = 18
  3089  	OS_UNLOCK                             = 19
  3090  	OS_WRITE                              = 20
  3091  	VFSLOG_BUFFERSIZE                     = 8192
  3092  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3093  	TESTPCACHE_NPAGE                      = 217
  3094  	TESTPCACHE_RESERVE                    = 17
  3095  	TESTPCACHE_VALID                      = 0x364585fd
  3096  	MSG_Close                             = 6
  3097  	MSG_Done                              = 7
  3098  	MSG_Finalize                          = 5
  3099  	MSG_Open                              = 1
  3100  	MSG_Prepare                           = 2
  3101  	MSG_Reset                             = 4
  3102  	MSG_Step                              = 3
  3103  	MADV_DONTNEED                         = 4
  3104  	MADV_FREE                             = 6
  3105  	MADV_NORMAL                           = 0
  3106  	MADV_RANDOM                           = 1
  3107  	MADV_SEQUENTIAL                       = 2
  3108  	MADV_SPACEAVAIL                       = 5
  3109  	MADV_WILLNEED                         = 3
  3110  	MAP_ANON                              = 0x1000
  3111  	MAP_ANONYMOUS                         = 4096
  3112  	MAP_CONCEAL                           = 0x8000
  3113  	MAP_COPY                              = 2
  3114  	MAP_FILE                              = 0
  3115  	MAP_FIXED                             = 0x0010
  3116  	MAP_FLAGMASK                          = 0xfff7
  3117  	MAP_HASSEMAPHORE                      = 0
  3118  	MAP_INHERIT                           = 0
  3119  	MAP_INHERIT_COPY                      = 1
  3120  	MAP_INHERIT_NONE                      = 2
  3121  	MAP_INHERIT_SHARE                     = 0
  3122  	MAP_INHERIT_ZERO                      = 3
  3123  	MAP_NOEXTEND                          = 0
  3124  	MAP_NORESERVE                         = 0
  3125  	MAP_PRIVATE                           = 0x0002
  3126  	MAP_RENAME                            = 0
  3127  	MAP_SHARED                            = 0x0001
  3128  	MAP_STACK                             = 0x4000
  3129  	MAP_TRYFIXED                          = 0
  3130  	MCL_CURRENT                           = 0x01
  3131  	MCL_FUTURE                            = 0x02
  3132  	MS_ASYNC                              = 0x01
  3133  	MS_INVALIDATE                         = 0x04
  3134  	MS_SYNC                               = 0x02
  3135  	POSIX_MADV_DONTNEED                   = 4
  3136  	POSIX_MADV_NORMAL                     = 0
  3137  	POSIX_MADV_RANDOM                     = 1
  3138  	POSIX_MADV_SEQUENTIAL                 = 2
  3139  	POSIX_MADV_WILLNEED                   = 3
  3140  	PROT_EXEC                             = 0x04
  3141  	PROT_NONE                             = 0x00
  3142  	PROT_READ                             = 0x01
  3143  	PROT_WRITE                            = 0x02
  3144  	TCLVAR_NAME_EQ                        = 101
  3145  	TCLVAR_NAME_MATCH                     = 109
  3146  	TCLVAR_VALUE_GLOB                     = 103
  3147  	TCLVAR_VALUE_LIKE                     = 108
  3148  	TCLVAR_VALUE_REGEXP                   = 114
  3149  	FAULT_INJECT_NONE                     = 0
  3150  	FAULT_INJECT_PERSISTENT               = 2
  3151  	FAULT_INJECT_TRANSIENT                = 1
  3152  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3153  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3154  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3155  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3156  	TESTVFS_DELETE_MASK                   = 0x00000400
  3157  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3158  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3159  	TESTVFS_LOCK_MASK                     = 0x00040000
  3160  	TESTVFS_MAX_ARGS                      = 12
  3161  	TESTVFS_MAX_PAGES                     = 1024
  3162  	TESTVFS_OPEN_MASK                     = 0x00000100
  3163  	TESTVFS_READ_MASK                     = 0x00010000
  3164  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3165  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3166  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3167  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3168  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3169  	TESTVFS_SYNC_MASK                     = 0x00000200
  3170  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3171  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3172  	TESTVFS_WRITE_MASK                    = 0x00001000
  3173  )
  3174  
  3175  const (
  3176  	PTHREAD_MUTEX_ERRORCHECK = 1
  3177  	PTHREAD_MUTEX_RECURSIVE  = 2
  3178  	PTHREAD_MUTEX_NORMAL     = 3
  3179  	PTHREAD_MUTEX_STRICT_NP  = 4
  3180  	PTHREAD_MUTEX_TYPE_MAX   = 5
  3181  )
  3182  
  3183  const (
  3184  	TCL_QUEUE_TAIL = 0
  3185  	TCL_QUEUE_HEAD = 1
  3186  	TCL_QUEUE_MARK = 2
  3187  )
  3188  
  3189  const (
  3190  	TCL_PATH_ABSOLUTE        = 0
  3191  	TCL_PATH_RELATIVE        = 1
  3192  	TCL_PATH_VOLUME_RELATIVE = 2
  3193  )
  3194  
  3195  const (
  3196  	TCL_INT      = 0
  3197  	TCL_DOUBLE   = 1
  3198  	TCL_EITHER   = 2
  3199  	TCL_WIDE_INT = 3
  3200  )
  3201  
  3202  type ptrdiff_t = int64
  3203  
  3204  type size_t = uint64
  3205  
  3206  type wchar_t = int32
  3207  
  3208  type va_list = uintptr
  3209  
  3210  type sqlite32 = struct {
  3211  	FpVfs                   uintptr
  3212  	FpVdbe                  uintptr
  3213  	FpDfltColl              uintptr
  3214  	Fmutex                  uintptr
  3215  	FaDb                    uintptr
  3216  	FnDb                    int32
  3217  	FmDbFlags               u32
  3218  	Fflags                  u64
  3219  	FlastRowid              i64
  3220  	FszMmap                 i64
  3221  	FnSchemaLock            u32
  3222  	FopenFlags              uint32
  3223  	FerrCode                int32
  3224  	FerrByteOffset          int32
  3225  	FerrMask                int32
  3226  	FiSysErrno              int32
  3227  	FdbOptFlags             u32
  3228  	Fenc                    u8
  3229  	FautoCommit             u8
  3230  	Ftemp_store             u8
  3231  	FmallocFailed           u8
  3232  	FbBenignMalloc          u8
  3233  	FdfltLockMode           u8
  3234  	FnextAutovac            int8
  3235  	FsuppressErr            u8
  3236  	FvtabOnConflict         u8
  3237  	FisTransactionSavepoint u8
  3238  	FmTrace                 u8
  3239  	FnoSharedCache          u8
  3240  	FnSqlExec               u8
  3241  	FeOpenState             u8
  3242  	F__ccgo_pad1            [2]byte
  3243  	FnextPagesize           int32
  3244  	FnChange                i64
  3245  	FnTotalChange           i64
  3246  	FaLimit                 [12]int32
  3247  	FnMaxSorterMmap         int32
  3248  	F__ccgo_pad2            [4]byte
  3249  	Finit                   struct {
  3250  		FnewTnum       Pgno
  3251  		FiDb           u8
  3252  		Fbusy          u8
  3253  		F__ccgo_pad1   [2]byte
  3254  		ForphanTrigger uint8
  3255  		F__ccgo_pad2   [7]byte
  3256  		FazInit        uintptr
  3257  	}
  3258  	FnVdbeActive        int32
  3259  	FnVdbeRead          int32
  3260  	FnVdbeWrite         int32
  3261  	FnVdbeExec          int32
  3262  	FnVDestroy          int32
  3263  	FnExtension         int32
  3264  	FaExtension         uintptr
  3265  	Ftrace              struct{ FxLegacy uintptr }
  3266  	FpTraceArg          uintptr
  3267  	FxProfile           uintptr
  3268  	FpProfileArg        uintptr
  3269  	FpCommitArg         uintptr
  3270  	FxCommitCallback    uintptr
  3271  	FpRollbackArg       uintptr
  3272  	FxRollbackCallback  uintptr
  3273  	FpUpdateArg         uintptr
  3274  	FxUpdateCallback    uintptr
  3275  	FpAutovacPagesArg   uintptr
  3276  	FxAutovacDestr      uintptr
  3277  	FxAutovacPages      uintptr
  3278  	FpParse             uintptr
  3279  	FpPreUpdateArg      uintptr
  3280  	FxPreUpdateCallback uintptr
  3281  	FpPreUpdate         uintptr
  3282  	FxWalCallback       uintptr
  3283  	FpWalArg            uintptr
  3284  	FxCollNeeded        uintptr
  3285  	FxCollNeeded16      uintptr
  3286  	FpCollNeededArg     uintptr
  3287  	FpErr               uintptr
  3288  	Fu1                 struct {
  3289  		F__ccgo_pad1   [0]uint64
  3290  		FisInterrupted int32
  3291  		F__ccgo_pad2   [4]byte
  3292  	}
  3293  	Flookaside           Lookaside
  3294  	FxAuth               sqlite3_xauth
  3295  	FpAuthArg            uintptr
  3296  	FxProgress           uintptr
  3297  	FpProgressArg        uintptr
  3298  	FnProgressOps        uint32
  3299  	FnVTrans             int32
  3300  	FaModule             Hash
  3301  	FpVtabCtx            uintptr
  3302  	FaVTrans             uintptr
  3303  	FpDisconnect         uintptr
  3304  	FaFunc               Hash
  3305  	FaCollSeq            Hash
  3306  	FbusyHandler         BusyHandler
  3307  	FaDbStatic           [2]Db
  3308  	FpSavepoint          uintptr
  3309  	FnAnalysisLimit      int32
  3310  	FbusyTimeout         int32
  3311  	FnSavepoint          int32
  3312  	FnStatement          int32
  3313  	FnDeferredCons       i64
  3314  	FnDeferredImmCons    i64
  3315  	FpnBytesFreed        uintptr
  3316  	FpBlockingConnection uintptr
  3317  	FpUnlockConnection   uintptr
  3318  	FpUnlockArg          uintptr
  3319  	FxUnlockNotify       uintptr
  3320  	FpNextBlocked        uintptr
  3321  }
  3322  
  3323  type sqlite_int64 = int64
  3324  type sqlite_uint64 = uint64
  3325  type sqlite3_int64 = sqlite_int64
  3326  type sqlite3_uint64 = sqlite_uint64
  3327  
  3328  type sqlite3_callback = uintptr
  3329  
  3330  type sqlite3_file1 = struct{ FpMethods uintptr }
  3331  
  3332  type sqlite3_file = sqlite3_file1
  3333  type sqlite3_io_methods1 = struct {
  3334  	FiVersion               int32
  3335  	F__ccgo_pad1            [4]byte
  3336  	FxClose                 uintptr
  3337  	FxRead                  uintptr
  3338  	FxWrite                 uintptr
  3339  	FxTruncate              uintptr
  3340  	FxSync                  uintptr
  3341  	FxFileSize              uintptr
  3342  	FxLock                  uintptr
  3343  	FxUnlock                uintptr
  3344  	FxCheckReservedLock     uintptr
  3345  	FxFileControl           uintptr
  3346  	FxSectorSize            uintptr
  3347  	FxDeviceCharacteristics uintptr
  3348  	FxShmMap                uintptr
  3349  	FxShmLock               uintptr
  3350  	FxShmBarrier            uintptr
  3351  	FxShmUnmap              uintptr
  3352  	FxFetch                 uintptr
  3353  	FxUnfetch               uintptr
  3354  }
  3355  
  3356  type sqlite3_io_methods = sqlite3_io_methods1
  3357  
  3358  type sqlite3_mutex1 = struct {
  3359  	FpReal       uintptr
  3360  	FeType       int32
  3361  	F__ccgo_pad1 [4]byte
  3362  }
  3363  
  3364  type sqlite3_api_routines1 = struct {
  3365  	Faggregate_context      uintptr
  3366  	Faggregate_count        uintptr
  3367  	Fbind_blob              uintptr
  3368  	Fbind_double            uintptr
  3369  	Fbind_int               uintptr
  3370  	Fbind_int64             uintptr
  3371  	Fbind_null              uintptr
  3372  	Fbind_parameter_count   uintptr
  3373  	Fbind_parameter_index   uintptr
  3374  	Fbind_parameter_name    uintptr
  3375  	Fbind_text              uintptr
  3376  	Fbind_text16            uintptr
  3377  	Fbind_value             uintptr
  3378  	Fbusy_handler           uintptr
  3379  	Fbusy_timeout           uintptr
  3380  	Fchanges                uintptr
  3381  	Fclose                  uintptr
  3382  	Fcollation_needed       uintptr
  3383  	Fcollation_needed16     uintptr
  3384  	Fcolumn_blob            uintptr
  3385  	Fcolumn_bytes           uintptr
  3386  	Fcolumn_bytes16         uintptr
  3387  	Fcolumn_count           uintptr
  3388  	Fcolumn_database_name   uintptr
  3389  	Fcolumn_database_name16 uintptr
  3390  	Fcolumn_decltype        uintptr
  3391  	Fcolumn_decltype16      uintptr
  3392  	Fcolumn_double          uintptr
  3393  	Fcolumn_int             uintptr
  3394  	Fcolumn_int64           uintptr
  3395  	Fcolumn_name            uintptr
  3396  	Fcolumn_name16          uintptr
  3397  	Fcolumn_origin_name     uintptr
  3398  	Fcolumn_origin_name16   uintptr
  3399  	Fcolumn_table_name      uintptr
  3400  	Fcolumn_table_name16    uintptr
  3401  	Fcolumn_text            uintptr
  3402  	Fcolumn_text16          uintptr
  3403  	Fcolumn_type            uintptr
  3404  	Fcolumn_value           uintptr
  3405  	Fcommit_hook            uintptr
  3406  	Fcomplete               uintptr
  3407  	Fcomplete16             uintptr
  3408  	Fcreate_collation       uintptr
  3409  	Fcreate_collation16     uintptr
  3410  	Fcreate_function        uintptr
  3411  	Fcreate_function16      uintptr
  3412  	Fcreate_module          uintptr
  3413  	Fdata_count             uintptr
  3414  	Fdb_handle              uintptr
  3415  	Fdeclare_vtab           uintptr
  3416  	Fenable_shared_cache    uintptr
  3417  	Ferrcode                uintptr
  3418  	Ferrmsg                 uintptr
  3419  	Ferrmsg16               uintptr
  3420  	Fexec                   uintptr
  3421  	Fexpired                uintptr
  3422  	Ffinalize               uintptr
  3423  	Ffree                   uintptr
  3424  	Ffree_table             uintptr
  3425  	Fget_autocommit         uintptr
  3426  	Fget_auxdata            uintptr
  3427  	Fget_table              uintptr
  3428  	Fglobal_recover         uintptr
  3429  	Finterruptx             uintptr
  3430  	Flast_insert_rowid      uintptr
  3431  	Flibversion             uintptr
  3432  	Flibversion_number      uintptr
  3433  	Fmalloc                 uintptr
  3434  	Fmprintf                uintptr
  3435  	Fopen                   uintptr
  3436  	Fopen16                 uintptr
  3437  	Fprepare                uintptr
  3438  	Fprepare16              uintptr
  3439  	Fprofile                uintptr
  3440  	Fprogress_handler       uintptr
  3441  	Frealloc                uintptr
  3442  	Freset                  uintptr
  3443  	Fresult_blob            uintptr
  3444  	Fresult_double          uintptr
  3445  	Fresult_error           uintptr
  3446  	Fresult_error16         uintptr
  3447  	Fresult_int             uintptr
  3448  	Fresult_int64           uintptr
  3449  	Fresult_null            uintptr
  3450  	Fresult_text            uintptr
  3451  	Fresult_text16          uintptr
  3452  	Fresult_text16be        uintptr
  3453  	Fresult_text16le        uintptr
  3454  	Fresult_value           uintptr
  3455  	Frollback_hook          uintptr
  3456  	Fset_authorizer         uintptr
  3457  	Fset_auxdata            uintptr
  3458  	Fxsnprintf              uintptr
  3459  	Fstep                   uintptr
  3460  	Ftable_column_metadata  uintptr
  3461  	Fthread_cleanup         uintptr
  3462  	Ftotal_changes          uintptr
  3463  	Ftrace                  uintptr
  3464  	Ftransfer_bindings      uintptr
  3465  	Fupdate_hook            uintptr
  3466  	Fuser_data              uintptr
  3467  	Fvalue_blob             uintptr
  3468  	Fvalue_bytes            uintptr
  3469  	Fvalue_bytes16          uintptr
  3470  	Fvalue_double           uintptr
  3471  	Fvalue_int              uintptr
  3472  	Fvalue_int64            uintptr
  3473  	Fvalue_numeric_type     uintptr
  3474  	Fvalue_text             uintptr
  3475  	Fvalue_text16           uintptr
  3476  	Fvalue_text16be         uintptr
  3477  	Fvalue_text16le         uintptr
  3478  	Fvalue_type             uintptr
  3479  	Fvmprintf               uintptr
  3480  	Foverload_function      uintptr
  3481  	Fprepare_v2             uintptr
  3482  	Fprepare16_v2           uintptr
  3483  	Fclear_bindings         uintptr
  3484  	Fcreate_module_v2       uintptr
  3485  	Fbind_zeroblob          uintptr
  3486  	Fblob_bytes             uintptr
  3487  	Fblob_close             uintptr
  3488  	Fblob_open              uintptr
  3489  	Fblob_read              uintptr
  3490  	Fblob_write             uintptr
  3491  	Fcreate_collation_v2    uintptr
  3492  	Ffile_control           uintptr
  3493  	Fmemory_highwater       uintptr
  3494  	Fmemory_used            uintptr
  3495  	Fmutex_alloc            uintptr
  3496  	Fmutex_enter            uintptr
  3497  	Fmutex_free             uintptr
  3498  	Fmutex_leave            uintptr
  3499  	Fmutex_try              uintptr
  3500  	Fopen_v2                uintptr
  3501  	Frelease_memory         uintptr
  3502  	Fresult_error_nomem     uintptr
  3503  	Fresult_error_toobig    uintptr
  3504  	Fsleep                  uintptr
  3505  	Fsoft_heap_limit        uintptr
  3506  	Fvfs_find               uintptr
  3507  	Fvfs_register           uintptr
  3508  	Fvfs_unregister         uintptr
  3509  	Fxthreadsafe            uintptr
  3510  	Fresult_zeroblob        uintptr
  3511  	Fresult_error_code      uintptr
  3512  	Ftest_control           uintptr
  3513  	Frandomness             uintptr
  3514  	Fcontext_db_handle      uintptr
  3515  	Fextended_result_codes  uintptr
  3516  	Flimit                  uintptr
  3517  	Fnext_stmt              uintptr
  3518  	Fsql                    uintptr
  3519  	Fstatus                 uintptr
  3520  	Fbackup_finish          uintptr
  3521  	Fbackup_init            uintptr
  3522  	Fbackup_pagecount       uintptr
  3523  	Fbackup_remaining       uintptr
  3524  	Fbackup_step            uintptr
  3525  	Fcompileoption_get      uintptr
  3526  	Fcompileoption_used     uintptr
  3527  	Fcreate_function_v2     uintptr
  3528  	Fdb_config              uintptr
  3529  	Fdb_mutex               uintptr
  3530  	Fdb_status              uintptr
  3531  	Fextended_errcode       uintptr
  3532  	Flog                    uintptr
  3533  	Fsoft_heap_limit64      uintptr
  3534  	Fsourceid               uintptr
  3535  	Fstmt_status            uintptr
  3536  	Fstrnicmp               uintptr
  3537  	Funlock_notify          uintptr
  3538  	Fwal_autocheckpoint     uintptr
  3539  	Fwal_checkpoint         uintptr
  3540  	Fwal_hook               uintptr
  3541  	Fblob_reopen            uintptr
  3542  	Fvtab_config            uintptr
  3543  	Fvtab_on_conflict       uintptr
  3544  	Fclose_v2               uintptr
  3545  	Fdb_filename            uintptr
  3546  	Fdb_readonly            uintptr
  3547  	Fdb_release_memory      uintptr
  3548  	Ferrstr                 uintptr
  3549  	Fstmt_busy              uintptr
  3550  	Fstmt_readonly          uintptr
  3551  	Fstricmp                uintptr
  3552  	Furi_boolean            uintptr
  3553  	Furi_int64              uintptr
  3554  	Furi_parameter          uintptr
  3555  	Fxvsnprintf             uintptr
  3556  	Fwal_checkpoint_v2      uintptr
  3557  	Fauto_extension         uintptr
  3558  	Fbind_blob64            uintptr
  3559  	Fbind_text64            uintptr
  3560  	Fcancel_auto_extension  uintptr
  3561  	Fload_extension         uintptr
  3562  	Fmalloc64               uintptr
  3563  	Fmsize                  uintptr
  3564  	Frealloc64              uintptr
  3565  	Freset_auto_extension   uintptr
  3566  	Fresult_blob64          uintptr
  3567  	Fresult_text64          uintptr
  3568  	Fstrglob                uintptr
  3569  	Fvalue_dup              uintptr
  3570  	Fvalue_free             uintptr
  3571  	Fresult_zeroblob64      uintptr
  3572  	Fbind_zeroblob64        uintptr
  3573  	Fvalue_subtype          uintptr
  3574  	Fresult_subtype         uintptr
  3575  	Fstatus64               uintptr
  3576  	Fstrlike                uintptr
  3577  	Fdb_cacheflush          uintptr
  3578  	Fsystem_errno           uintptr
  3579  	Ftrace_v2               uintptr
  3580  	Fexpanded_sql           uintptr
  3581  	Fset_last_insert_rowid  uintptr
  3582  	Fprepare_v3             uintptr
  3583  	Fprepare16_v3           uintptr
  3584  	Fbind_pointer           uintptr
  3585  	Fresult_pointer         uintptr
  3586  	Fvalue_pointer          uintptr
  3587  	Fvtab_nochange          uintptr
  3588  	Fvalue_nochange         uintptr
  3589  	Fvtab_collation         uintptr
  3590  	Fkeyword_count          uintptr
  3591  	Fkeyword_name           uintptr
  3592  	Fkeyword_check          uintptr
  3593  	Fstr_new                uintptr
  3594  	Fstr_finish             uintptr
  3595  	Fstr_appendf            uintptr
  3596  	Fstr_vappendf           uintptr
  3597  	Fstr_append             uintptr
  3598  	Fstr_appendall          uintptr
  3599  	Fstr_appendchar         uintptr
  3600  	Fstr_reset              uintptr
  3601  	Fstr_errcode            uintptr
  3602  	Fstr_length             uintptr
  3603  	Fstr_value              uintptr
  3604  	Fcreate_window_function uintptr
  3605  	Fnormalized_sql         uintptr
  3606  	Fstmt_isexplain         uintptr
  3607  	Fvalue_frombind         uintptr
  3608  	Fdrop_modules           uintptr
  3609  	Fhard_heap_limit64      uintptr
  3610  	Furi_key                uintptr
  3611  	Ffilename_database      uintptr
  3612  	Ffilename_journal       uintptr
  3613  	Ffilename_wal           uintptr
  3614  	Fcreate_filename        uintptr
  3615  	Ffree_filename          uintptr
  3616  	Fdatabase_file_object   uintptr
  3617  	Ftxn_state              uintptr
  3618  	Fchanges64              uintptr
  3619  	Ftotal_changes64        uintptr
  3620  	Fautovacuum_pages       uintptr
  3621  	Ferror_offset           uintptr
  3622  	Fvtab_rhs_value         uintptr
  3623  	Fvtab_distinct          uintptr
  3624  	Fvtab_in                uintptr
  3625  	Fvtab_in_first          uintptr
  3626  	Fvtab_in_next           uintptr
  3627  	Fdeserialize            uintptr
  3628  	Fserialize              uintptr
  3629  	Fdb_name                uintptr
  3630  }
  3631  
  3632  type sqlite3_vfs1 = struct {
  3633  	FiVersion          int32
  3634  	FszOsFile          int32
  3635  	FmxPathname        int32
  3636  	F__ccgo_pad1       [4]byte
  3637  	FpNext             uintptr
  3638  	FzName             uintptr
  3639  	FpAppData          uintptr
  3640  	FxOpen             uintptr
  3641  	FxDelete           uintptr
  3642  	FxAccess           uintptr
  3643  	FxFullPathname     uintptr
  3644  	FxDlOpen           uintptr
  3645  	FxDlError          uintptr
  3646  	FxDlSym            uintptr
  3647  	FxDlClose          uintptr
  3648  	FxRandomness       uintptr
  3649  	FxSleep            uintptr
  3650  	FxCurrentTime      uintptr
  3651  	FxGetLastError     uintptr
  3652  	FxCurrentTimeInt64 uintptr
  3653  	FxSetSystemCall    uintptr
  3654  	FxGetSystemCall    uintptr
  3655  	FxNextSystemCall   uintptr
  3656  }
  3657  
  3658  type sqlite3_vfs = sqlite3_vfs1
  3659  type sqlite3_syscall_ptr = uintptr
  3660  
  3661  type sqlite3_mem_methods1 = struct {
  3662  	FxMalloc   uintptr
  3663  	FxFree     uintptr
  3664  	FxRealloc  uintptr
  3665  	FxSize     uintptr
  3666  	FxRoundup  uintptr
  3667  	FxInit     uintptr
  3668  	FxShutdown uintptr
  3669  	FpAppData  uintptr
  3670  }
  3671  
  3672  type sqlite3_mem_methods = sqlite3_mem_methods1
  3673  
  3674  type sqlite3_value1 = struct {
  3675  	Fu        struct{ Fr float64 }
  3676  	Fz        uintptr
  3677  	Fn        int32
  3678  	Fflags    u16
  3679  	Fenc      u8
  3680  	FeSubtype u8
  3681  	Fdb       uintptr
  3682  	FszMalloc int32
  3683  	FuTemp    u32
  3684  	FzMalloc  uintptr
  3685  	FxDel     uintptr
  3686  }
  3687  
  3688  type sqlite3_context1 = struct {
  3689  	FpOut        uintptr
  3690  	FpFunc       uintptr
  3691  	FpMem        uintptr
  3692  	FpVdbe       uintptr
  3693  	FiOp         int32
  3694  	FisError     int32
  3695  	Fenc         u8
  3696  	FskipFlag    u8
  3697  	Fargc        u8
  3698  	F__ccgo_pad1 [5]byte
  3699  	Fargv        [1]uintptr
  3700  }
  3701  
  3702  type sqlite3_destructor_type = uintptr
  3703  
  3704  type sqlite3_vtab1 = struct {
  3705  	FpModule     uintptr
  3706  	FnRef        int32
  3707  	F__ccgo_pad1 [4]byte
  3708  	FzErrMsg     uintptr
  3709  }
  3710  
  3711  type sqlite3_vtab = sqlite3_vtab1
  3712  type sqlite3_index_info1 = struct {
  3713  	FnConstraint      int32
  3714  	F__ccgo_pad1      [4]byte
  3715  	FaConstraint      uintptr
  3716  	FnOrderBy         int32
  3717  	F__ccgo_pad2      [4]byte
  3718  	FaOrderBy         uintptr
  3719  	FaConstraintUsage uintptr
  3720  	FidxNum           int32
  3721  	F__ccgo_pad3      [4]byte
  3722  	FidxStr           uintptr
  3723  	FneedToFreeIdxStr int32
  3724  	ForderByConsumed  int32
  3725  	FestimatedCost    float64
  3726  	FestimatedRows    sqlite3_int64
  3727  	FidxFlags         int32
  3728  	F__ccgo_pad4      [4]byte
  3729  	FcolUsed          sqlite3_uint64
  3730  }
  3731  
  3732  type sqlite3_index_info = sqlite3_index_info1
  3733  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  3734  
  3735  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  3736  type sqlite3_module1 = struct {
  3737  	FiVersion      int32
  3738  	F__ccgo_pad1   [4]byte
  3739  	FxCreate       uintptr
  3740  	FxConnect      uintptr
  3741  	FxBestIndex    uintptr
  3742  	FxDisconnect   uintptr
  3743  	FxDestroy      uintptr
  3744  	FxOpen         uintptr
  3745  	FxClose        uintptr
  3746  	FxFilter       uintptr
  3747  	FxNext         uintptr
  3748  	FxEof          uintptr
  3749  	FxColumn       uintptr
  3750  	FxRowid        uintptr
  3751  	FxUpdate       uintptr
  3752  	FxBegin        uintptr
  3753  	FxSync         uintptr
  3754  	FxCommit       uintptr
  3755  	FxRollback     uintptr
  3756  	FxFindFunction uintptr
  3757  	FxRename       uintptr
  3758  	FxSavepoint    uintptr
  3759  	FxRelease      uintptr
  3760  	FxRollbackTo   uintptr
  3761  	FxShadowName   uintptr
  3762  }
  3763  
  3764  type sqlite3_module = sqlite3_module1
  3765  
  3766  type sqlite3_index_constraint = struct {
  3767  	FiColumn     int32
  3768  	Fop          uint8
  3769  	Fusable      uint8
  3770  	F__ccgo_pad1 [2]byte
  3771  	FiTermOffset int32
  3772  }
  3773  
  3774  type sqlite3_index_orderby = struct {
  3775  	FiColumn     int32
  3776  	Fdesc        uint8
  3777  	F__ccgo_pad1 [3]byte
  3778  }
  3779  
  3780  type sqlite3_index_constraint_usage = struct {
  3781  	FargvIndex   int32
  3782  	Fomit        uint8
  3783  	F__ccgo_pad1 [3]byte
  3784  }
  3785  
  3786  type sqlite3_mutex_methods1 = struct {
  3787  	FxMutexInit    uintptr
  3788  	FxMutexEnd     uintptr
  3789  	FxMutexAlloc   uintptr
  3790  	FxMutexFree    uintptr
  3791  	FxMutexEnter   uintptr
  3792  	FxMutexTry     uintptr
  3793  	FxMutexLeave   uintptr
  3794  	FxMutexHeld    uintptr
  3795  	FxMutexNotheld uintptr
  3796  }
  3797  
  3798  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  3799  
  3800  type sqlite3_str1 = struct {
  3801  	Fdb          uintptr
  3802  	FzText       uintptr
  3803  	FnAlloc      u32
  3804  	FmxAlloc     u32
  3805  	FnChar       u32
  3806  	FaccError    u8
  3807  	FprintfFlags u8
  3808  	F__ccgo_pad1 [2]byte
  3809  }
  3810  
  3811  type sqlite3_pcache_page1 = struct {
  3812  	FpBuf   uintptr
  3813  	FpExtra uintptr
  3814  }
  3815  
  3816  type sqlite3_pcache_page = sqlite3_pcache_page1
  3817  
  3818  type sqlite3_pcache_methods21 = struct {
  3819  	FiVersion    int32
  3820  	F__ccgo_pad1 [4]byte
  3821  	FpArg        uintptr
  3822  	FxInit       uintptr
  3823  	FxShutdown   uintptr
  3824  	FxCreate     uintptr
  3825  	FxCachesize  uintptr
  3826  	FxPagecount  uintptr
  3827  	FxFetch      uintptr
  3828  	FxUnpin      uintptr
  3829  	FxRekey      uintptr
  3830  	FxTruncate   uintptr
  3831  	FxDestroy    uintptr
  3832  	FxShrink     uintptr
  3833  }
  3834  
  3835  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  3836  
  3837  type sqlite3_pcache_methods1 = struct {
  3838  	FpArg       uintptr
  3839  	FxInit      uintptr
  3840  	FxShutdown  uintptr
  3841  	FxCreate    uintptr
  3842  	FxCachesize uintptr
  3843  	FxPagecount uintptr
  3844  	FxFetch     uintptr
  3845  	FxUnpin     uintptr
  3846  	FxRekey     uintptr
  3847  	FxTruncate  uintptr
  3848  	FxDestroy   uintptr
  3849  }
  3850  
  3851  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  3852  
  3853  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  3854  
  3855  type sqlite3_snapshot = sqlite3_snapshot1
  3856  
  3857  type sqlite3_rtree_geometry1 = struct {
  3858  	FpContext    uintptr
  3859  	FnParam      int32
  3860  	F__ccgo_pad1 [4]byte
  3861  	FaParam      uintptr
  3862  	FpUser       uintptr
  3863  	FxDelUser    uintptr
  3864  }
  3865  
  3866  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  3867  type sqlite3_rtree_query_info1 = struct {
  3868  	FpContext      uintptr
  3869  	FnParam        int32
  3870  	F__ccgo_pad1   [4]byte
  3871  	FaParam        uintptr
  3872  	FpUser         uintptr
  3873  	FxDelUser      uintptr
  3874  	FaCoord        uintptr
  3875  	FanQueue       uintptr
  3876  	FnCoord        int32
  3877  	FiLevel        int32
  3878  	FmxLevel       int32
  3879  	F__ccgo_pad2   [4]byte
  3880  	FiRowid        sqlite3_int64
  3881  	FrParentScore  sqlite3_rtree_dbl
  3882  	FeParentWithin int32
  3883  	FeWithin       int32
  3884  	FrScore        sqlite3_rtree_dbl
  3885  	FapSqlParam    uintptr
  3886  }
  3887  
  3888  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  3889  
  3890  type sqlite3_rtree_dbl = float64
  3891  
  3892  type Fts5ExtensionApi1 = struct {
  3893  	FiVersion           int32
  3894  	F__ccgo_pad1        [4]byte
  3895  	FxUserData          uintptr
  3896  	FxColumnCount       uintptr
  3897  	FxRowCount          uintptr
  3898  	FxColumnTotalSize   uintptr
  3899  	FxTokenize          uintptr
  3900  	FxPhraseCount       uintptr
  3901  	FxPhraseSize        uintptr
  3902  	FxInstCount         uintptr
  3903  	FxInst              uintptr
  3904  	FxRowid             uintptr
  3905  	FxColumnText        uintptr
  3906  	FxColumnSize        uintptr
  3907  	FxQueryPhrase       uintptr
  3908  	FxSetAuxdata        uintptr
  3909  	FxGetAuxdata        uintptr
  3910  	FxPhraseFirst       uintptr
  3911  	FxPhraseNext        uintptr
  3912  	FxPhraseFirstColumn uintptr
  3913  	FxPhraseNextColumn  uintptr
  3914  }
  3915  
  3916  type Fts5ExtensionApi = Fts5ExtensionApi1
  3917  type Fts5PhraseIter1 = struct {
  3918  	Fa uintptr
  3919  	Fb uintptr
  3920  }
  3921  
  3922  type Fts5PhraseIter = Fts5PhraseIter1
  3923  
  3924  type fts5_extension_function = uintptr
  3925  type fts5_tokenizer1 = struct {
  3926  	FxCreate   uintptr
  3927  	FxDelete   uintptr
  3928  	FxTokenize uintptr
  3929  }
  3930  
  3931  type fts5_tokenizer = fts5_tokenizer1
  3932  
  3933  type fts5_api1 = struct {
  3934  	FiVersion         int32
  3935  	F__ccgo_pad1      [4]byte
  3936  	FxCreateTokenizer uintptr
  3937  	FxFindTokenizer   uintptr
  3938  	FxCreateFunction  uintptr
  3939  }
  3940  
  3941  type fts5_api = fts5_api1
  3942  
  3943  type sqlite3expert1 = struct {
  3944  	FiSample     int32
  3945  	F__ccgo_pad1 [4]byte
  3946  	Fdb          uintptr
  3947  	Fdbm         uintptr
  3948  	Fdbv         uintptr
  3949  	FpTable      uintptr
  3950  	FpScan       uintptr
  3951  	FpWrite      uintptr
  3952  	FpStatement  uintptr
  3953  	FbRun        int32
  3954  	F__ccgo_pad2 [4]byte
  3955  	FpzErrmsg    uintptr
  3956  	Frc          int32
  3957  	F__ccgo_pad3 [4]byte
  3958  	FhIdx        IdxHash
  3959  	FzCandidates uintptr
  3960  }
  3961  
  3962  type sqlite3expert = sqlite3expert1
  3963  
  3964  type locale_t = uintptr
  3965  
  3966  type u_char = uint8
  3967  type u_short = uint16
  3968  type u_int = uint32
  3969  type u_long = uint64
  3970  
  3971  type unchar = uint8
  3972  type ushort = uint16
  3973  type uint = uint32
  3974  type ulong = uint64
  3975  
  3976  type cpuid_t = uint64
  3977  type register_t = int64
  3978  
  3979  type int8_t = int8
  3980  
  3981  type uint8_t = uint8
  3982  
  3983  type int16_t = int16
  3984  
  3985  type uint16_t = uint16
  3986  
  3987  type int32_t = int32
  3988  
  3989  type uint32_t = uint32
  3990  
  3991  type int64_t = int64
  3992  
  3993  type uint64_t = uint64
  3994  
  3995  type u_int8_t = uint8
  3996  type u_int16_t = uint16
  3997  type u_int32_t = uint32
  3998  type u_int64_t = uint64
  3999  
  4000  type quad_t = int64
  4001  type u_quad_t = uint64
  4002  
  4003  type vaddr_t = uint64
  4004  type paddr_t = uint64
  4005  type vsize_t = uint64
  4006  type psize_t = uint64
  4007  
  4008  type blkcnt_t = int64
  4009  type blksize_t = int32
  4010  type caddr_t = uintptr
  4011  type daddr32_t = int32
  4012  type daddr_t = int64
  4013  type dev_t = int32
  4014  type fixpt_t = uint32
  4015  type gid_t = uint32
  4016  type id_t = uint32
  4017  type ino_t = uint64
  4018  type key_t = int64
  4019  type mode_t = uint32
  4020  type nlink_t = uint32
  4021  type rlim_t = uint64
  4022  type segsz_t = int32
  4023  type uid_t = uint32
  4024  type useconds_t = uint32
  4025  type suseconds_t = int64
  4026  type fsblkcnt_t = uint64
  4027  type fsfilcnt_t = uint64
  4028  
  4029  type clock_t = int64
  4030  
  4031  type clockid_t = int32
  4032  
  4033  type pid_t = int32
  4034  
  4035  type ssize_t = int64
  4036  
  4037  type time_t = int64
  4038  
  4039  type timer_t = int32
  4040  
  4041  type off_t = int64
  4042  
  4043  type fpos_t = off_t
  4044  
  4045  type __sbuf = struct {
  4046  	F_base       uintptr
  4047  	F_size       int32
  4048  	F__ccgo_pad1 [4]byte
  4049  }
  4050  
  4051  type __sFILE = struct {
  4052  	F_p          uintptr
  4053  	F_r          int32
  4054  	F_w          int32
  4055  	F_flags      int16
  4056  	F_file       int16
  4057  	F__ccgo_pad1 [4]byte
  4058  	F_bf         struct {
  4059  		F_base       uintptr
  4060  		F_size       int32
  4061  		F__ccgo_pad1 [4]byte
  4062  	}
  4063  	F_lbfsize    int32
  4064  	F__ccgo_pad2 [4]byte
  4065  	F_cookie     uintptr
  4066  	F_close      uintptr
  4067  	F_read       uintptr
  4068  	F_seek       uintptr
  4069  	F_write      uintptr
  4070  	F_ext        struct {
  4071  		F_base       uintptr
  4072  		F_size       int32
  4073  		F__ccgo_pad1 [4]byte
  4074  	}
  4075  	F_up   uintptr
  4076  	F_ur   int32
  4077  	F_ubuf [3]uint8
  4078  	F_nbuf [1]uint8
  4079  	F_lb   struct {
  4080  		F_base       uintptr
  4081  		F_size       int32
  4082  		F__ccgo_pad1 [4]byte
  4083  	}
  4084  	F_blksize    int32
  4085  	F__ccgo_pad3 [4]byte
  4086  	F_offset     fpos_t
  4087  }
  4088  
  4089  type FILE = __sFILE
  4090  
  4091  type i64 = sqlite3_int64
  4092  type u64 = sqlite3_uint64
  4093  
  4094  type IdxColumn1 = struct {
  4095  	FzName       uintptr
  4096  	FzColl       uintptr
  4097  	FiPk         int32
  4098  	F__ccgo_pad1 [4]byte
  4099  }
  4100  
  4101  type IdxColumn = IdxColumn1
  4102  type IdxConstraint1 = struct {
  4103  	FzColl  uintptr
  4104  	FbRange int32
  4105  	FiCol   int32
  4106  	FbFlag  int32
  4107  	FbDesc  int32
  4108  	FpNext  uintptr
  4109  	FpLink  uintptr
  4110  }
  4111  
  4112  type IdxConstraint = IdxConstraint1
  4113  type IdxScan1 = struct {
  4114  	FpTab        uintptr
  4115  	FiDb         int32
  4116  	F__ccgo_pad1 [4]byte
  4117  	Fcovering    i64
  4118  	FpOrder      uintptr
  4119  	FpEq         uintptr
  4120  	FpRange      uintptr
  4121  	FpNextScan   uintptr
  4122  }
  4123  
  4124  type IdxScan = IdxScan1
  4125  type IdxStatement1 = struct {
  4126  	FiId         int32
  4127  	F__ccgo_pad1 [4]byte
  4128  	FzSql        uintptr
  4129  	FzIdx        uintptr
  4130  	FzEQP        uintptr
  4131  	FpNext       uintptr
  4132  }
  4133  
  4134  type IdxStatement = IdxStatement1
  4135  type IdxTable1 = struct {
  4136  	FnCol        int32
  4137  	F__ccgo_pad1 [4]byte
  4138  	FzName       uintptr
  4139  	FaCol        uintptr
  4140  	FpNext       uintptr
  4141  }
  4142  
  4143  type IdxTable = IdxTable1
  4144  type IdxWrite1 = struct {
  4145  	FpTab        uintptr
  4146  	FeOp         int32
  4147  	F__ccgo_pad1 [4]byte
  4148  	FpNext       uintptr
  4149  }
  4150  
  4151  type IdxWrite = IdxWrite1
  4152  
  4153  type IdxHashEntry1 = struct {
  4154  	FzKey      uintptr
  4155  	FzVal      uintptr
  4156  	FzVal2     uintptr
  4157  	FpHashNext uintptr
  4158  	FpNext     uintptr
  4159  }
  4160  
  4161  type IdxHashEntry = IdxHashEntry1
  4162  type IdxHash1 = struct {
  4163  	FpFirst uintptr
  4164  	FaHash  [1023]uintptr
  4165  }
  4166  
  4167  type IdxHash = IdxHash1
  4168  
  4169  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4170  	var pRet uintptr
  4171  
  4172  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4173  	if pRet != 0 {
  4174  		libc.Xmemset(tls, pRet, 0, uint64(nByte))
  4175  	} else {
  4176  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4177  	}
  4178  	return pRet
  4179  }
  4180  
  4181  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4182  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4183  }
  4184  
  4185  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4186  	var i int32
  4187  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4188  		var pEntry uintptr
  4189  		var pNext uintptr
  4190  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  4191  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4192  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4193  			sqlite3.Xsqlite3_free(tls, pEntry)
  4194  		}
  4195  	}
  4196  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4197  }
  4198  
  4199  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  4200  	var ret uint32 = uint32(0)
  4201  	var i int32
  4202  	for i = 0; i < n; i++ {
  4203  		ret = ret + (ret<<3 + uint32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i))))))
  4204  	}
  4205  	return int32(ret % uint32(IDX_HASH_SIZE))
  4206  }
  4207  
  4208  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  4209  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  4210  	var iHash int32 = idxHashString(tls, zKey, nKey)
  4211  	var nVal int32 = func() int32 {
  4212  		if zVal != 0 {
  4213  			return int32(libc.Xstrlen(tls, zVal))
  4214  		}
  4215  		return 0
  4216  	}()
  4217  	var pEntry uintptr
  4218  
  4219  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4220  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4221  			return 1
  4222  		}
  4223  	}
  4224  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  4225  	if pEntry != 0 {
  4226  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  4227  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey))
  4228  		if zVal != 0 {
  4229  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  4230  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal))
  4231  		}
  4232  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  4233  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  4234  
  4235  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  4236  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  4237  	}
  4238  	return 0
  4239  }
  4240  
  4241  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4242  	var iHash int32
  4243  	var pEntry uintptr
  4244  	if nKey < 0 {
  4245  		nKey = int32(libc.Xstrlen(tls, zKey))
  4246  	}
  4247  	iHash = idxHashString(tls, zKey, nKey)
  4248  
  4249  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4250  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4251  			return pEntry
  4252  		}
  4253  	}
  4254  	return uintptr(0)
  4255  }
  4256  
  4257  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4258  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  4259  	if pEntry != 0 {
  4260  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  4261  	}
  4262  	return uintptr(0)
  4263  }
  4264  
  4265  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  4266  	var pNew uintptr
  4267  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  4268  
  4269  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  4270  	if pNew != 0 {
  4271  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  4272  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1))
  4273  	}
  4274  	return pNew
  4275  }
  4276  
  4277  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  4278  	bp := tls.Alloc(8)
  4279  	defer tls.Free(8)
  4280  
  4281  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  4282  }
  4283  
  4284  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  4285  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  4286  	if rc != SQLITE_OK {
  4287  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  4288  		idxDatabaseError(tls, db, pzErrmsg)
  4289  	}
  4290  	return rc
  4291  }
  4292  
  4293  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  4294  	var ap va_list
  4295  	_ = ap
  4296  	var rc int32
  4297  	var zSql uintptr
  4298  	ap = va
  4299  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4300  	if zSql == uintptr(0) {
  4301  		rc = SQLITE_NOMEM
  4302  	} else {
  4303  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  4304  		sqlite3.Xsqlite3_free(tls, zSql)
  4305  	}
  4306  	_ = ap
  4307  	return rc
  4308  }
  4309  
  4310  type ExpertVtab1 = struct {
  4311  	Fbase    sqlite3_vtab
  4312  	FpTab    uintptr
  4313  	FpExpert uintptr
  4314  }
  4315  
  4316  type ExpertVtab = ExpertVtab1
  4317  
  4318  type ExpertCsr1 = struct {
  4319  	Fbase  sqlite3_vtab_cursor
  4320  	FpData uintptr
  4321  }
  4322  
  4323  type ExpertCsr = ExpertCsr1
  4324  
  4325  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  4326  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  4327  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  4328  
  4329  	if zRet != 0 {
  4330  		var iOut int32 = 0
  4331  		var iIn int32 = 0
  4332  		for iIn = 1; iIn < n-1; iIn++ {
  4333  			if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  4334  				iIn++
  4335  			}
  4336  			*(*int8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
  4337  		}
  4338  		*(*int8)(unsafe.Pointer(zRet + uintptr(iOut))) = int8(0)
  4339  	}
  4340  
  4341  	return zRet
  4342  }
  4343  
  4344  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  4345  	bp := tls.Alloc(4)
  4346  	defer tls.Free(4)
  4347  
  4348  	var pExpert uintptr = pAux
  4349  	var p uintptr = uintptr(0)
  4350  
  4351  	if argc != 4 {
  4352  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  4353  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  4354  	} else {
  4355  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  4356  		if zCreateTable != 0 {
  4357  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  4358  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4359  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  4360  			}
  4361  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4362  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  4363  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  4364  
  4365  			}
  4366  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  4367  		} else {
  4368  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  4369  		}
  4370  	}
  4371  
  4372  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  4373  	return *(*int32)(unsafe.Pointer(bp))
  4374  }
  4375  
  4376  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  4377  	var p uintptr = pVtab
  4378  	sqlite3.Xsqlite3_free(tls, p)
  4379  	return SQLITE_OK
  4380  }
  4381  
  4382  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  4383  	bp := tls.Alloc(4)
  4384  	defer tls.Free(4)
  4385  
  4386  	var p uintptr = pVtab
  4387  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4388  	var n int32 = 0
  4389  	var pScan uintptr
  4390  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  4391  
  4392  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  4393  	if pScan != 0 {
  4394  		var i int32
  4395  
  4396  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  4397  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  4398  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  4399  
  4400  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  4401  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  4402  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  4403  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  4404  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  4405  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  4406  				var pNew uintptr
  4407  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  4408  				pNew = idxNewConstraint(tls, bp, zColl)
  4409  				if pNew != 0 {
  4410  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  4411  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  4412  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  4413  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  4414  					} else {
  4415  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  4416  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  4417  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  4418  					}
  4419  				}
  4420  				n++
  4421  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  4422  			}
  4423  		}
  4424  
  4425  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  4426  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  4427  			if iCol >= 0 {
  4428  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  4429  				if pNew != 0 {
  4430  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  4431  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  4432  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4433  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4434  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  4435  					n++
  4436  				}
  4437  			}
  4438  		}
  4439  	}
  4440  
  4441  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  4442  	return *(*int32)(unsafe.Pointer(bp))
  4443  }
  4444  
  4445  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  4446  	_ = pVtab
  4447  	_ = nData
  4448  	_ = azData
  4449  	_ = pRowid
  4450  	return SQLITE_OK
  4451  }
  4452  
  4453  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  4454  	bp := tls.Alloc(4)
  4455  	defer tls.Free(4)
  4456  
  4457  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4458  	var pCsr uintptr
  4459  	_ = pVTab
  4460  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  4461  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  4462  	return *(*int32)(unsafe.Pointer(bp))
  4463  }
  4464  
  4465  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  4466  	var pCsr uintptr = cur
  4467  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4468  	sqlite3.Xsqlite3_free(tls, pCsr)
  4469  	return SQLITE_OK
  4470  }
  4471  
  4472  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  4473  	var pCsr uintptr = cur
  4474  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  4475  }
  4476  
  4477  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  4478  	var pCsr uintptr = cur
  4479  	var rc int32 = SQLITE_OK
  4480  
  4481  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4482  	if rc != SQLITE_ROW {
  4483  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4484  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4485  	} else {
  4486  		rc = SQLITE_OK
  4487  	}
  4488  
  4489  	return rc
  4490  }
  4491  
  4492  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  4493  	_ = cur
  4494  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  4495  	return SQLITE_OK
  4496  }
  4497  
  4498  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  4499  	var pCsr uintptr = cur
  4500  	var pVal uintptr
  4501  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  4502  	if pVal != 0 {
  4503  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  4504  	}
  4505  	return SQLITE_OK
  4506  }
  4507  
  4508  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  4509  	bp := tls.Alloc(8)
  4510  	defer tls.Free(8)
  4511  
  4512  	var pCsr uintptr = cur
  4513  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  4514  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  4515  	var rc int32
  4516  
  4517  	_ = idxNum
  4518  	_ = idxStr
  4519  	_ = argc
  4520  	_ = argv
  4521  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4522  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4523  	if rc == SQLITE_OK {
  4524  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  4525  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  4526  	}
  4527  
  4528  	if rc == SQLITE_OK {
  4529  		rc = expertNext(tls, cur)
  4530  	}
  4531  	return rc
  4532  }
  4533  
  4534  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  4535  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  4536  }
  4537  
  4538  var expertModule = sqlite3_module{
  4539  	FiVersion:    2,
  4540  	FxCreate:     0,
  4541  	FxConnect:    0,
  4542  	FxBestIndex:  0,
  4543  	FxDisconnect: 0,
  4544  	FxDestroy:    0,
  4545  	FxOpen:       0,
  4546  	FxClose:      0,
  4547  	FxFilter:     0,
  4548  	FxNext:       0,
  4549  	FxEof:        0,
  4550  	FxColumn:     0,
  4551  	FxRowid:      0,
  4552  	FxUpdate:     0,
  4553  }
  4554  
  4555  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  4556  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  4557  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4558  		*(*int32)(unsafe.Pointer(pRc)) = rc
  4559  	}
  4560  }
  4561  
  4562  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  4563  	bp := tls.Alloc(40)
  4564  	defer tls.Free(40)
  4565  
  4566  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  4567  	var nCol int32 = 0
  4568  	var nTab int32
  4569  	var nByte int32
  4570  	var pNew uintptr = uintptr(0)
  4571  
  4572  	var rc2 int32
  4573  	var pCsr uintptr = uintptr(0)
  4574  	var nPk int32 = 0
  4575  
  4576  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  4577  	if zTab == uintptr(0) {
  4578  		return SQLITE_ERROR
  4579  	}
  4580  	nTab = int32(libc.Xstrlen(tls, zTab))
  4581  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  4582  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  4583  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4584  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4585  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4586  		if zCol == uintptr(0) {
  4587  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  4588  			break
  4589  		}
  4590  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  4591  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4592  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  4593  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  4594  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  4595  		}
  4596  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  4597  		nCol++
  4598  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  4599  	}
  4600  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4601  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4602  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  4603  	}
  4604  
  4605  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  4606  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4607  		pNew = idxMalloc(tls, bp+24, nByte)
  4608  	}
  4609  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4610  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  4611  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  4612  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  4613  	}
  4614  
  4615  	nCol = 0
  4616  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4617  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4618  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  4619  		var nCopy int32
  4620  		if zCol == uintptr(0) {
  4621  			continue
  4622  		}
  4623  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  4624  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  4625  		(*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)
  4626  		libc.Xmemcpy(tls, pCsr, zCol, uint64(nCopy))
  4627  		pCsr += uintptr(nCopy)
  4628  
  4629  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4630  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  4631  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4632  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  4633  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  4634  			}
  4635  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  4636  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  4637  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy))
  4638  			pCsr += uintptr(nCopy)
  4639  		}
  4640  
  4641  		nCol++
  4642  	}
  4643  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4644  
  4645  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  4646  		sqlite3.Xsqlite3_free(tls, pNew)
  4647  		pNew = uintptr(0)
  4648  	} else if pNew != uintptr(0) {
  4649  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  4650  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  4651  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1))
  4652  		}
  4653  	}
  4654  
  4655  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  4656  	return *(*int32)(unsafe.Pointer(bp + 24))
  4657  }
  4658  
  4659  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  4660  	var ap va_list
  4661  	_ = ap
  4662  	var zAppend uintptr = uintptr(0)
  4663  	var zRet uintptr = uintptr(0)
  4664  	var nIn int32
  4665  	if zIn != 0 {
  4666  		nIn = int32(libc.Xstrlen(tls, zIn))
  4667  	} else {
  4668  		nIn = 0
  4669  	}
  4670  	var nAppend int32 = 0
  4671  	ap = va
  4672  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4673  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4674  		if zAppend != 0 {
  4675  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  4676  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  4677  		}
  4678  		if zAppend != 0 && zRet != 0 {
  4679  			if nIn != 0 {
  4680  				libc.Xmemcpy(tls, zRet, zIn, uint64(nIn))
  4681  			}
  4682  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1))
  4683  		} else {
  4684  			sqlite3.Xsqlite3_free(tls, zRet)
  4685  			zRet = uintptr(0)
  4686  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4687  		}
  4688  		sqlite3.Xsqlite3_free(tls, zAppend)
  4689  		sqlite3.Xsqlite3_free(tls, zIn)
  4690  	}
  4691  	_ = ap
  4692  	return zRet
  4693  }
  4694  
  4695  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  4696  	var i int32
  4697  	for i = 0; *(*int8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  4698  		if !(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  4699  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  4700  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  4701  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  4702  			return 1
  4703  		}
  4704  	}
  4705  	return 0
  4706  }
  4707  
  4708  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  4709  	bp := tls.Alloc(32)
  4710  	defer tls.Free(32)
  4711  
  4712  	var zRet uintptr = zIn
  4713  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  4714  	if zRet != 0 {
  4715  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  4716  	}
  4717  
  4718  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  4719  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4720  	} else {
  4721  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4722  	}
  4723  
  4724  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4725  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4726  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4727  		} else {
  4728  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4729  		}
  4730  	}
  4731  
  4732  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  4733  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  4734  	}
  4735  	return zRet
  4736  }
  4737  
  4738  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4739  	bp := tls.Alloc(36)
  4740  	defer tls.Free(36)
  4741  
  4742  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4743  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4744  	var pIter uintptr
  4745  	var nEq int32 = 0
  4746  
  4747  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4748  		nEq++
  4749  	}
  4750  
  4751  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  4752  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  4753  		var bMatch int32 = 1
  4754  		var pT uintptr = pTail
  4755  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  4756  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  4757  		if zIdx == uintptr(0) {
  4758  			continue
  4759  		}
  4760  
  4761  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4762  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  4763  		}
  4764  
  4765  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  4766  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  4767  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  4768  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  4769  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  4770  
  4771  			if iIdx < nEq {
  4772  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4773  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  4774  						continue
  4775  					}
  4776  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  4777  						continue
  4778  					}
  4779  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  4780  						continue
  4781  					}
  4782  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  4783  					break
  4784  				}
  4785  				if pIter == uintptr(0) {
  4786  					bMatch = 0
  4787  					break
  4788  				}
  4789  			} else {
  4790  				if pT != 0 {
  4791  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  4792  						bMatch = 0
  4793  						break
  4794  					}
  4795  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  4796  				}
  4797  			}
  4798  		}
  4799  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  4800  
  4801  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  4802  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4803  			return 1
  4804  		}
  4805  	}
  4806  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4807  
  4808  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  4809  	return 0
  4810  }
  4811  
  4812  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  4813  	_ = azColumns
  4814  	if nc > 0 && (int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  4815  		*(*int32)(unsafe.Pointer(pCount)) += 1
  4816  	}
  4817  	return 0
  4818  }
  4819  
  4820  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4821  	bp := tls.Alloc(56)
  4822  	defer tls.Free(56)
  4823  
  4824  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  4825  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  4826  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  4827  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  4828  		var zCols uintptr = uintptr(0)
  4829  		var zIdx uintptr = uintptr(0)
  4830  		var pCons uintptr
  4831  		var h uint32 = uint32(0)
  4832  		var zFmt uintptr
  4833  
  4834  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4835  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4836  		}
  4837  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4838  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4839  		}
  4840  
  4841  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  4842  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4843  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  4844  			var zName uintptr = uintptr(0)
  4845  			var collisions int32 = 0
  4846  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  4847  				var zFind uintptr
  4848  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  4849  					h = h + (h<<3 + uint32(*(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  4850  				}
  4851  				sqlite3.Xsqlite3_free(tls, zName)
  4852  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  4853  				if zName == uintptr(0) {
  4854  					break
  4855  				}
  4856  
  4857  				zFmt = ts + 188
  4858  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  4859  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  4860  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  4861  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  4862  				}{countNonzeros})), bp+52, uintptr(0))
  4863  
  4864  				sqlite3.Xsqlite3_free(tls, zFind)
  4865  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  4866  					collisions = 0
  4867  					break
  4868  				}
  4869  				collisions++
  4870  			}
  4871  			if collisions != 0 {
  4872  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4873  			} else if zName == uintptr(0) {
  4874  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4875  			} else {
  4876  				if quoteTable != 0 {
  4877  					zFmt = ts + 274
  4878  				} else {
  4879  					zFmt = ts + 304
  4880  				}
  4881  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  4882  				if !(zIdx != 0) {
  4883  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4884  				} else {
  4885  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  4886  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  4887  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4888  					} else {
  4889  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  4890  					}
  4891  				}
  4892  				sqlite3.Xsqlite3_free(tls, zName)
  4893  				sqlite3.Xsqlite3_free(tls, zIdx)
  4894  			}
  4895  		}
  4896  
  4897  		sqlite3.Xsqlite3_free(tls, zCols)
  4898  	}
  4899  	return *(*int32)(unsafe.Pointer(bp + 48))
  4900  }
  4901  
  4902  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  4903  	var pCmp uintptr
  4904  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  4905  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  4906  			return 1
  4907  		}
  4908  	}
  4909  	return 0
  4910  }
  4911  
  4912  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  4913  	var p1 uintptr = uintptr(0)
  4914  	var pCon uintptr
  4915  	var rc int32
  4916  
  4917  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4918  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4919  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  4920  			p1 = pCon
  4921  		}
  4922  	}
  4923  
  4924  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  4925  
  4926  	if pTail == uintptr(0) {
  4927  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4928  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4929  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  4930  			}
  4931  		}
  4932  	}
  4933  
  4934  	return rc
  4935  }
  4936  
  4937  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  4938  	var rc int32 = SQLITE_OK
  4939  	var pIter uintptr
  4940  
  4941  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  4942  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  4943  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  4944  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  4945  		}
  4946  	}
  4947  
  4948  	return rc
  4949  }
  4950  
  4951  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  4952  	var pNext uintptr
  4953  	var p uintptr
  4954  
  4955  	for p = pConstraint; p != 0; p = pNext {
  4956  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  4957  		sqlite3.Xsqlite3_free(tls, p)
  4958  	}
  4959  }
  4960  
  4961  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  4962  	var p uintptr
  4963  	var pNext uintptr
  4964  	for p = pScan; p != pLast; p = pNext {
  4965  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  4966  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  4967  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  4968  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  4969  		sqlite3.Xsqlite3_free(tls, p)
  4970  	}
  4971  }
  4972  
  4973  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  4974  	var p uintptr
  4975  	var pNext uintptr
  4976  	for p = pStatement; p != pLast; p = pNext {
  4977  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  4978  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  4979  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  4980  		sqlite3.Xsqlite3_free(tls, p)
  4981  	}
  4982  }
  4983  
  4984  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  4985  	var pIter uintptr
  4986  	var pNext uintptr
  4987  	for pIter = pTab; pIter != 0; pIter = pNext {
  4988  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  4989  		sqlite3.Xsqlite3_free(tls, pIter)
  4990  	}
  4991  }
  4992  
  4993  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  4994  	var pIter uintptr
  4995  	var pNext uintptr
  4996  	for pIter = pTab; pIter != 0; pIter = pNext {
  4997  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  4998  		sqlite3.Xsqlite3_free(tls, pIter)
  4999  	}
  5000  }
  5001  
  5002  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5003  	bp := tls.Alloc(8228)
  5004  	defer tls.Free(8228)
  5005  
  5006  	var pStmt uintptr
  5007  	var dbm uintptr
  5008  
  5009  	var zSql uintptr
  5010  	var nIdx int32
  5011  	var zIdx uintptr
  5012  
  5013  	var zDetail uintptr
  5014  	var nDetail int32
  5015  	var i int32
  5016  	var pEntry uintptr
  5017  
  5018  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5019  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5020  	idxHashInit(tls, bp+24)
  5021  
  5022  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5023  __1:
  5024  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5025  		goto __3
  5026  	}
  5027  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5028  	idxHashClear(tls, bp+24)
  5029  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5030  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5031  __4:
  5032  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5033  		goto __5
  5034  	}
  5035  
  5036  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5037  
  5038  	if !!(zDetail != 0) {
  5039  		goto __6
  5040  	}
  5041  	goto __4
  5042  __6:
  5043  	;
  5044  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5045  
  5046  	i = 0
  5047  __7:
  5048  	if !(i < nDetail) {
  5049  		goto __9
  5050  	}
  5051  	zIdx = uintptr(0)
  5052  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5053  		goto __10
  5054  	}
  5055  	zIdx = zDetail + uintptr(i+13)
  5056  	goto __11
  5057  __10:
  5058  	if !(i+22 < nDetail &&
  5059  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5060  		goto __12
  5061  	}
  5062  	zIdx = zDetail + uintptr(i+22)
  5063  __12:
  5064  	;
  5065  __11:
  5066  	;
  5067  	if !(zIdx != 0) {
  5068  		goto __13
  5069  	}
  5070  	nIdx = 0
  5071  __14:
  5072  	if !(int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5073  		goto __15
  5074  	}
  5075  	nIdx++
  5076  	goto __14
  5077  __15:
  5078  	;
  5079  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5080  	if !(zSql != 0) {
  5081  		goto __16
  5082  	}
  5083  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5084  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5085  		goto __17
  5086  	}
  5087  	goto find_indexes_out
  5088  __17:
  5089  	;
  5090  __16:
  5091  	;
  5092  	goto __9
  5093  __13:
  5094  	;
  5095  	goto __8
  5096  __8:
  5097  	i++
  5098  	goto __7
  5099  	goto __9
  5100  __9:
  5101  	;
  5102  	if !(int32(*(*int8)(unsafe.Pointer(zDetail))) != '-') {
  5103  		goto __18
  5104  	}
  5105  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5106  __18:
  5107  	;
  5108  	goto __4
  5109  __5:
  5110  	;
  5111  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5112  __19:
  5113  	if !(pEntry != 0) {
  5114  		goto __21
  5115  	}
  5116  	(*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))
  5117  	goto __20
  5118  __20:
  5119  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5120  	goto __19
  5121  	goto __21
  5122  __21:
  5123  	;
  5124  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5125  	goto __2
  5126  __2:
  5127  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5128  	goto __1
  5129  	goto __3
  5130  __3:
  5131  	;
  5132  find_indexes_out:
  5133  	idxHashClear(tls, bp+24)
  5134  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5135  }
  5136  
  5137  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5138  	bp := tls.Alloc(4)
  5139  	defer tls.Free(4)
  5140  
  5141  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5142  	_ = z4
  5143  	_ = zTrigger
  5144  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5145  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5146  			var p uintptr = pCtx
  5147  			var pTab uintptr
  5148  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5149  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5150  					break
  5151  				}
  5152  			}
  5153  			if pTab != 0 {
  5154  				var pWrite uintptr
  5155  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5156  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5157  						break
  5158  					}
  5159  				}
  5160  				if pWrite == uintptr(0) {
  5161  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5162  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5163  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5164  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5165  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5166  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5167  					}
  5168  				}
  5169  			}
  5170  		}
  5171  	}
  5172  	return *(*int32)(unsafe.Pointer(bp))
  5173  }
  5174  
  5175  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5176  	bp := tls.Alloc(104)
  5177  	defer tls.Free(104)
  5178  
  5179  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5180  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5181  	var zSql uintptr = ts + 398
  5182  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5183  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  5184  	var zWrite uintptr = uintptr(0)
  5185  
  5186  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5187  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5188  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5189  		if zCreate == uintptr(0) {
  5190  			continue
  5191  		}
  5192  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5193  	}
  5194  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5195  
  5196  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5197  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  5198  		if z == uintptr(0) {
  5199  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5200  		} else {
  5201  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  5202  			sqlite3.Xsqlite3_free(tls, z)
  5203  		}
  5204  	}
  5205  
  5206  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  5207  	case SQLITE_INSERT:
  5208  		{
  5209  			var i int32
  5210  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  5211  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5212  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  5213  					if i == 0 {
  5214  						return ts + 584
  5215  					}
  5216  					return ts + 97
  5217  				}()))
  5218  			}
  5219  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  5220  			break
  5221  
  5222  		}
  5223  	case SQLITE_UPDATE:
  5224  		{
  5225  			var i int32
  5226  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  5227  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5228  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  5229  					if i == 0 {
  5230  						return ts + 584
  5231  					}
  5232  					return ts + 97
  5233  				}(),
  5234  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  5235  			}
  5236  			break
  5237  
  5238  		}
  5239  	default:
  5240  		{
  5241  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5242  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  5243  				if zWrite == uintptr(0) {
  5244  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5245  				}
  5246  			}
  5247  
  5248  		}
  5249  	}
  5250  
  5251  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5252  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  5253  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  5254  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  5255  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  5256  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5257  		}
  5258  	}
  5259  	sqlite3.Xsqlite3_free(tls, zWrite)
  5260  
  5261  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5262  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  5263  	}
  5264  
  5265  	return *(*int32)(unsafe.Pointer(bp + 88))
  5266  }
  5267  
  5268  var zInt uintptr = ts + 624
  5269  var zDrop uintptr = ts + 662
  5270  
  5271  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5272  	var rc int32 = SQLITE_OK
  5273  	var pEnd uintptr = uintptr(0)
  5274  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5275  
  5276  	for rc == SQLITE_OK && pFirst != pEnd {
  5277  		var pIter uintptr
  5278  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  5279  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  5280  		}
  5281  		pEnd = pFirst
  5282  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5283  	}
  5284  
  5285  	return rc
  5286  }
  5287  
  5288  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  5289  	bp := tls.Alloc(60)
  5290  	defer tls.Free(60)
  5291  
  5292  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  5293  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5294  
  5295  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  5296  		ts+711)
  5297  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5298  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5299  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5300  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5301  
  5302  		if zType == uintptr(0) || zName == uintptr(0) {
  5303  			continue
  5304  		}
  5305  		if int32(*(*int8)(unsafe.Pointer(zType))) == 'v' || int32(*(*int8)(unsafe.Pointer(zType + 1))) == 'r' {
  5306  			if zSql != 0 {
  5307  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5308  			}
  5309  		} else {
  5310  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  5311  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5312  				var i int32
  5313  				var zInner uintptr = uintptr(0)
  5314  				var zOuter uintptr = uintptr(0)
  5315  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  5316  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  5317  
  5318  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  5319  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  5320  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  5321  						libc.VaList(bp, func() uintptr {
  5322  							if i == 0 {
  5323  								return ts + 584
  5324  							}
  5325  							return ts + 97
  5326  						}(), (*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))
  5327  				}
  5328  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  5329  
  5330  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  5331  					ts+1011, libc.VaList(bp+24, zName, zInner))
  5332  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5333  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  5334  				}
  5335  				sqlite3.Xsqlite3_free(tls, zInner)
  5336  				sqlite3.Xsqlite3_free(tls, zOuter)
  5337  			}
  5338  		}
  5339  	}
  5340  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5341  	return *(*int32)(unsafe.Pointer(bp + 56))
  5342  }
  5343  
  5344  type IdxSampleCtx = struct {
  5345  	FiTarget     int32
  5346  	F__ccgo_pad1 [4]byte
  5347  	Ftarget      float64
  5348  	FnRow        float64
  5349  	FnRet        float64
  5350  }
  5351  
  5352  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5353  	bp := tls.Alloc(2)
  5354  	defer tls.Free(2)
  5355  
  5356  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5357  	var bRet int32
  5358  
  5359  	_ = argv
  5360  
  5361  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  5362  		bRet = 1
  5363  	} else {
  5364  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  5365  		if bRet == 0 {
  5366  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  5367  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  5368  		}
  5369  	}
  5370  
  5371  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  5372  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  5373  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  5374  }
  5375  
  5376  type IdxRemCtx = struct {
  5377  	FnSlot       int32
  5378  	F__ccgo_pad1 [4]byte
  5379  	FaSlot       [1]struct {
  5380  		FeType       int32
  5381  		F__ccgo_pad1 [4]byte
  5382  		FiVal        i64
  5383  		FrVal        float64
  5384  		FnByte       int32
  5385  		Fn           int32
  5386  		Fz           uintptr
  5387  	}
  5388  }
  5389  
  5390  type IdxRemSlot = struct {
  5391  	FeType       int32
  5392  	F__ccgo_pad1 [4]byte
  5393  	FiVal        i64
  5394  	FrVal        float64
  5395  	FnByte       int32
  5396  	Fn           int32
  5397  	Fz           uintptr
  5398  }
  5399  
  5400  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5401  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5402  	var pSlot uintptr
  5403  	var iSlot int32
  5404  
  5405  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  5406  
  5407  	pSlot = p + 8 + uintptr(iSlot)*40
  5408  
  5409  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5410  	case SQLITE_NULL:
  5411  		break
  5412  
  5413  	case SQLITE_INTEGER:
  5414  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  5415  		break
  5416  
  5417  	case SQLITE_FLOAT:
  5418  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  5419  		break
  5420  
  5421  	case SQLITE_BLOB:
  5422  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5423  		break
  5424  
  5425  	case SQLITE_TEXT:
  5426  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5427  		break
  5428  	}
  5429  
  5430  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5431  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5432  	case SQLITE_NULL:
  5433  		break
  5434  
  5435  	case SQLITE_INTEGER:
  5436  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5437  		break
  5438  
  5439  	case SQLITE_FLOAT:
  5440  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5441  		break
  5442  
  5443  	case SQLITE_BLOB:
  5444  		fallthrough
  5445  	case SQLITE_TEXT:
  5446  		{
  5447  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5448  			var pData uintptr = uintptr(0)
  5449  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  5450  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  5451  				if zNew == uintptr(0) {
  5452  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  5453  					return
  5454  				}
  5455  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  5456  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  5457  			}
  5458  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  5459  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  5460  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5461  				if pData != 0 {
  5462  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5463  				}
  5464  			} else {
  5465  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5466  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5467  			}
  5468  			break
  5469  
  5470  		}
  5471  	}
  5472  }
  5473  
  5474  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  5475  	bp := tls.Alloc(12)
  5476  	defer tls.Free(12)
  5477  
  5478  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  5479  	var zMax uintptr = ts + 1052
  5480  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5481  
  5482  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  5483  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  5484  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  5485  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  5486  	}
  5487  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  5488  
  5489  	return *(*int32)(unsafe.Pointer(bp + 8))
  5490  }
  5491  
  5492  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  5493  	bp := tls.Alloc(128)
  5494  	defer tls.Free(128)
  5495  
  5496  	var zCols uintptr = uintptr(0)
  5497  	var zOrder uintptr = uintptr(0)
  5498  	var zQuery uintptr = uintptr(0)
  5499  	var nCol int32 = 0
  5500  	var i int32
  5501  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  5502  	var aStat uintptr = uintptr(0)
  5503  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  5504  
  5505  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  5506  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  5507  		var zComma uintptr
  5508  		if zCols == uintptr(0) {
  5509  			zComma = ts + 584
  5510  		} else {
  5511  			zComma = ts + 97
  5512  		}
  5513  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  5514  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  5515  		zCols = idxAppendText(tls, bp+112, zCols,
  5516  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  5517  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  5518  	}
  5519  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  5520  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5521  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5522  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5523  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  5524  		} else {
  5525  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5526  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  5527  		}
  5528  	}
  5529  	sqlite3.Xsqlite3_free(tls, zCols)
  5530  	sqlite3.Xsqlite3_free(tls, zOrder)
  5531  
  5532  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5533  		var dbrem uintptr = func() uintptr {
  5534  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5535  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5536  			}
  5537  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5538  		}()
  5539  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  5540  	}
  5541  	sqlite3.Xsqlite3_free(tls, zQuery)
  5542  
  5543  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5544  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  5545  	}
  5546  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5547  		var pEntry uintptr
  5548  		var zStat uintptr = uintptr(0)
  5549  		for i = 0; i <= nCol; i++ {
  5550  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  5551  		}
  5552  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5553  			*(*int32)(unsafe.Pointer(aStat))++
  5554  			for i = 0; i < nCol; i++ {
  5555  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  5556  					break
  5557  				}
  5558  			}
  5559  			for ; i < nCol; i++ {
  5560  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  5561  			}
  5562  		}
  5563  
  5564  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5565  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  5566  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  5567  			if zStat == uintptr(0) {
  5568  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  5569  			}
  5570  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  5571  				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))))
  5572  			}
  5573  		}
  5574  
  5575  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5576  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  5577  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  5578  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  5579  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  5580  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  5581  		}
  5582  
  5583  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  5584  		if pEntry != 0 {
  5585  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  5586  		} else {
  5587  			sqlite3.Xsqlite3_free(tls, zStat)
  5588  		}
  5589  	}
  5590  	sqlite3.Xsqlite3_free(tls, aStat)
  5591  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  5592  
  5593  	return *(*int32)(unsafe.Pointer(bp + 112))
  5594  }
  5595  
  5596  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  5597  	bp := tls.Alloc(8)
  5598  	defer tls.Free(8)
  5599  
  5600  	var rc int32
  5601  	var zSql uintptr
  5602  
  5603  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5604  	if rc != SQLITE_OK {
  5605  		return rc
  5606  	}
  5607  
  5608  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  5609  		ts+1404, libc.VaList(bp, zTab))
  5610  	if zSql == uintptr(0) {
  5611  		return SQLITE_NOMEM
  5612  	}
  5613  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  5614  	sqlite3.Xsqlite3_free(tls, zSql)
  5615  
  5616  	return rc
  5617  }
  5618  
  5619  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5620  	bp := tls.Alloc(64)
  5621  	defer tls.Free(64)
  5622  
  5623  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  5624  	*(*int32)(unsafe.Pointer(bp)) = 0
  5625  	var pCtx uintptr = uintptr(0)
  5626  
  5627  	var i int32
  5628  	var iPrev i64 = int64(-100000)
  5629  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5630  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  5631  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  5632  
  5633  	var zAllIndex uintptr = ts + 1480
  5634  	var zIndexXInfo uintptr = ts + 1594
  5635  	var zWrite uintptr = ts + 1649
  5636  
  5637  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  5638  		return SQLITE_OK
  5639  	}
  5640  
  5641  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  5642  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5643  		return *(*int32)(unsafe.Pointer(bp + 4))
  5644  	}
  5645  
  5646  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  5647  
  5648  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5649  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  5650  		pCtx = idxMalloc(tls, bp+4, nByte)
  5651  	}
  5652  
  5653  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5654  		var dbrem uintptr = func() uintptr {
  5655  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5656  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5657  			}
  5658  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5659  		}()
  5660  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5661  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  5662  				f func(*libc.TLS, uintptr, int32, uintptr)
  5663  			}{idxRemFunc})), uintptr(0), uintptr(0))
  5664  	}
  5665  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5666  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5667  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  5668  				f func(*libc.TLS, uintptr, int32, uintptr)
  5669  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  5670  	}
  5671  
  5672  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5673  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  5674  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  5675  	}
  5676  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5677  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  5678  	}
  5679  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5680  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  5681  	}
  5682  
  5683  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5684  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5685  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5686  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5687  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  5688  			continue
  5689  		}
  5690  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  5691  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  5692  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  5693  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  5694  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  5695  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  5696  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5697  				break
  5698  			}
  5699  		}
  5700  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  5701  		iPrev = iRowid
  5702  	}
  5703  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  5704  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  5705  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5706  	}
  5707  
  5708  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5709  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  5710  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  5711  
  5712  	if pCtx != 0 {
  5713  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  5714  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  5715  		}
  5716  		sqlite3.Xsqlite3_free(tls, pCtx)
  5717  	}
  5718  
  5719  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5720  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  5721  	}
  5722  
  5723  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5724  	return *(*int32)(unsafe.Pointer(bp + 4))
  5725  }
  5726  
  5727  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  5728  	bp := tls.Alloc(32)
  5729  	defer tls.Free(32)
  5730  
  5731  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5732  	var pNew uintptr
  5733  
  5734  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  5735  
  5736  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5737  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  5738  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  5739  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  5740  	}
  5741  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5742  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  5743  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5744  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  5745  		}
  5746  	}
  5747  
  5748  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5749  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5750  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  5751  			ts+1766, 0)
  5752  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  5753  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5754  			if zSql != 0 {
  5755  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5756  			}
  5757  		}
  5758  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5759  	}
  5760  
  5761  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5762  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  5763  	}
  5764  
  5765  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5766  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  5767  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  5768  		}{idxAuthCallback})), pNew)
  5769  	}
  5770  
  5771  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5772  		sqlite3_expert_destroy(tls, pNew)
  5773  		pNew = uintptr(0)
  5774  	}
  5775  	return pNew
  5776  }
  5777  
  5778  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  5779  	var rc int32 = SQLITE_OK
  5780  	var ap va_list
  5781  	_ = ap
  5782  	ap = va
  5783  	switch op {
  5784  	case EXPERT_CONFIG_SAMPLE:
  5785  		{
  5786  			var iVal int32 = libc.VaInt32(&ap)
  5787  			if iVal < 0 {
  5788  				iVal = 0
  5789  			}
  5790  			if iVal > 100 {
  5791  				iVal = 100
  5792  			}
  5793  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  5794  			break
  5795  
  5796  		}
  5797  	default:
  5798  		rc = SQLITE_NOTFOUND
  5799  		break
  5800  	}
  5801  
  5802  	_ = ap
  5803  	return rc
  5804  }
  5805  
  5806  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  5807  	bp := tls.Alloc(20)
  5808  	defer tls.Free(20)
  5809  
  5810  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  5811  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5812  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5813  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  5814  
  5815  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  5816  		return SQLITE_MISUSE
  5817  	}
  5818  
  5819  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  5820  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5821  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  5822  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5823  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  5824  				var pNew uintptr
  5825  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5826  				var n int32 = int32(libc.Xstrlen(tls, z))
  5827  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  5828  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5829  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  5830  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1))
  5831  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5832  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5833  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5834  					}
  5835  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  5836  				}
  5837  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5838  			}
  5839  		} else {
  5840  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5841  		}
  5842  	}
  5843  
  5844  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5845  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  5846  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  5847  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  5848  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  5849  	}
  5850  
  5851  	return *(*int32)(unsafe.Pointer(bp + 16))
  5852  }
  5853  
  5854  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5855  	bp := tls.Alloc(28)
  5856  	defer tls.Free(28)
  5857  
  5858  	var pEntry uintptr
  5859  
  5860  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  5861  
  5862  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5863  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  5864  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  5865  		if pzErr != 0 {
  5866  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  5867  		}
  5868  		return *(*int32)(unsafe.Pointer(bp + 24))
  5869  	}
  5870  
  5871  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5872  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  5873  	}
  5874  
  5875  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  5876  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  5877  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  5878  				func() uintptr {
  5879  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  5880  						return ts + 1918
  5881  					}
  5882  					return ts + 584
  5883  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  5884  	}
  5885  
  5886  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5887  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  5888  	}
  5889  
  5890  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5891  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  5892  	}
  5893  	return *(*int32)(unsafe.Pointer(bp + 24))
  5894  }
  5895  
  5896  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  5897  	var nRet int32 = 0
  5898  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5899  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5900  	}
  5901  	return nRet
  5902  }
  5903  
  5904  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  5905  	var zRet uintptr = uintptr(0)
  5906  	var pStmt uintptr
  5907  
  5908  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  5909  		return uintptr(0)
  5910  	}
  5911  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  5912  	}
  5913  	switch eReport {
  5914  	case EXPERT_REPORT_SQL:
  5915  		if pStmt != 0 {
  5916  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  5917  		}
  5918  		break
  5919  	case EXPERT_REPORT_INDEXES:
  5920  		if pStmt != 0 {
  5921  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  5922  		}
  5923  		break
  5924  	case EXPERT_REPORT_PLAN:
  5925  		if pStmt != 0 {
  5926  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  5927  		}
  5928  		break
  5929  	case EXPERT_REPORT_CANDIDATES:
  5930  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  5931  		break
  5932  	}
  5933  	return zRet
  5934  }
  5935  
  5936  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  5937  	if p != 0 {
  5938  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  5939  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  5940  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  5941  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  5942  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  5943  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  5944  		idxHashClear(tls, p+88)
  5945  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  5946  		sqlite3.Xsqlite3_free(tls, p)
  5947  	}
  5948  }
  5949  
  5950  type ClientData = uintptr
  5951  
  5952  type Tcl_WideInt = int64
  5953  type Tcl_WideUInt = uint64
  5954  
  5955  type stat = struct {
  5956  	Fst_mode  mode_t
  5957  	Fst_dev   dev_t
  5958  	Fst_ino   ino_t
  5959  	Fst_nlink nlink_t
  5960  	Fst_uid   uid_t
  5961  	Fst_gid   gid_t
  5962  	Fst_rdev  dev_t
  5963  	Fst_atim  struct {
  5964  		Ftv_sec  time_t
  5965  		Ftv_nsec int64
  5966  	}
  5967  	Fst_mtim struct {
  5968  		Ftv_sec  time_t
  5969  		Ftv_nsec int64
  5970  	}
  5971  	Fst_ctim struct {
  5972  		Ftv_sec  time_t
  5973  		Ftv_nsec int64
  5974  	}
  5975  	Fst_size       off_t
  5976  	Fst_blocks     blkcnt_t
  5977  	Fst_blksize    blksize_t
  5978  	Fst_flags      u_int32_t
  5979  	Fst_gen        u_int32_t
  5980  	F__ccgo_pad1   [4]byte
  5981  	F__st_birthtim struct {
  5982  		Ftv_sec  time_t
  5983  		Ftv_nsec int64
  5984  	}
  5985  }
  5986  
  5987  type Tcl_Interp1 = struct {
  5988  	FresultDontUse    uintptr
  5989  	FfreeProcDontUse  uintptr
  5990  	FerrorLineDontUse int32
  5991  	F__ccgo_pad1      [4]byte
  5992  }
  5993  
  5994  type Tcl_Interp = Tcl_Interp1
  5995  
  5996  type Tcl_AsyncHandler = uintptr
  5997  type Tcl_Channel = uintptr
  5998  type Tcl_ChannelTypeVersion = uintptr
  5999  type Tcl_Command = uintptr
  6000  type Tcl_Condition = uintptr
  6001  type Tcl_Dict = uintptr
  6002  type Tcl_EncodingState = uintptr
  6003  type Tcl_Encoding = uintptr
  6004  type Tcl_Event1 = struct {
  6005  	Fproc    uintptr
  6006  	FnextPtr uintptr
  6007  }
  6008  
  6009  type Tcl_Event = Tcl_Event1
  6010  type Tcl_InterpState = uintptr
  6011  type Tcl_LoadHandle = uintptr
  6012  type Tcl_Mutex = uintptr
  6013  type Tcl_Pid = uintptr
  6014  type Tcl_RegExp = uintptr
  6015  type Tcl_ThreadDataKey = uintptr
  6016  type Tcl_ThreadId = uintptr
  6017  type Tcl_TimerToken = uintptr
  6018  type Tcl_Trace = uintptr
  6019  type Tcl_Var = uintptr
  6020  type Tcl_ZlibStream = uintptr
  6021  
  6022  type Tcl_RegExpIndices1 = struct {
  6023  	Fstart int64
  6024  	Fend   int64
  6025  }
  6026  
  6027  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6028  
  6029  type Tcl_RegExpInfo1 = struct {
  6030  	Fnsubs       int32
  6031  	F__ccgo_pad1 [4]byte
  6032  	Fmatches     uintptr
  6033  	FextendStart int64
  6034  	Freserved    int64
  6035  }
  6036  
  6037  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6038  
  6039  type Tcl_Stat_ = uintptr
  6040  type Tcl_OldStat_ = uintptr
  6041  
  6042  type Tcl_ValueType = uint32
  6043  
  6044  type Tcl_Value1 = struct {
  6045  	Ftype        Tcl_ValueType
  6046  	F__ccgo_pad1 [4]byte
  6047  	FintValue    int64
  6048  	FdoubleValue float64
  6049  	FwideValue   Tcl_WideInt
  6050  }
  6051  
  6052  type Tcl_Value = Tcl_Value1
  6053  
  6054  type Tcl_Obj1 = struct {
  6055  	FrefCount    int32
  6056  	F__ccgo_pad1 [4]byte
  6057  	Fbytes       uintptr
  6058  	Flength      int32
  6059  	F__ccgo_pad2 [4]byte
  6060  	FtypePtr     uintptr
  6061  	FinternalRep struct {
  6062  		FlongValue   int64
  6063  		F__ccgo_pad1 [8]byte
  6064  	}
  6065  }
  6066  
  6067  type Tcl_ObjType1 = struct {
  6068  	Fname             uintptr
  6069  	FfreeIntRepProc   uintptr
  6070  	FdupIntRepProc    uintptr
  6071  	FupdateStringProc uintptr
  6072  	FsetFromAnyProc   uintptr
  6073  }
  6074  
  6075  type Tcl_ObjType = Tcl_ObjType1
  6076  
  6077  type Tcl_Obj = Tcl_Obj1
  6078  
  6079  type Tcl_SavedResult1 = struct {
  6080  	Fresult       uintptr
  6081  	FfreeProc     uintptr
  6082  	FobjResultPtr uintptr
  6083  	FappendResult uintptr
  6084  	FappendAvl    int32
  6085  	FappendUsed   int32
  6086  	FresultSpace  [201]int8
  6087  	F__ccgo_pad1  [7]byte
  6088  }
  6089  
  6090  type Tcl_SavedResult = Tcl_SavedResult1
  6091  
  6092  type Tcl_Namespace1 = struct {
  6093  	Fname       uintptr
  6094  	FfullName   uintptr
  6095  	FclientData ClientData
  6096  	FdeleteProc uintptr
  6097  	FparentPtr  uintptr
  6098  }
  6099  
  6100  type Tcl_Namespace = Tcl_Namespace1
  6101  
  6102  type Tcl_CallFrame1 = struct {
  6103  	FnsPtr       uintptr
  6104  	Fdummy1      int32
  6105  	Fdummy2      int32
  6106  	Fdummy3      uintptr
  6107  	Fdummy4      uintptr
  6108  	Fdummy5      uintptr
  6109  	Fdummy6      int32
  6110  	F__ccgo_pad1 [4]byte
  6111  	Fdummy7      uintptr
  6112  	Fdummy8      uintptr
  6113  	Fdummy9      int32
  6114  	F__ccgo_pad2 [4]byte
  6115  	Fdummy10     uintptr
  6116  	Fdummy11     uintptr
  6117  	Fdummy12     uintptr
  6118  	Fdummy13     uintptr
  6119  }
  6120  
  6121  type Tcl_CallFrame = Tcl_CallFrame1
  6122  
  6123  type Tcl_CmdInfo1 = struct {
  6124  	FisNativeObjectProc int32
  6125  	F__ccgo_pad1        [4]byte
  6126  	FobjProc            uintptr
  6127  	FobjClientData      ClientData
  6128  	Fproc               uintptr
  6129  	FclientData         ClientData
  6130  	FdeleteProc         uintptr
  6131  	FdeleteData         ClientData
  6132  	FnamespacePtr       uintptr
  6133  }
  6134  
  6135  type Tcl_CmdInfo = Tcl_CmdInfo1
  6136  
  6137  type Tcl_DString1 = struct {
  6138  	Fstring      uintptr
  6139  	Flength      int32
  6140  	FspaceAvl    int32
  6141  	FstaticSpace [200]int8
  6142  }
  6143  
  6144  type Tcl_DString = Tcl_DString1
  6145  
  6146  type Tcl_HashKeyType1 = struct {
  6147  	Fversion         int32
  6148  	Fflags           int32
  6149  	FhashKeyProc     uintptr
  6150  	FcompareKeysProc uintptr
  6151  	FallocEntryProc  uintptr
  6152  	FfreeEntryProc   uintptr
  6153  }
  6154  
  6155  type Tcl_HashKeyType = Tcl_HashKeyType1
  6156  type Tcl_HashTable1 = struct {
  6157  	Fbuckets       uintptr
  6158  	FstaticBuckets [4]uintptr
  6159  	FnumBuckets    int32
  6160  	FnumEntries    int32
  6161  	FrebuildSize   int32
  6162  	FdownShift     int32
  6163  	Fmask          int32
  6164  	FkeyType       int32
  6165  	FfindProc      uintptr
  6166  	FcreateProc    uintptr
  6167  	FtypePtr       uintptr
  6168  }
  6169  
  6170  type Tcl_HashTable = Tcl_HashTable1
  6171  type Tcl_HashEntry1 = struct {
  6172  	FnextPtr    uintptr
  6173  	FtablePtr   uintptr
  6174  	Fhash       uintptr
  6175  	FclientData ClientData
  6176  	Fkey        struct{ FoneWordValue uintptr }
  6177  }
  6178  
  6179  type Tcl_HashEntry = Tcl_HashEntry1
  6180  
  6181  type Tcl_HashSearch1 = struct {
  6182  	FtablePtr     uintptr
  6183  	FnextIndex    int32
  6184  	F__ccgo_pad1  [4]byte
  6185  	FnextEntryPtr uintptr
  6186  }
  6187  
  6188  type Tcl_HashSearch = Tcl_HashSearch1
  6189  
  6190  type Tcl_DictSearch = struct {
  6191  	Fnext          uintptr
  6192  	Fepoch         int32
  6193  	F__ccgo_pad1   [4]byte
  6194  	FdictionaryPtr Tcl_Dict
  6195  }
  6196  
  6197  type Tcl_QueuePosition = uint32
  6198  
  6199  type Tcl_Time1 = struct {
  6200  	Fsec  int64
  6201  	Fusec int64
  6202  }
  6203  
  6204  type Tcl_Time = Tcl_Time1
  6205  
  6206  type Tcl_ChannelType1 = struct {
  6207  	FtypeName         uintptr
  6208  	Fversion          Tcl_ChannelTypeVersion
  6209  	FcloseProc        uintptr
  6210  	FinputProc        uintptr
  6211  	FoutputProc       uintptr
  6212  	FseekProc         uintptr
  6213  	FsetOptionProc    uintptr
  6214  	FgetOptionProc    uintptr
  6215  	FwatchProc        uintptr
  6216  	FgetHandleProc    uintptr
  6217  	Fclose2Proc       uintptr
  6218  	FblockModeProc    uintptr
  6219  	FflushProc        uintptr
  6220  	FhandlerProc      uintptr
  6221  	FwideSeekProc     uintptr
  6222  	FthreadActionProc uintptr
  6223  	FtruncateProc     uintptr
  6224  }
  6225  
  6226  type Tcl_ChannelType = Tcl_ChannelType1
  6227  
  6228  type Tcl_PathType = uint32
  6229  
  6230  type Tcl_GlobTypeData1 = struct {
  6231  	Ftype       int32
  6232  	Fperm       int32
  6233  	FmacType    uintptr
  6234  	FmacCreator uintptr
  6235  }
  6236  
  6237  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  6238  
  6239  type utimbuf = struct {
  6240  	Factime  time_t
  6241  	Fmodtime time_t
  6242  }
  6243  
  6244  type Tcl_FSVersion = uintptr
  6245  
  6246  type Tcl_Filesystem1 = struct {
  6247  	FtypeName                 uintptr
  6248  	FstructureLength          int32
  6249  	F__ccgo_pad1              [4]byte
  6250  	Fversion                  Tcl_FSVersion
  6251  	FpathInFilesystemProc     uintptr
  6252  	FdupInternalRepProc       uintptr
  6253  	FfreeInternalRepProc      uintptr
  6254  	FinternalToNormalizedProc uintptr
  6255  	FcreateInternalRepProc    uintptr
  6256  	FnormalizePathProc        uintptr
  6257  	FfilesystemPathTypeProc   uintptr
  6258  	FfilesystemSeparatorProc  uintptr
  6259  	FstatProc                 uintptr
  6260  	FaccessProc               uintptr
  6261  	FopenFileChannelProc      uintptr
  6262  	FmatchInDirectoryProc     uintptr
  6263  	FutimeProc                uintptr
  6264  	FlinkProc                 uintptr
  6265  	FlistVolumesProc          uintptr
  6266  	FfileAttrStringsProc      uintptr
  6267  	FfileAttrsGetProc         uintptr
  6268  	FfileAttrsSetProc         uintptr
  6269  	FcreateDirectoryProc      uintptr
  6270  	FremoveDirectoryProc      uintptr
  6271  	FdeleteFileProc           uintptr
  6272  	FcopyFileProc             uintptr
  6273  	FrenameFileProc           uintptr
  6274  	FcopyDirectoryProc        uintptr
  6275  	FlstatProc                uintptr
  6276  	FloadFileProc             uintptr
  6277  	FgetCwdProc               uintptr
  6278  	FchdirProc                uintptr
  6279  }
  6280  
  6281  type Tcl_Filesystem = Tcl_Filesystem1
  6282  
  6283  type Tcl_NotifierProcs1 = struct {
  6284  	FsetTimerProc          uintptr
  6285  	FwaitForEventProc      uintptr
  6286  	FcreateFileHandlerProc uintptr
  6287  	FdeleteFileHandlerProc uintptr
  6288  	FinitNotifierProc      uintptr
  6289  	FfinalizeNotifierProc  uintptr
  6290  	FalertNotifierProc     uintptr
  6291  	FserviceModeHookProc   uintptr
  6292  }
  6293  
  6294  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  6295  
  6296  type Tcl_Token1 = struct {
  6297  	Ftype          int32
  6298  	F__ccgo_pad1   [4]byte
  6299  	Fstart         uintptr
  6300  	Fsize          int32
  6301  	FnumComponents int32
  6302  }
  6303  
  6304  type Tcl_Token = Tcl_Token1
  6305  
  6306  type Tcl_Parse1 = struct {
  6307  	FcommentStart    uintptr
  6308  	FcommentSize     int32
  6309  	F__ccgo_pad1     [4]byte
  6310  	FcommandStart    uintptr
  6311  	FcommandSize     int32
  6312  	FnumWords        int32
  6313  	FtokenPtr        uintptr
  6314  	FnumTokens       int32
  6315  	FtokensAvailable int32
  6316  	FerrorType       int32
  6317  	F__ccgo_pad2     [4]byte
  6318  	Fstring          uintptr
  6319  	Fend             uintptr
  6320  	Finterp          uintptr
  6321  	Fterm            uintptr
  6322  	Fincomplete      int32
  6323  	F__ccgo_pad3     [4]byte
  6324  	FstaticTokens    [20]Tcl_Token
  6325  }
  6326  
  6327  type Tcl_Parse = Tcl_Parse1
  6328  
  6329  type Tcl_EncodingType1 = struct {
  6330  	FencodingName uintptr
  6331  	FtoUtfProc    uintptr
  6332  	FfromUtfProc  uintptr
  6333  	FfreeProc     uintptr
  6334  	FclientData   ClientData
  6335  	FnullSize     int32
  6336  	F__ccgo_pad1  [4]byte
  6337  }
  6338  
  6339  type Tcl_EncodingType = Tcl_EncodingType1
  6340  
  6341  type Tcl_UniChar = uint16
  6342  
  6343  type Tcl_Config1 = struct {
  6344  	Fkey   uintptr
  6345  	Fvalue uintptr
  6346  }
  6347  
  6348  type Tcl_Config = Tcl_Config1
  6349  type mp_digit = uint32
  6350  
  6351  type Tcl_ArgvInfo = struct {
  6352  	Ftype        int32
  6353  	F__ccgo_pad1 [4]byte
  6354  	FkeyStr      uintptr
  6355  	FsrcPtr      uintptr
  6356  	FdstPtr      uintptr
  6357  	FhelpStr     uintptr
  6358  	FclientData  ClientData
  6359  }
  6360  
  6361  type TclPlatStubs1 = struct {
  6362  	Fmagic       int32
  6363  	F__ccgo_pad1 [4]byte
  6364  	Fhooks       uintptr
  6365  }
  6366  
  6367  type TclStubHooks = struct {
  6368  	FtclPlatStubs    uintptr
  6369  	FtclIntStubs     uintptr
  6370  	FtclIntPlatStubs uintptr
  6371  }
  6372  
  6373  type TclStubs1 = struct {
  6374  	Fmagic                                  int32
  6375  	F__ccgo_pad1                            [4]byte
  6376  	Fhooks                                  uintptr
  6377  	Ftcl_PkgProvideEx                       uintptr
  6378  	Ftcl_PkgRequireEx                       uintptr
  6379  	Ftcl_Panic                              uintptr
  6380  	Ftcl_Alloc                              uintptr
  6381  	Ftcl_Free                               uintptr
  6382  	Ftcl_Realloc                            uintptr
  6383  	Ftcl_DbCkalloc                          uintptr
  6384  	Ftcl_DbCkfree                           uintptr
  6385  	Ftcl_DbCkrealloc                        uintptr
  6386  	Ftcl_CreateFileHandler                  uintptr
  6387  	Ftcl_DeleteFileHandler                  uintptr
  6388  	Ftcl_SetTimer                           uintptr
  6389  	Ftcl_Sleep                              uintptr
  6390  	Ftcl_WaitForEvent                       uintptr
  6391  	Ftcl_AppendAllObjTypes                  uintptr
  6392  	Ftcl_AppendStringsToObj                 uintptr
  6393  	Ftcl_AppendToObj                        uintptr
  6394  	Ftcl_ConcatObj                          uintptr
  6395  	Ftcl_ConvertToType                      uintptr
  6396  	Ftcl_DbDecrRefCount                     uintptr
  6397  	Ftcl_DbIncrRefCount                     uintptr
  6398  	Ftcl_DbIsShared                         uintptr
  6399  	Ftcl_DbNewBooleanObj                    uintptr
  6400  	Ftcl_DbNewByteArrayObj                  uintptr
  6401  	Ftcl_DbNewDoubleObj                     uintptr
  6402  	Ftcl_DbNewListObj                       uintptr
  6403  	Ftcl_DbNewLongObj                       uintptr
  6404  	Ftcl_DbNewObj                           uintptr
  6405  	Ftcl_DbNewStringObj                     uintptr
  6406  	Ftcl_DuplicateObj                       uintptr
  6407  	FtclFreeObj                             uintptr
  6408  	Ftcl_GetBoolean                         uintptr
  6409  	Ftcl_GetBooleanFromObj                  uintptr
  6410  	Ftcl_GetByteArrayFromObj                uintptr
  6411  	Ftcl_GetDouble                          uintptr
  6412  	Ftcl_GetDoubleFromObj                   uintptr
  6413  	Ftcl_GetIndexFromObj                    uintptr
  6414  	Ftcl_GetInt                             uintptr
  6415  	Ftcl_GetIntFromObj                      uintptr
  6416  	Ftcl_GetLongFromObj                     uintptr
  6417  	Ftcl_GetObjType                         uintptr
  6418  	Ftcl_GetStringFromObj                   uintptr
  6419  	Ftcl_InvalidateStringRep                uintptr
  6420  	Ftcl_ListObjAppendList                  uintptr
  6421  	Ftcl_ListObjAppendElement               uintptr
  6422  	Ftcl_ListObjGetElements                 uintptr
  6423  	Ftcl_ListObjIndex                       uintptr
  6424  	Ftcl_ListObjLength                      uintptr
  6425  	Ftcl_ListObjReplace                     uintptr
  6426  	Ftcl_NewBooleanObj                      uintptr
  6427  	Ftcl_NewByteArrayObj                    uintptr
  6428  	Ftcl_NewDoubleObj                       uintptr
  6429  	Ftcl_NewIntObj                          uintptr
  6430  	Ftcl_NewListObj                         uintptr
  6431  	Ftcl_NewLongObj                         uintptr
  6432  	Ftcl_NewObj                             uintptr
  6433  	Ftcl_NewStringObj                       uintptr
  6434  	Ftcl_SetBooleanObj                      uintptr
  6435  	Ftcl_SetByteArrayLength                 uintptr
  6436  	Ftcl_SetByteArrayObj                    uintptr
  6437  	Ftcl_SetDoubleObj                       uintptr
  6438  	Ftcl_SetIntObj                          uintptr
  6439  	Ftcl_SetListObj                         uintptr
  6440  	Ftcl_SetLongObj                         uintptr
  6441  	Ftcl_SetObjLength                       uintptr
  6442  	Ftcl_SetStringObj                       uintptr
  6443  	Ftcl_AddErrorInfo                       uintptr
  6444  	Ftcl_AddObjErrorInfo                    uintptr
  6445  	Ftcl_AllowExceptions                    uintptr
  6446  	Ftcl_AppendElement                      uintptr
  6447  	Ftcl_AppendResult                       uintptr
  6448  	Ftcl_AsyncCreate                        uintptr
  6449  	Ftcl_AsyncDelete                        uintptr
  6450  	Ftcl_AsyncInvoke                        uintptr
  6451  	Ftcl_AsyncMark                          uintptr
  6452  	Ftcl_AsyncReady                         uintptr
  6453  	Ftcl_BackgroundError                    uintptr
  6454  	Ftcl_Backslash                          uintptr
  6455  	Ftcl_BadChannelOption                   uintptr
  6456  	Ftcl_CallWhenDeleted                    uintptr
  6457  	Ftcl_CancelIdleCall                     uintptr
  6458  	Ftcl_Close                              uintptr
  6459  	Ftcl_CommandComplete                    uintptr
  6460  	Ftcl_Concat                             uintptr
  6461  	Ftcl_ConvertElement                     uintptr
  6462  	Ftcl_ConvertCountedElement              uintptr
  6463  	Ftcl_CreateAlias                        uintptr
  6464  	Ftcl_CreateAliasObj                     uintptr
  6465  	Ftcl_CreateChannel                      uintptr
  6466  	Ftcl_CreateChannelHandler               uintptr
  6467  	Ftcl_CreateCloseHandler                 uintptr
  6468  	Ftcl_CreateCommand                      uintptr
  6469  	Ftcl_CreateEventSource                  uintptr
  6470  	Ftcl_CreateExitHandler                  uintptr
  6471  	Ftcl_CreateInterp                       uintptr
  6472  	Ftcl_CreateMathFunc                     uintptr
  6473  	Ftcl_CreateObjCommand                   uintptr
  6474  	Ftcl_CreateSlave                        uintptr
  6475  	Ftcl_CreateTimerHandler                 uintptr
  6476  	Ftcl_CreateTrace                        uintptr
  6477  	Ftcl_DeleteAssocData                    uintptr
  6478  	Ftcl_DeleteChannelHandler               uintptr
  6479  	Ftcl_DeleteCloseHandler                 uintptr
  6480  	Ftcl_DeleteCommand                      uintptr
  6481  	Ftcl_DeleteCommandFromToken             uintptr
  6482  	Ftcl_DeleteEvents                       uintptr
  6483  	Ftcl_DeleteEventSource                  uintptr
  6484  	Ftcl_DeleteExitHandler                  uintptr
  6485  	Ftcl_DeleteHashEntry                    uintptr
  6486  	Ftcl_DeleteHashTable                    uintptr
  6487  	Ftcl_DeleteInterp                       uintptr
  6488  	Ftcl_DetachPids                         uintptr
  6489  	Ftcl_DeleteTimerHandler                 uintptr
  6490  	Ftcl_DeleteTrace                        uintptr
  6491  	Ftcl_DontCallWhenDeleted                uintptr
  6492  	Ftcl_DoOneEvent                         uintptr
  6493  	Ftcl_DoWhenIdle                         uintptr
  6494  	Ftcl_DStringAppend                      uintptr
  6495  	Ftcl_DStringAppendElement               uintptr
  6496  	Ftcl_DStringEndSublist                  uintptr
  6497  	Ftcl_DStringFree                        uintptr
  6498  	Ftcl_DStringGetResult                   uintptr
  6499  	Ftcl_DStringInit                        uintptr
  6500  	Ftcl_DStringResult                      uintptr
  6501  	Ftcl_DStringSetLength                   uintptr
  6502  	Ftcl_DStringStartSublist                uintptr
  6503  	Ftcl_Eof                                uintptr
  6504  	Ftcl_ErrnoId                            uintptr
  6505  	Ftcl_ErrnoMsg                           uintptr
  6506  	Ftcl_Eval                               uintptr
  6507  	Ftcl_EvalFile                           uintptr
  6508  	Ftcl_EvalObj                            uintptr
  6509  	Ftcl_EventuallyFree                     uintptr
  6510  	Ftcl_Exit                               uintptr
  6511  	Ftcl_ExposeCommand                      uintptr
  6512  	Ftcl_ExprBoolean                        uintptr
  6513  	Ftcl_ExprBooleanObj                     uintptr
  6514  	Ftcl_ExprDouble                         uintptr
  6515  	Ftcl_ExprDoubleObj                      uintptr
  6516  	Ftcl_ExprLong                           uintptr
  6517  	Ftcl_ExprLongObj                        uintptr
  6518  	Ftcl_ExprObj                            uintptr
  6519  	Ftcl_ExprString                         uintptr
  6520  	Ftcl_Finalize                           uintptr
  6521  	Ftcl_FindExecutable                     uintptr
  6522  	Ftcl_FirstHashEntry                     uintptr
  6523  	Ftcl_Flush                              uintptr
  6524  	Ftcl_FreeResult                         uintptr
  6525  	Ftcl_GetAlias                           uintptr
  6526  	Ftcl_GetAliasObj                        uintptr
  6527  	Ftcl_GetAssocData                       uintptr
  6528  	Ftcl_GetChannel                         uintptr
  6529  	Ftcl_GetChannelBufferSize               uintptr
  6530  	Ftcl_GetChannelHandle                   uintptr
  6531  	Ftcl_GetChannelInstanceData             uintptr
  6532  	Ftcl_GetChannelMode                     uintptr
  6533  	Ftcl_GetChannelName                     uintptr
  6534  	Ftcl_GetChannelOption                   uintptr
  6535  	Ftcl_GetChannelType                     uintptr
  6536  	Ftcl_GetCommandInfo                     uintptr
  6537  	Ftcl_GetCommandName                     uintptr
  6538  	Ftcl_GetErrno                           uintptr
  6539  	Ftcl_GetHostName                        uintptr
  6540  	Ftcl_GetInterpPath                      uintptr
  6541  	Ftcl_GetMaster                          uintptr
  6542  	Ftcl_GetNameOfExecutable                uintptr
  6543  	Ftcl_GetObjResult                       uintptr
  6544  	Ftcl_GetOpenFile                        uintptr
  6545  	Ftcl_GetPathType                        uintptr
  6546  	Ftcl_Gets                               uintptr
  6547  	Ftcl_GetsObj                            uintptr
  6548  	Ftcl_GetServiceMode                     uintptr
  6549  	Ftcl_GetSlave                           uintptr
  6550  	Ftcl_GetStdChannel                      uintptr
  6551  	Ftcl_GetStringResult                    uintptr
  6552  	Ftcl_GetVar                             uintptr
  6553  	Ftcl_GetVar2                            uintptr
  6554  	Ftcl_GlobalEval                         uintptr
  6555  	Ftcl_GlobalEvalObj                      uintptr
  6556  	Ftcl_HideCommand                        uintptr
  6557  	Ftcl_Init                               uintptr
  6558  	Ftcl_InitHashTable                      uintptr
  6559  	Ftcl_InputBlocked                       uintptr
  6560  	Ftcl_InputBuffered                      uintptr
  6561  	Ftcl_InterpDeleted                      uintptr
  6562  	Ftcl_IsSafe                             uintptr
  6563  	Ftcl_JoinPath                           uintptr
  6564  	Ftcl_LinkVar                            uintptr
  6565  	Freserved188                            uintptr
  6566  	Ftcl_MakeFileChannel                    uintptr
  6567  	Ftcl_MakeSafe                           uintptr
  6568  	Ftcl_MakeTcpClientChannel               uintptr
  6569  	Ftcl_Merge                              uintptr
  6570  	Ftcl_NextHashEntry                      uintptr
  6571  	Ftcl_NotifyChannel                      uintptr
  6572  	Ftcl_ObjGetVar2                         uintptr
  6573  	Ftcl_ObjSetVar2                         uintptr
  6574  	Ftcl_OpenCommandChannel                 uintptr
  6575  	Ftcl_OpenFileChannel                    uintptr
  6576  	Ftcl_OpenTcpClient                      uintptr
  6577  	Ftcl_OpenTcpServer                      uintptr
  6578  	Ftcl_Preserve                           uintptr
  6579  	Ftcl_PrintDouble                        uintptr
  6580  	Ftcl_PutEnv                             uintptr
  6581  	Ftcl_PosixError                         uintptr
  6582  	Ftcl_QueueEvent                         uintptr
  6583  	Ftcl_Read                               uintptr
  6584  	Ftcl_ReapDetachedProcs                  uintptr
  6585  	Ftcl_RecordAndEval                      uintptr
  6586  	Ftcl_RecordAndEvalObj                   uintptr
  6587  	Ftcl_RegisterChannel                    uintptr
  6588  	Ftcl_RegisterObjType                    uintptr
  6589  	Ftcl_RegExpCompile                      uintptr
  6590  	Ftcl_RegExpExec                         uintptr
  6591  	Ftcl_RegExpMatch                        uintptr
  6592  	Ftcl_RegExpRange                        uintptr
  6593  	Ftcl_Release                            uintptr
  6594  	Ftcl_ResetResult                        uintptr
  6595  	Ftcl_ScanElement                        uintptr
  6596  	Ftcl_ScanCountedElement                 uintptr
  6597  	Ftcl_SeekOld                            uintptr
  6598  	Ftcl_ServiceAll                         uintptr
  6599  	Ftcl_ServiceEvent                       uintptr
  6600  	Ftcl_SetAssocData                       uintptr
  6601  	Ftcl_SetChannelBufferSize               uintptr
  6602  	Ftcl_SetChannelOption                   uintptr
  6603  	Ftcl_SetCommandInfo                     uintptr
  6604  	Ftcl_SetErrno                           uintptr
  6605  	Ftcl_SetErrorCode                       uintptr
  6606  	Ftcl_SetMaxBlockTime                    uintptr
  6607  	Ftcl_SetPanicProc                       uintptr
  6608  	Ftcl_SetRecursionLimit                  uintptr
  6609  	Ftcl_SetResult                          uintptr
  6610  	Ftcl_SetServiceMode                     uintptr
  6611  	Ftcl_SetObjErrorCode                    uintptr
  6612  	Ftcl_SetObjResult                       uintptr
  6613  	Ftcl_SetStdChannel                      uintptr
  6614  	Ftcl_SetVar                             uintptr
  6615  	Ftcl_SetVar2                            uintptr
  6616  	Ftcl_SignalId                           uintptr
  6617  	Ftcl_SignalMsg                          uintptr
  6618  	Ftcl_SourceRCFile                       uintptr
  6619  	Ftcl_SplitList                          uintptr
  6620  	Ftcl_SplitPath                          uintptr
  6621  	Ftcl_StaticPackage                      uintptr
  6622  	Ftcl_StringMatch                        uintptr
  6623  	Ftcl_TellOld                            uintptr
  6624  	Ftcl_TraceVar                           uintptr
  6625  	Ftcl_TraceVar2                          uintptr
  6626  	Ftcl_TranslateFileName                  uintptr
  6627  	Ftcl_Ungets                             uintptr
  6628  	Ftcl_UnlinkVar                          uintptr
  6629  	Ftcl_UnregisterChannel                  uintptr
  6630  	Ftcl_UnsetVar                           uintptr
  6631  	Ftcl_UnsetVar2                          uintptr
  6632  	Ftcl_UntraceVar                         uintptr
  6633  	Ftcl_UntraceVar2                        uintptr
  6634  	Ftcl_UpdateLinkedVar                    uintptr
  6635  	Ftcl_UpVar                              uintptr
  6636  	Ftcl_UpVar2                             uintptr
  6637  	Ftcl_VarEval                            uintptr
  6638  	Ftcl_VarTraceInfo                       uintptr
  6639  	Ftcl_VarTraceInfo2                      uintptr
  6640  	Ftcl_Write                              uintptr
  6641  	Ftcl_WrongNumArgs                       uintptr
  6642  	Ftcl_DumpActiveMemory                   uintptr
  6643  	Ftcl_ValidateAllMemory                  uintptr
  6644  	Ftcl_AppendResultVA                     uintptr
  6645  	Ftcl_AppendStringsToObjVA               uintptr
  6646  	Ftcl_HashStats                          uintptr
  6647  	Ftcl_ParseVar                           uintptr
  6648  	Ftcl_PkgPresent                         uintptr
  6649  	Ftcl_PkgPresentEx                       uintptr
  6650  	Ftcl_PkgProvide                         uintptr
  6651  	Ftcl_PkgRequire                         uintptr
  6652  	Ftcl_SetErrorCodeVA                     uintptr
  6653  	Ftcl_VarEvalVA                          uintptr
  6654  	Ftcl_WaitPid                            uintptr
  6655  	Ftcl_PanicVA                            uintptr
  6656  	Ftcl_GetVersion                         uintptr
  6657  	Ftcl_InitMemory                         uintptr
  6658  	Ftcl_StackChannel                       uintptr
  6659  	Ftcl_UnstackChannel                     uintptr
  6660  	Ftcl_GetStackedChannel                  uintptr
  6661  	Ftcl_SetMainLoop                        uintptr
  6662  	Freserved285                            uintptr
  6663  	Ftcl_AppendObjToObj                     uintptr
  6664  	Ftcl_CreateEncoding                     uintptr
  6665  	Ftcl_CreateThreadExitHandler            uintptr
  6666  	Ftcl_DeleteThreadExitHandler            uintptr
  6667  	Ftcl_DiscardResult                      uintptr
  6668  	Ftcl_EvalEx                             uintptr
  6669  	Ftcl_EvalObjv                           uintptr
  6670  	Ftcl_EvalObjEx                          uintptr
  6671  	Ftcl_ExitThread                         uintptr
  6672  	Ftcl_ExternalToUtf                      uintptr
  6673  	Ftcl_ExternalToUtfDString               uintptr
  6674  	Ftcl_FinalizeThread                     uintptr
  6675  	Ftcl_FinalizeNotifier                   uintptr
  6676  	Ftcl_FreeEncoding                       uintptr
  6677  	Ftcl_GetCurrentThread                   uintptr
  6678  	Ftcl_GetEncoding                        uintptr
  6679  	Ftcl_GetEncodingName                    uintptr
  6680  	Ftcl_GetEncodingNames                   uintptr
  6681  	Ftcl_GetIndexFromObjStruct              uintptr
  6682  	Ftcl_GetThreadData                      uintptr
  6683  	Ftcl_GetVar2Ex                          uintptr
  6684  	Ftcl_InitNotifier                       uintptr
  6685  	Ftcl_MutexLock                          uintptr
  6686  	Ftcl_MutexUnlock                        uintptr
  6687  	Ftcl_ConditionNotify                    uintptr
  6688  	Ftcl_ConditionWait                      uintptr
  6689  	Ftcl_NumUtfChars                        uintptr
  6690  	Ftcl_ReadChars                          uintptr
  6691  	Ftcl_RestoreResult                      uintptr
  6692  	Ftcl_SaveResult                         uintptr
  6693  	Ftcl_SetSystemEncoding                  uintptr
  6694  	Ftcl_SetVar2Ex                          uintptr
  6695  	Ftcl_ThreadAlert                        uintptr
  6696  	Ftcl_ThreadQueueEvent                   uintptr
  6697  	Ftcl_UniCharAtIndex                     uintptr
  6698  	Ftcl_UniCharToLower                     uintptr
  6699  	Ftcl_UniCharToTitle                     uintptr
  6700  	Ftcl_UniCharToUpper                     uintptr
  6701  	Ftcl_UniCharToUtf                       uintptr
  6702  	Ftcl_UtfAtIndex                         uintptr
  6703  	Ftcl_UtfCharComplete                    uintptr
  6704  	Ftcl_UtfBackslash                       uintptr
  6705  	Ftcl_UtfFindFirst                       uintptr
  6706  	Ftcl_UtfFindLast                        uintptr
  6707  	Ftcl_UtfNext                            uintptr
  6708  	Ftcl_UtfPrev                            uintptr
  6709  	Ftcl_UtfToExternal                      uintptr
  6710  	Ftcl_UtfToExternalDString               uintptr
  6711  	Ftcl_UtfToLower                         uintptr
  6712  	Ftcl_UtfToTitle                         uintptr
  6713  	Ftcl_UtfToUniChar                       uintptr
  6714  	Ftcl_UtfToUpper                         uintptr
  6715  	Ftcl_WriteChars                         uintptr
  6716  	Ftcl_WriteObj                           uintptr
  6717  	Ftcl_GetString                          uintptr
  6718  	Ftcl_GetDefaultEncodingDir              uintptr
  6719  	Ftcl_SetDefaultEncodingDir              uintptr
  6720  	Ftcl_AlertNotifier                      uintptr
  6721  	Ftcl_ServiceModeHook                    uintptr
  6722  	Ftcl_UniCharIsAlnum                     uintptr
  6723  	Ftcl_UniCharIsAlpha                     uintptr
  6724  	Ftcl_UniCharIsDigit                     uintptr
  6725  	Ftcl_UniCharIsLower                     uintptr
  6726  	Ftcl_UniCharIsSpace                     uintptr
  6727  	Ftcl_UniCharIsUpper                     uintptr
  6728  	Ftcl_UniCharIsWordChar                  uintptr
  6729  	Ftcl_UniCharLen                         uintptr
  6730  	Ftcl_UniCharNcmp                        uintptr
  6731  	Ftcl_UniCharToUtfDString                uintptr
  6732  	Ftcl_UtfToUniCharDString                uintptr
  6733  	Ftcl_GetRegExpFromObj                   uintptr
  6734  	Ftcl_EvalTokens                         uintptr
  6735  	Ftcl_FreeParse                          uintptr
  6736  	Ftcl_LogCommandInfo                     uintptr
  6737  	Ftcl_ParseBraces                        uintptr
  6738  	Ftcl_ParseCommand                       uintptr
  6739  	Ftcl_ParseExpr                          uintptr
  6740  	Ftcl_ParseQuotedString                  uintptr
  6741  	Ftcl_ParseVarName                       uintptr
  6742  	Ftcl_GetCwd                             uintptr
  6743  	Ftcl_Chdir                              uintptr
  6744  	Ftcl_Access                             uintptr
  6745  	Ftcl_Stat                               uintptr
  6746  	Ftcl_UtfNcmp                            uintptr
  6747  	Ftcl_UtfNcasecmp                        uintptr
  6748  	Ftcl_StringCaseMatch                    uintptr
  6749  	Ftcl_UniCharIsControl                   uintptr
  6750  	Ftcl_UniCharIsGraph                     uintptr
  6751  	Ftcl_UniCharIsPrint                     uintptr
  6752  	Ftcl_UniCharIsPunct                     uintptr
  6753  	Ftcl_RegExpExecObj                      uintptr
  6754  	Ftcl_RegExpGetInfo                      uintptr
  6755  	Ftcl_NewUnicodeObj                      uintptr
  6756  	Ftcl_SetUnicodeObj                      uintptr
  6757  	Ftcl_GetCharLength                      uintptr
  6758  	Ftcl_GetUniChar                         uintptr
  6759  	Ftcl_GetUnicode                         uintptr
  6760  	Ftcl_GetRange                           uintptr
  6761  	Ftcl_AppendUnicodeToObj                 uintptr
  6762  	Ftcl_RegExpMatchObj                     uintptr
  6763  	Ftcl_SetNotifier                        uintptr
  6764  	Ftcl_GetAllocMutex                      uintptr
  6765  	Ftcl_GetChannelNames                    uintptr
  6766  	Ftcl_GetChannelNamesEx                  uintptr
  6767  	Ftcl_ProcObjCmd                         uintptr
  6768  	Ftcl_ConditionFinalize                  uintptr
  6769  	Ftcl_MutexFinalize                      uintptr
  6770  	Ftcl_CreateThread                       uintptr
  6771  	Ftcl_ReadRaw                            uintptr
  6772  	Ftcl_WriteRaw                           uintptr
  6773  	Ftcl_GetTopChannel                      uintptr
  6774  	Ftcl_ChannelBuffered                    uintptr
  6775  	Ftcl_ChannelName                        uintptr
  6776  	Ftcl_ChannelVersion                     uintptr
  6777  	Ftcl_ChannelBlockModeProc               uintptr
  6778  	Ftcl_ChannelCloseProc                   uintptr
  6779  	Ftcl_ChannelClose2Proc                  uintptr
  6780  	Ftcl_ChannelInputProc                   uintptr
  6781  	Ftcl_ChannelOutputProc                  uintptr
  6782  	Ftcl_ChannelSeekProc                    uintptr
  6783  	Ftcl_ChannelSetOptionProc               uintptr
  6784  	Ftcl_ChannelGetOptionProc               uintptr
  6785  	Ftcl_ChannelWatchProc                   uintptr
  6786  	Ftcl_ChannelGetHandleProc               uintptr
  6787  	Ftcl_ChannelFlushProc                   uintptr
  6788  	Ftcl_ChannelHandlerProc                 uintptr
  6789  	Ftcl_JoinThread                         uintptr
  6790  	Ftcl_IsChannelShared                    uintptr
  6791  	Ftcl_IsChannelRegistered                uintptr
  6792  	Ftcl_CutChannel                         uintptr
  6793  	Ftcl_SpliceChannel                      uintptr
  6794  	Ftcl_ClearChannelHandlers               uintptr
  6795  	Ftcl_IsChannelExisting                  uintptr
  6796  	Ftcl_UniCharNcasecmp                    uintptr
  6797  	Ftcl_UniCharCaseMatch                   uintptr
  6798  	Ftcl_FindHashEntry                      uintptr
  6799  	Ftcl_CreateHashEntry                    uintptr
  6800  	Ftcl_InitCustomHashTable                uintptr
  6801  	Ftcl_InitObjHashTable                   uintptr
  6802  	Ftcl_CommandTraceInfo                   uintptr
  6803  	Ftcl_TraceCommand                       uintptr
  6804  	Ftcl_UntraceCommand                     uintptr
  6805  	Ftcl_AttemptAlloc                       uintptr
  6806  	Ftcl_AttemptDbCkalloc                   uintptr
  6807  	Ftcl_AttemptRealloc                     uintptr
  6808  	Ftcl_AttemptDbCkrealloc                 uintptr
  6809  	Ftcl_AttemptSetObjLength                uintptr
  6810  	Ftcl_GetChannelThread                   uintptr
  6811  	Ftcl_GetUnicodeFromObj                  uintptr
  6812  	Ftcl_GetMathFuncInfo                    uintptr
  6813  	Ftcl_ListMathFuncs                      uintptr
  6814  	Ftcl_SubstObj                           uintptr
  6815  	Ftcl_DetachChannel                      uintptr
  6816  	Ftcl_IsStandardChannel                  uintptr
  6817  	Ftcl_FSCopyFile                         uintptr
  6818  	Ftcl_FSCopyDirectory                    uintptr
  6819  	Ftcl_FSCreateDirectory                  uintptr
  6820  	Ftcl_FSDeleteFile                       uintptr
  6821  	Ftcl_FSLoadFile                         uintptr
  6822  	Ftcl_FSMatchInDirectory                 uintptr
  6823  	Ftcl_FSLink                             uintptr
  6824  	Ftcl_FSRemoveDirectory                  uintptr
  6825  	Ftcl_FSRenameFile                       uintptr
  6826  	Ftcl_FSLstat                            uintptr
  6827  	Ftcl_FSUtime                            uintptr
  6828  	Ftcl_FSFileAttrsGet                     uintptr
  6829  	Ftcl_FSFileAttrsSet                     uintptr
  6830  	Ftcl_FSFileAttrStrings                  uintptr
  6831  	Ftcl_FSStat                             uintptr
  6832  	Ftcl_FSAccess                           uintptr
  6833  	Ftcl_FSOpenFileChannel                  uintptr
  6834  	Ftcl_FSGetCwd                           uintptr
  6835  	Ftcl_FSChdir                            uintptr
  6836  	Ftcl_FSConvertToPathType                uintptr
  6837  	Ftcl_FSJoinPath                         uintptr
  6838  	Ftcl_FSSplitPath                        uintptr
  6839  	Ftcl_FSEqualPaths                       uintptr
  6840  	Ftcl_FSGetNormalizedPath                uintptr
  6841  	Ftcl_FSJoinToPath                       uintptr
  6842  	Ftcl_FSGetInternalRep                   uintptr
  6843  	Ftcl_FSGetTranslatedPath                uintptr
  6844  	Ftcl_FSEvalFile                         uintptr
  6845  	Ftcl_FSNewNativePath                    uintptr
  6846  	Ftcl_FSGetNativePath                    uintptr
  6847  	Ftcl_FSFileSystemInfo                   uintptr
  6848  	Ftcl_FSPathSeparator                    uintptr
  6849  	Ftcl_FSListVolumes                      uintptr
  6850  	Ftcl_FSRegister                         uintptr
  6851  	Ftcl_FSUnregister                       uintptr
  6852  	Ftcl_FSData                             uintptr
  6853  	Ftcl_FSGetTranslatedStringPath          uintptr
  6854  	Ftcl_FSGetFileSystemForPath             uintptr
  6855  	Ftcl_FSGetPathType                      uintptr
  6856  	Ftcl_OutputBuffered                     uintptr
  6857  	Ftcl_FSMountsChanged                    uintptr
  6858  	Ftcl_EvalTokensStandard                 uintptr
  6859  	Ftcl_GetTime                            uintptr
  6860  	Ftcl_CreateObjTrace                     uintptr
  6861  	Ftcl_GetCommandInfoFromToken            uintptr
  6862  	Ftcl_SetCommandInfoFromToken            uintptr
  6863  	Ftcl_DbNewWideIntObj                    uintptr
  6864  	Ftcl_GetWideIntFromObj                  uintptr
  6865  	Ftcl_NewWideIntObj                      uintptr
  6866  	Ftcl_SetWideIntObj                      uintptr
  6867  	Ftcl_AllocStatBuf                       uintptr
  6868  	Ftcl_Seek                               uintptr
  6869  	Ftcl_Tell                               uintptr
  6870  	Ftcl_ChannelWideSeekProc                uintptr
  6871  	Ftcl_DictObjPut                         uintptr
  6872  	Ftcl_DictObjGet                         uintptr
  6873  	Ftcl_DictObjRemove                      uintptr
  6874  	Ftcl_DictObjSize                        uintptr
  6875  	Ftcl_DictObjFirst                       uintptr
  6876  	Ftcl_DictObjNext                        uintptr
  6877  	Ftcl_DictObjDone                        uintptr
  6878  	Ftcl_DictObjPutKeyList                  uintptr
  6879  	Ftcl_DictObjRemoveKeyList               uintptr
  6880  	Ftcl_NewDictObj                         uintptr
  6881  	Ftcl_DbNewDictObj                       uintptr
  6882  	Ftcl_RegisterConfig                     uintptr
  6883  	Ftcl_CreateNamespace                    uintptr
  6884  	Ftcl_DeleteNamespace                    uintptr
  6885  	Ftcl_AppendExportList                   uintptr
  6886  	Ftcl_Export                             uintptr
  6887  	Ftcl_Import                             uintptr
  6888  	Ftcl_ForgetImport                       uintptr
  6889  	Ftcl_GetCurrentNamespace                uintptr
  6890  	Ftcl_GetGlobalNamespace                 uintptr
  6891  	Ftcl_FindNamespace                      uintptr
  6892  	Ftcl_FindCommand                        uintptr
  6893  	Ftcl_GetCommandFromObj                  uintptr
  6894  	Ftcl_GetCommandFullName                 uintptr
  6895  	Ftcl_FSEvalFileEx                       uintptr
  6896  	Ftcl_SetExitProc                        uintptr
  6897  	Ftcl_LimitAddHandler                    uintptr
  6898  	Ftcl_LimitRemoveHandler                 uintptr
  6899  	Ftcl_LimitReady                         uintptr
  6900  	Ftcl_LimitCheck                         uintptr
  6901  	Ftcl_LimitExceeded                      uintptr
  6902  	Ftcl_LimitSetCommands                   uintptr
  6903  	Ftcl_LimitSetTime                       uintptr
  6904  	Ftcl_LimitSetGranularity                uintptr
  6905  	Ftcl_LimitTypeEnabled                   uintptr
  6906  	Ftcl_LimitTypeExceeded                  uintptr
  6907  	Ftcl_LimitTypeSet                       uintptr
  6908  	Ftcl_LimitTypeReset                     uintptr
  6909  	Ftcl_LimitGetCommands                   uintptr
  6910  	Ftcl_LimitGetTime                       uintptr
  6911  	Ftcl_LimitGetGranularity                uintptr
  6912  	Ftcl_SaveInterpState                    uintptr
  6913  	Ftcl_RestoreInterpState                 uintptr
  6914  	Ftcl_DiscardInterpState                 uintptr
  6915  	Ftcl_SetReturnOptions                   uintptr
  6916  	Ftcl_GetReturnOptions                   uintptr
  6917  	Ftcl_IsEnsemble                         uintptr
  6918  	Ftcl_CreateEnsemble                     uintptr
  6919  	Ftcl_FindEnsemble                       uintptr
  6920  	Ftcl_SetEnsembleSubcommandList          uintptr
  6921  	Ftcl_SetEnsembleMappingDict             uintptr
  6922  	Ftcl_SetEnsembleUnknownHandler          uintptr
  6923  	Ftcl_SetEnsembleFlags                   uintptr
  6924  	Ftcl_GetEnsembleSubcommandList          uintptr
  6925  	Ftcl_GetEnsembleMappingDict             uintptr
  6926  	Ftcl_GetEnsembleUnknownHandler          uintptr
  6927  	Ftcl_GetEnsembleFlags                   uintptr
  6928  	Ftcl_GetEnsembleNamespace               uintptr
  6929  	Ftcl_SetTimeProc                        uintptr
  6930  	Ftcl_QueryTimeProc                      uintptr
  6931  	Ftcl_ChannelThreadActionProc            uintptr
  6932  	Ftcl_NewBignumObj                       uintptr
  6933  	Ftcl_DbNewBignumObj                     uintptr
  6934  	Ftcl_SetBignumObj                       uintptr
  6935  	Ftcl_GetBignumFromObj                   uintptr
  6936  	Ftcl_TakeBignumFromObj                  uintptr
  6937  	Ftcl_TruncateChannel                    uintptr
  6938  	Ftcl_ChannelTruncateProc                uintptr
  6939  	Ftcl_SetChannelErrorInterp              uintptr
  6940  	Ftcl_GetChannelErrorInterp              uintptr
  6941  	Ftcl_SetChannelError                    uintptr
  6942  	Ftcl_GetChannelError                    uintptr
  6943  	Ftcl_InitBignumFromDouble               uintptr
  6944  	Ftcl_GetNamespaceUnknownHandler         uintptr
  6945  	Ftcl_SetNamespaceUnknownHandler         uintptr
  6946  	Ftcl_GetEncodingFromObj                 uintptr
  6947  	Ftcl_GetEncodingSearchPath              uintptr
  6948  	Ftcl_SetEncodingSearchPath              uintptr
  6949  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  6950  	Ftcl_PkgRequireProc                     uintptr
  6951  	Ftcl_AppendObjToErrorInfo               uintptr
  6952  	Ftcl_AppendLimitedToObj                 uintptr
  6953  	Ftcl_Format                             uintptr
  6954  	Ftcl_AppendFormatToObj                  uintptr
  6955  	Ftcl_ObjPrintf                          uintptr
  6956  	Ftcl_AppendPrintfToObj                  uintptr
  6957  	Ftcl_CancelEval                         uintptr
  6958  	Ftcl_Canceled                           uintptr
  6959  	Ftcl_CreatePipe                         uintptr
  6960  	Ftcl_NRCreateCommand                    uintptr
  6961  	Ftcl_NREvalObj                          uintptr
  6962  	Ftcl_NREvalObjv                         uintptr
  6963  	Ftcl_NRCmdSwap                          uintptr
  6964  	Ftcl_NRAddCallback                      uintptr
  6965  	Ftcl_NRCallObjProc                      uintptr
  6966  	Ftcl_GetFSDeviceFromStat                uintptr
  6967  	Ftcl_GetFSInodeFromStat                 uintptr
  6968  	Ftcl_GetModeFromStat                    uintptr
  6969  	Ftcl_GetLinkCountFromStat               uintptr
  6970  	Ftcl_GetUserIdFromStat                  uintptr
  6971  	Ftcl_GetGroupIdFromStat                 uintptr
  6972  	Ftcl_GetDeviceTypeFromStat              uintptr
  6973  	Ftcl_GetAccessTimeFromStat              uintptr
  6974  	Ftcl_GetModificationTimeFromStat        uintptr
  6975  	Ftcl_GetChangeTimeFromStat              uintptr
  6976  	Ftcl_GetSizeFromStat                    uintptr
  6977  	Ftcl_GetBlocksFromStat                  uintptr
  6978  	Ftcl_GetBlockSizeFromStat               uintptr
  6979  	Ftcl_SetEnsembleParameterList           uintptr
  6980  	Ftcl_GetEnsembleParameterList           uintptr
  6981  	Ftcl_ParseArgsObjv                      uintptr
  6982  	Ftcl_GetErrorLine                       uintptr
  6983  	Ftcl_SetErrorLine                       uintptr
  6984  	Ftcl_TransferResult                     uintptr
  6985  	Ftcl_InterpActive                       uintptr
  6986  	Ftcl_BackgroundException                uintptr
  6987  	Ftcl_ZlibDeflate                        uintptr
  6988  	Ftcl_ZlibInflate                        uintptr
  6989  	Ftcl_ZlibCRC32                          uintptr
  6990  	Ftcl_ZlibAdler32                        uintptr
  6991  	Ftcl_ZlibStreamInit                     uintptr
  6992  	Ftcl_ZlibStreamGetCommandName           uintptr
  6993  	Ftcl_ZlibStreamEof                      uintptr
  6994  	Ftcl_ZlibStreamChecksum                 uintptr
  6995  	Ftcl_ZlibStreamPut                      uintptr
  6996  	Ftcl_ZlibStreamGet                      uintptr
  6997  	Ftcl_ZlibStreamClose                    uintptr
  6998  	Ftcl_ZlibStreamReset                    uintptr
  6999  	Ftcl_SetStartupScript                   uintptr
  7000  	Ftcl_GetStartupScript                   uintptr
  7001  	Ftcl_CloseEx                            uintptr
  7002  	Ftcl_NRExprObj                          uintptr
  7003  	Ftcl_NRSubstObj                         uintptr
  7004  	Ftcl_LoadFile                           uintptr
  7005  	Ftcl_FindSymbol                         uintptr
  7006  	Ftcl_FSUnloadFile                       uintptr
  7007  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7008  	Freserved631                            uintptr
  7009  	Freserved632                            uintptr
  7010  	Freserved633                            uintptr
  7011  	Freserved634                            uintptr
  7012  	Freserved635                            uintptr
  7013  	Freserved636                            uintptr
  7014  	Freserved637                            uintptr
  7015  	Freserved638                            uintptr
  7016  	Freserved639                            uintptr
  7017  	Freserved640                            uintptr
  7018  	Freserved641                            uintptr
  7019  	Freserved642                            uintptr
  7020  	Freserved643                            uintptr
  7021  	Freserved644                            uintptr
  7022  	Freserved645                            uintptr
  7023  	Freserved646                            uintptr
  7024  	Freserved647                            uintptr
  7025  	Freserved648                            uintptr
  7026  	Freserved649                            uintptr
  7027  	Freserved650                            uintptr
  7028  	Freserved651                            uintptr
  7029  	Freserved652                            uintptr
  7030  	Freserved653                            uintptr
  7031  	Freserved654                            uintptr
  7032  	Freserved655                            uintptr
  7033  	Freserved656                            uintptr
  7034  	Freserved657                            uintptr
  7035  	Freserved658                            uintptr
  7036  	Freserved659                            uintptr
  7037  	FtclUnusedStubEntry                     uintptr
  7038  }
  7039  
  7040  type TclStubs = TclStubs1
  7041  
  7042  type TclPlatStubs = TclPlatStubs1
  7043  
  7044  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7045  	bp := tls.Alloc(88)
  7046  	defer tls.Free(88)
  7047  
  7048  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7049  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7050  		return TCL_ERROR
  7051  	}
  7052  
  7053  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7054  	return TCL_OK
  7055  }
  7056  
  7057  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7058  	bp := tls.Alloc(212)
  7059  	defer tls.Free(212)
  7060  
  7061  	var pExpert uintptr = clientData
  7062  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7063  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7064  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7065  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7066  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7067  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7068  		{},
  7069  	}
  7070  
  7071  	var rc int32 = TCL_OK
  7072  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7073  
  7074  	if objc < 2 {
  7075  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7076  		return TCL_ERROR
  7077  	}
  7078  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7079  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7080  	if rc != TCL_OK {
  7081  		return rc
  7082  	}
  7083  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7084  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7085  		return TCL_ERROR
  7086  	}
  7087  
  7088  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7089  	case 0:
  7090  		{
  7091  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7092  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7093  			break
  7094  
  7095  		}
  7096  
  7097  	case 1:
  7098  		{
  7099  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7100  			break
  7101  
  7102  		}
  7103  
  7104  	case 2:
  7105  		{
  7106  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7107  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7108  			break
  7109  
  7110  		}
  7111  
  7112  	case 3:
  7113  		{
  7114  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7115  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7116  			}
  7117  
  7118  			var zReport uintptr
  7119  
  7120  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7121  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+208) != 0 {
  7122  				return TCL_ERROR
  7123  			}
  7124  
  7125  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7126  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7127  			break
  7128  
  7129  		}
  7130  
  7131  	default:
  7132  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7133  		break
  7134  	}
  7135  
  7136  	if rc != TCL_OK {
  7137  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7138  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7139  		} else {
  7140  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7141  		}
  7142  	}
  7143  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7144  	return rc
  7145  }
  7146  
  7147  type Subcmd = struct {
  7148  	FzSub        uintptr
  7149  	FnArg        int32
  7150  	F__ccgo_pad1 [4]byte
  7151  	FzMsg        uintptr
  7152  }
  7153  
  7154  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7155  	var pExpert uintptr = clientData
  7156  	sqlite3_expert_destroy(tls, pExpert)
  7157  }
  7158  
  7159  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7160  	bp := tls.Alloc(56)
  7161  	defer tls.Free(56)
  7162  
  7163  	var zCmd uintptr = uintptr(0)
  7164  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7165  	var pExpert uintptr
  7166  	var rc int32 = TCL_OK
  7167  
  7168  	if objc != 2 {
  7169  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7170  		return TCL_ERROR
  7171  	}
  7172  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7173  		return TCL_ERROR
  7174  	}
  7175  
  7176  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7177  	if zCmd == uintptr(0) {
  7178  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7179  		return TCL_ERROR
  7180  	}
  7181  
  7182  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7183  	if pExpert == uintptr(0) {
  7184  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7185  		rc = TCL_ERROR
  7186  	} else {
  7187  		var p uintptr = pExpert
  7188  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7189  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7190  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7191  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7192  	}
  7193  
  7194  	sqlite3.Xsqlite3_free(tls, zCmd)
  7195  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  7196  	return rc
  7197  }
  7198  
  7199  var iCmd int32 = 0
  7200  
  7201  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7202  	bp := tls.Alloc(16)
  7203  	defer tls.Free(16)
  7204  
  7205  	*(*[1]struct {
  7206  		FzCmd  uintptr
  7207  		FxProc uintptr
  7208  	})(unsafe.Pointer(bp)) = [1]struct {
  7209  		FzCmd  uintptr
  7210  		FxProc uintptr
  7211  	}{
  7212  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7213  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7214  		}{test_sqlite3_expert_new}))},
  7215  	}
  7216  	var i int32
  7217  
  7218  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  7219  		FzCmd  uintptr
  7220  		FxProc uintptr
  7221  	}{}))/uint64(unsafe.Sizeof(struct {
  7222  		FzCmd  uintptr
  7223  		FxProc uintptr
  7224  	}{})); i++ {
  7225  		var p uintptr = bp + uintptr(i)*16
  7226  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7227  			FzCmd  uintptr
  7228  			FxProc uintptr
  7229  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7230  			FzCmd  uintptr
  7231  			FxProc uintptr
  7232  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7233  	}
  7234  	return TCL_OK
  7235  }
  7236  
  7237  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7238  	bp := tls.Alloc(64)
  7239  	defer tls.Free(64)
  7240  
  7241  	var p uintptr
  7242  
  7243  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7244  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7245  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7246  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7247  		return TCL_OK
  7248  	}
  7249  	return TCL_ERROR
  7250  }
  7251  
  7252  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7253  	bp := tls.Alloc(64)
  7254  	defer tls.Free(64)
  7255  
  7256  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7257  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7258  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7259  		{FzError: ts + 2127},
  7260  		{FzError: ts + 584},
  7261  	}
  7262  	var i int32
  7263  
  7264  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  7265  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  7266  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  7267  		}
  7268  	}
  7269  
  7270  	return SQLITE_ERROR
  7271  }
  7272  
  7273  type ErrorCode = struct {
  7274  	Frc          int32
  7275  	F__ccgo_pad1 [4]byte
  7276  	FzError      uintptr
  7277  }
  7278  
  7279  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7280  	bp := tls.Alloc(72)
  7281  	defer tls.Free(72)
  7282  
  7283  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7284  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7285  	if rc != TCL_OK {
  7286  		return TCL_ERROR
  7287  	} else {
  7288  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  7289  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  7290  
  7291  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  7292  		if rc != SQLITE_OK {
  7293  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7294  			return TCL_ERROR
  7295  		}
  7296  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  7297  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  7298  
  7299  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  7300  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7301  			return TCL_ERROR
  7302  		}
  7303  
  7304  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  7305  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  7306  	}
  7307  
  7308  	return TCL_OK
  7309  }
  7310  
  7311  type F5tFunction1 = struct {
  7312  	Finterp  uintptr
  7313  	FpScript uintptr
  7314  }
  7315  
  7316  type F5tFunction = F5tFunction1
  7317  
  7318  type F5tApi1 = struct {
  7319  	FpApi uintptr
  7320  	FpFts uintptr
  7321  }
  7322  
  7323  type F5tApi = F5tApi1
  7324  
  7325  type F5tAuxData1 = struct{ FpObj uintptr }
  7326  
  7327  type F5tAuxData = F5tAuxData1
  7328  
  7329  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7330  	var p uintptr = pCtx
  7331  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7332  	var rc int32
  7333  
  7334  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7335  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7336  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  7337  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  7338  
  7339  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7340  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7341  		var _objPtr uintptr = pEval
  7342  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7343  			tcl.XTclFreeObj(tls, _objPtr)
  7344  		}
  7345  	}
  7346  	if rc == TCL_OK {
  7347  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7348  	}
  7349  
  7350  	return rc
  7351  }
  7352  
  7353  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  7354  	bp := tls.Alloc(88)
  7355  	defer tls.Free(88)
  7356  
  7357  	var p uintptr = pCtx
  7358  	var pEval uintptr
  7359  	var rc int32
  7360  
  7361  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7362  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7363  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  7364  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7365  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7366  	}{xF5tApi})), bp+72, uintptr(0))
  7367  
  7368  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7369  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7370  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7371  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7372  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7373  		var _objPtr uintptr = pEval
  7374  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7375  			tcl.XTclFreeObj(tls, _objPtr)
  7376  		}
  7377  	}
  7378  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7379  
  7380  	if rc == TCL_OK {
  7381  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7382  	}
  7383  
  7384  	return rc
  7385  }
  7386  
  7387  var iCmd1 sqlite3_int64 = int64(0)
  7388  
  7389  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  7390  	var pData uintptr = p
  7391  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7392  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  7393  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7394  			tcl.XTclFreeObj(tls, _objPtr)
  7395  		}
  7396  	}
  7397  	sqlite3.Xsqlite3_free(tls, pData)
  7398  }
  7399  
  7400  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7401  	bp := tls.Alloc(684)
  7402  	defer tls.Free(684)
  7403  
  7404  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  7405  		{FzName: ts + 2185, FzMsg: ts + 584},
  7406  		{FzName: ts + 2198, FzMsg: ts + 584},
  7407  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  7408  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  7409  		{FzName: ts + 2251, FzMsg: ts + 584},
  7410  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  7411  		{FzName: ts + 2283, FzMsg: ts + 584},
  7412  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  7413  		{FzName: ts + 2304, FzMsg: ts + 584},
  7414  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  7415  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  7416  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  7417  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  7418  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  7419  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  7420  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  7421  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  7422  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  7423  		{},
  7424  	}
  7425  	var rc int32
  7426  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  7427  	var p uintptr = clientData
  7428  
  7429  	if objc < 2 {
  7430  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  7431  		return TCL_ERROR
  7432  	}
  7433  
  7434  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  7435  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  7436  	if rc != TCL_OK {
  7437  		return rc
  7438  	}
  7439  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  7440  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  7441  		return TCL_ERROR
  7442  	}
  7443  
  7444  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  7445  	case 0:
  7446  		{
  7447  			var nCol int32
  7448  			nCol = (*struct {
  7449  				f func(*libc.TLS, uintptr) int32
  7450  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7451  			if rc == SQLITE_OK {
  7452  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  7453  			}
  7454  			break
  7455  
  7456  		}
  7457  	case 1:
  7458  		{
  7459  			rc = (*struct {
  7460  				f func(*libc.TLS, uintptr, uintptr) int32
  7461  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  7462  			if rc == SQLITE_OK {
  7463  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  7464  			}
  7465  			break
  7466  
  7467  		}
  7468  	case 2:
  7469  		{
  7470  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  7471  				return TCL_ERROR
  7472  			}
  7473  			rc = (*struct {
  7474  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7475  			})(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)
  7476  			if rc == SQLITE_OK {
  7477  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  7478  			}
  7479  			break
  7480  
  7481  		}
  7482  	case 3:
  7483  		{
  7484  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  7485  
  7486  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  7487  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7488  			rc = (*struct {
  7489  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  7490  			})(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 {
  7491  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7492  			}{xTokenizeCb})))
  7493  			if rc == SQLITE_OK {
  7494  				tcl.XTcl_ResetResult(tls, interp)
  7495  			}
  7496  			return rc
  7497  
  7498  		}
  7499  	case 4:
  7500  		{
  7501  			var nPhrase int32
  7502  			nPhrase = (*struct {
  7503  				f func(*libc.TLS, uintptr) int32
  7504  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7505  			if rc == SQLITE_OK {
  7506  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  7507  			}
  7508  			break
  7509  
  7510  		}
  7511  	case 5:
  7512  		{
  7513  			var sz int32
  7514  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  7515  				return TCL_ERROR
  7516  			}
  7517  			sz = (*struct {
  7518  				f func(*libc.TLS, uintptr, int32) int32
  7519  			})(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)))
  7520  			if rc == SQLITE_OK {
  7521  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  7522  			}
  7523  			break
  7524  
  7525  		}
  7526  	case 6:
  7527  		{
  7528  			rc = (*struct {
  7529  				f func(*libc.TLS, uintptr, uintptr) int32
  7530  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  7531  			if rc == SQLITE_OK {
  7532  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  7533  			}
  7534  			break
  7535  
  7536  		}
  7537  	case 7:
  7538  		{
  7539  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  7540  				return TCL_ERROR
  7541  			}
  7542  			rc = (*struct {
  7543  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7544  			})(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)
  7545  			if rc == SQLITE_OK {
  7546  				var pList uintptr = tcl.XTcl_NewObj(tls)
  7547  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  7548  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  7549  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  7550  				tcl.XTcl_SetObjResult(tls, interp, pList)
  7551  			}
  7552  			break
  7553  
  7554  		}
  7555  	case 8:
  7556  		{
  7557  			var iRowid sqlite3_int64 = (*struct {
  7558  				f func(*libc.TLS, uintptr) sqlite3_int64
  7559  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7560  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  7561  			break
  7562  
  7563  		}
  7564  	case 9:
  7565  		{
  7566  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  7567  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  7568  
  7569  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  7570  				return TCL_ERROR
  7571  			}
  7572  			rc = (*struct {
  7573  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7574  			})(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)
  7575  			if rc == SQLITE_OK {
  7576  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  7577  			}
  7578  			break
  7579  
  7580  		}
  7581  	case 10:
  7582  		{
  7583  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  7584  
  7585  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  7586  				return TCL_ERROR
  7587  			}
  7588  			rc = (*struct {
  7589  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7590  			})(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)
  7591  			if rc == SQLITE_OK {
  7592  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  7593  			}
  7594  			break
  7595  
  7596  		}
  7597  	case 11:
  7598  		{
  7599  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  7600  				return TCL_ERROR
  7601  			}
  7602  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  7603  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7604  			rc = (*struct {
  7605  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7606  			})(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 {
  7607  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7608  			}{xQueryPhraseCb})))
  7609  			if rc == SQLITE_OK {
  7610  				tcl.XTcl_ResetResult(tls, interp)
  7611  			}
  7612  			break
  7613  
  7614  		}
  7615  	case 12:
  7616  		{
  7617  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  7618  			if pData == uintptr(0) {
  7619  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  7620  				return TCL_ERROR
  7621  			}
  7622  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  7623  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  7624  			rc = (*struct {
  7625  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7626  			})(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})))
  7627  			break
  7628  
  7629  		}
  7630  	case 13:
  7631  		{
  7632  			var pData uintptr
  7633  
  7634  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  7635  				return TCL_ERROR
  7636  			}
  7637  			pData = (*struct {
  7638  				f func(*libc.TLS, uintptr, int32) uintptr
  7639  			})(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)))
  7640  			if pData == uintptr(0) {
  7641  				tcl.XTcl_ResetResult(tls, interp)
  7642  			} else {
  7643  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  7644  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  7645  					xSetAuxdataDestructor(tls, pData)
  7646  				}
  7647  			}
  7648  			break
  7649  
  7650  		}
  7651  
  7652  	case 14:
  7653  		{
  7654  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  7655  				return TCL_ERROR
  7656  			}
  7657  			rc = (*struct {
  7658  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7659  			})(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))
  7660  			break
  7661  
  7662  		}
  7663  	case 15:
  7664  		{
  7665  			var iVal int32
  7666  
  7667  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  7668  				return TCL_ERROR
  7669  			}
  7670  			iVal = int32((int64((*struct {
  7671  				f func(*libc.TLS, uintptr, int32) uintptr
  7672  			})(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)
  7673  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  7674  			break
  7675  
  7676  		}
  7677  
  7678  	case 16:
  7679  		{
  7680  			var zColvar uintptr
  7681  			var zOffvar uintptr
  7682  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  7683  
  7684  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  7685  				return TCL_ERROR
  7686  			}
  7687  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7688  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  7689  
  7690  			rc = (*struct {
  7691  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7692  			})(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)
  7693  			if rc != SQLITE_OK {
  7694  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  7695  				return TCL_ERROR
  7696  			}
  7697  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  7698  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  7699  			})(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) {
  7700  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  7701  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  7702  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7703  				if rc == TCL_CONTINUE {
  7704  					rc = TCL_OK
  7705  				}
  7706  				if rc != TCL_OK {
  7707  					if rc == TCL_BREAK {
  7708  						rc = TCL_OK
  7709  					}
  7710  					break
  7711  				}
  7712  			}
  7713  
  7714  			break
  7715  
  7716  		}
  7717  
  7718  	case 17:
  7719  		{
  7720  			var zColvar uintptr
  7721  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  7722  
  7723  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  7724  				return TCL_ERROR
  7725  			}
  7726  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7727  
  7728  			rc = (*struct {
  7729  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7730  			})(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)
  7731  			if rc != SQLITE_OK {
  7732  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7733  				return TCL_ERROR
  7734  			}
  7735  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  7736  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  7737  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  7738  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  7739  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7740  				if rc == TCL_CONTINUE {
  7741  					rc = TCL_OK
  7742  				}
  7743  				if rc != TCL_OK {
  7744  					if rc == TCL_BREAK {
  7745  						rc = TCL_OK
  7746  					}
  7747  					break
  7748  				}
  7749  			}
  7750  
  7751  			break
  7752  
  7753  		}
  7754  
  7755  	default:
  7756  		break
  7757  	}
  7758  
  7759  	if rc != SQLITE_OK {
  7760  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7761  		return TCL_ERROR
  7762  	}
  7763  
  7764  	return TCL_OK
  7765  }
  7766  
  7767  type Sub = struct {
  7768  	FzName       uintptr
  7769  	FnArg        int32
  7770  	F__ccgo_pad1 [4]byte
  7771  	FzMsg        uintptr
  7772  }
  7773  
  7774  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  7775  	bp := tls.Alloc(112)
  7776  	defer tls.Free(112)
  7777  
  7778  	var p uintptr = (*struct {
  7779  		f func(*libc.TLS, uintptr) uintptr
  7780  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  7781  	var pEval uintptr
  7782  	var i int32
  7783  	var rc int32
  7784  
  7785  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7786  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7787  
  7788  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  7789  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7790  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7791  	}{xF5tApi})), bp+72, uintptr(0))
  7792  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7793  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7794  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7795  
  7796  	for i = 0; i < nVal; i++ {
  7797  		var pObj uintptr = uintptr(0)
  7798  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  7799  		case SQLITE_TEXT:
  7800  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  7801  			break
  7802  		case SQLITE_BLOB:
  7803  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  7804  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7805  			break
  7806  		case SQLITE_INTEGER:
  7807  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7808  			break
  7809  		case SQLITE_FLOAT:
  7810  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7811  			break
  7812  		default:
  7813  			pObj = tcl.XTcl_NewObj(tls)
  7814  			break
  7815  		}
  7816  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  7817  	}
  7818  
  7819  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  7820  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7821  		var _objPtr uintptr = pEval
  7822  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7823  			tcl.XTclFreeObj(tls, _objPtr)
  7824  		}
  7825  	}
  7826  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7827  
  7828  	if rc != TCL_OK {
  7829  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  7830  	} else {
  7831  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  7832  
  7833  		var zType uintptr = func() uintptr {
  7834  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  7835  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  7836  			}
  7837  			return ts + 584
  7838  		}()
  7839  		var c int8 = *(*int8)(unsafe.Pointer(zType))
  7840  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  7841  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  7842  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7843  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  7844  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  7845  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  7846  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  7847  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  7848  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  7849  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  7850  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  7851  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  7852  		} else {
  7853  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  7854  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7855  		}
  7856  	}
  7857  }
  7858  
  7859  var iCmd2 sqlite3_int64 = int64(0)
  7860  
  7861  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  7862  	var p uintptr = pCtx
  7863  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7864  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  7865  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7866  			tcl.XTclFreeObj(tls, _objPtr)
  7867  		}
  7868  	}
  7869  	tcl.XTcl_Free(tls, p)
  7870  }
  7871  
  7872  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7873  	bp := tls.Alloc(40)
  7874  	defer tls.Free(40)
  7875  
  7876  	var zName uintptr
  7877  	var pScript uintptr
  7878  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  7879  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  7880  	var pCtx uintptr = uintptr(0)
  7881  	var rc int32
  7882  
  7883  	if objc != 4 {
  7884  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  7885  		return TCL_ERROR
  7886  	}
  7887  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  7888  		return TCL_ERROR
  7889  	}
  7890  
  7891  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7892  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7893  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  7894  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  7895  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  7896  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  7897  
  7898  	rc = (*struct {
  7899  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  7900  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  7901  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  7902  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  7903  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  7904  	if rc != SQLITE_OK {
  7905  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  7906  		return TCL_ERROR
  7907  	}
  7908  
  7909  	return TCL_OK
  7910  }
  7911  
  7912  type F5tTokenizeCtx1 = struct {
  7913  	FpRet        uintptr
  7914  	FbSubst      int32
  7915  	F__ccgo_pad1 [4]byte
  7916  	FzInput      uintptr
  7917  }
  7918  
  7919  type F5tTokenizeCtx = F5tTokenizeCtx1
  7920  
  7921  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7922  	var p uintptr = pCtx
  7923  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  7924  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7925  		tcl.XTcl_ListObjAppendElement(tls,
  7926  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  7927  	} else {
  7928  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7929  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  7930  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  7931  	}
  7932  	return SQLITE_OK
  7933  }
  7934  
  7935  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7936  	bp := tls.Alloc(200)
  7937  	defer tls.Free(200)
  7938  
  7939  	var zText uintptr
  7940  
  7941  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  7942  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  7943  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  7944  
  7945  	var pRet uintptr = uintptr(0)
  7946  
  7947  	var rc int32
  7948  
  7949  	if objc != 4 && objc != 5 {
  7950  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  7951  		return TCL_ERROR
  7952  	}
  7953  	if objc == 5 {
  7954  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  7955  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  7956  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  7957  			return TCL_ERROR
  7958  		}
  7959  	}
  7960  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  7961  		return TCL_ERROR
  7962  	}
  7963  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  7964  		return TCL_ERROR
  7965  	}
  7966  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  7967  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  7968  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  7969  		return TCL_ERROR
  7970  	}
  7971  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  7972  
  7973  	rc = (*struct {
  7974  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  7975  	})(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)
  7976  	if rc != SQLITE_OK {
  7977  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  7978  		return TCL_ERROR
  7979  	}
  7980  
  7981  	rc = (*struct {
  7982  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7983  	})(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)
  7984  	if rc != SQLITE_OK {
  7985  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  7986  		return TCL_ERROR
  7987  	}
  7988  
  7989  	pRet = tcl.XTcl_NewObj(tls)
  7990  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  7991  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  7992  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  7993  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  7994  	rc = (*struct {
  7995  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  7996  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  7997  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  7998  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7999  		}{xTokenizeCb2})))
  8000  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8001  	if rc != SQLITE_OK {
  8002  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8003  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8004  			var _objPtr uintptr = pRet
  8005  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8006  				tcl.XTclFreeObj(tls, _objPtr)
  8007  			}
  8008  		}
  8009  		return TCL_ERROR
  8010  	}
  8011  
  8012  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8013  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8014  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8015  		var _objPtr uintptr = pRet
  8016  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8017  			tcl.XTclFreeObj(tls, _objPtr)
  8018  		}
  8019  	}
  8020  	return TCL_OK
  8021  }
  8022  
  8023  type F5tTokenizerContext1 = struct {
  8024  	FpCtx   uintptr
  8025  	FxToken uintptr
  8026  }
  8027  
  8028  type F5tTokenizerContext = F5tTokenizerContext1
  8029  type F5tTokenizerModule1 = struct {
  8030  	Finterp   uintptr
  8031  	FpScript  uintptr
  8032  	FpContext uintptr
  8033  }
  8034  
  8035  type F5tTokenizerModule = F5tTokenizerModule1
  8036  type F5tTokenizerInstance1 = struct {
  8037  	Finterp   uintptr
  8038  	FpScript  uintptr
  8039  	FpContext uintptr
  8040  }
  8041  
  8042  type F5tTokenizerInstance = F5tTokenizerInstance1
  8043  
  8044  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8045  	var pMod uintptr = pCtx
  8046  	var pEval uintptr
  8047  	var rc int32 = TCL_OK
  8048  	var i int32
  8049  
  8050  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8051  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8052  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8053  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8054  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8055  	}
  8056  
  8057  	if rc == TCL_OK {
  8058  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8059  	}
  8060  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8061  		var _objPtr uintptr = pEval
  8062  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8063  			tcl.XTclFreeObj(tls, _objPtr)
  8064  		}
  8065  	}
  8066  
  8067  	if rc == TCL_OK {
  8068  		var pInst uintptr
  8069  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8070  		libc.Xmemset(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})))
  8071  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8072  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8073  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8074  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8075  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8076  	}
  8077  
  8078  	return rc
  8079  }
  8080  
  8081  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8082  	var pInst uintptr = p
  8083  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8084  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8085  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8086  			tcl.XTclFreeObj(tls, _objPtr)
  8087  		}
  8088  	}
  8089  	tcl.XTcl_Free(tls, pInst)
  8090  }
  8091  
  8092  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8093  	var pInst uintptr = p
  8094  	var pOldCtx uintptr
  8095  	var xOldToken uintptr
  8096  	var pEval uintptr
  8097  	var rc int32
  8098  	var zFlags uintptr
  8099  
  8100  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8101  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8102  
  8103  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8104  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8105  
  8106  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8107  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8108  	switch flags {
  8109  	case FTS5_TOKENIZE_DOCUMENT:
  8110  		zFlags = ts + 2727
  8111  		break
  8112  	case FTS5_TOKENIZE_AUX:
  8113  		zFlags = ts + 2736
  8114  		break
  8115  	case FTS5_TOKENIZE_QUERY:
  8116  		zFlags = ts + 2740
  8117  		break
  8118  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8119  		zFlags = ts + 2746
  8120  		break
  8121  	default:
  8122  		zFlags = ts + 2758
  8123  		break
  8124  	}
  8125  
  8126  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8127  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8128  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8129  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8130  		var _objPtr uintptr = pEval
  8131  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8132  			tcl.XTclFreeObj(tls, _objPtr)
  8133  		}
  8134  	}
  8135  
  8136  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8137  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8138  	return rc
  8139  }
  8140  
  8141  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8142  	bp := tls.Alloc(32)
  8143  	defer tls.Free(32)
  8144  
  8145  	var p uintptr
  8146  
  8147  	var tflags int32
  8148  	var zToken uintptr
  8149  	var rc int32
  8150  
  8151  	var zArg uintptr
  8152  	p = clientData
  8153  	tflags = 0
  8154  
  8155  	if !(objc == 5) {
  8156  		goto __1
  8157  	}
  8158  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8159  	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) {
  8160  		goto __3
  8161  	}
  8162  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8163  	goto __4
  8164  __3:
  8165  	goto usage
  8166  __4:
  8167  	;
  8168  	goto __2
  8169  __1:
  8170  	if !(objc != 4) {
  8171  		goto __5
  8172  	}
  8173  	goto usage
  8174  __5:
  8175  	;
  8176  __2:
  8177  	;
  8178  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8179  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8180  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8181  		goto __6
  8182  	}
  8183  	return TCL_ERROR
  8184  __6:
  8185  	;
  8186  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8187  		goto __7
  8188  	}
  8189  	tcl.XTcl_AppendResult(tls, interp,
  8190  		libc.VaList(bp, ts+2777, 0))
  8191  	return TCL_ERROR
  8192  __7:
  8193  	;
  8194  	rc = (*struct {
  8195  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8196  	})(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)))
  8197  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8198  	if rc == SQLITE_OK {
  8199  		return TCL_OK
  8200  	}
  8201  	return TCL_ERROR
  8202  
  8203  usage:
  8204  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8205  	return TCL_ERROR
  8206  }
  8207  
  8208  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8209  	var pMod uintptr = pCtx
  8210  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8211  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  8212  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8213  			tcl.XTclFreeObj(tls, _objPtr)
  8214  		}
  8215  	}
  8216  	tcl.XTcl_Free(tls, pMod)
  8217  }
  8218  
  8219  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8220  	bp := tls.Alloc(56)
  8221  	defer tls.Free(56)
  8222  
  8223  	var pContext uintptr = clientData
  8224  
  8225  	var zName uintptr
  8226  	var pScript uintptr
  8227  
  8228  	var pMod uintptr
  8229  	var rc int32
  8230  
  8231  	if objc != 4 {
  8232  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8233  		return TCL_ERROR
  8234  	}
  8235  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  8236  		return TCL_ERROR
  8237  	}
  8238  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8239  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8240  
  8241  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8242  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8243  	}{f5tTokenizerCreate}))
  8244  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8245  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8246  	}{f5tTokenizerTokenize}))
  8247  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8248  
  8249  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8250  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8251  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8252  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8253  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8254  	rc = (*struct {
  8255  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8256  	})(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})))
  8257  	if rc != SQLITE_OK {
  8258  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8259  		return TCL_ERROR
  8260  	}
  8261  
  8262  	return TCL_OK
  8263  }
  8264  
  8265  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8266  	tcl.XTcl_Free(tls, clientData)
  8267  }
  8268  
  8269  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8270  	return TCL_OK
  8271  }
  8272  
  8273  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8274  	var i int32
  8275  	var h uint32 = uint32(13)
  8276  	for i = n - 1; i >= 0; i-- {
  8277  		h = h<<3 ^ h ^ uint32(*(*int8)(unsafe.Pointer(p + uintptr(i))))
  8278  	}
  8279  	return h % uint32(nSlot)
  8280  }
  8281  
  8282  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8283  	bp := tls.Alloc(8)
  8284  	defer tls.Free(8)
  8285  
  8286  	var z uintptr
  8287  
  8288  	var iVal uint32
  8289  
  8290  	if objc != 3 {
  8291  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  8292  		return TCL_ERROR
  8293  	}
  8294  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8295  		return TCL_ERROR
  8296  	}
  8297  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  8298  
  8299  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  8300  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  8301  	return TCL_OK
  8302  }
  8303  
  8304  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8305  	bp := tls.Alloc(8)
  8306  	defer tls.Free(8)
  8307  
  8308  	var rc int32
  8309  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8310  
  8311  	if objc != 2 {
  8312  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8313  		return TCL_ERROR
  8314  	}
  8315  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8316  		return TCL_ERROR
  8317  	}
  8318  
  8319  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8320  	if rc != SQLITE_OK {
  8321  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8322  		return TCL_ERROR
  8323  	}
  8324  	return TCL_OK
  8325  }
  8326  
  8327  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8328  	bp := tls.Alloc(16)
  8329  	defer tls.Free(16)
  8330  
  8331  	var rc int32
  8332  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8333  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8334  
  8335  	if objc != 2 {
  8336  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8337  		return TCL_ERROR
  8338  	}
  8339  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  8340  		return TCL_ERROR
  8341  	}
  8342  
  8343  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  8344  	if rc != SQLITE_OK {
  8345  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8346  		return TCL_ERROR
  8347  	}
  8348  	return TCL_OK
  8349  }
  8350  
  8351  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  8352  	var i int32
  8353  	var pContext uintptr
  8354  
  8355  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8356  	libc.Xmemset(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})))
  8357  
  8358  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  8359  		FzName        uintptr
  8360  		FxProc        uintptr
  8361  		FbTokenizeCtx int32
  8362  		F__ccgo_pad1  [4]byte
  8363  	}{})); i++ {
  8364  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  8365  		var pCtx uintptr = uintptr(0)
  8366  		if (*struct {
  8367  			FzName        uintptr
  8368  			FxProc        uintptr
  8369  			FbTokenizeCtx int32
  8370  			F__ccgo_pad1  [4]byte
  8371  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  8372  			pCtx = pContext
  8373  		}
  8374  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8375  			FzName        uintptr
  8376  			FxProc        uintptr
  8377  			FbTokenizeCtx int32
  8378  			F__ccgo_pad1  [4]byte
  8379  		})(unsafe.Pointer(p)).FzName, (*struct {
  8380  			FzName        uintptr
  8381  			FxProc        uintptr
  8382  			FbTokenizeCtx int32
  8383  			F__ccgo_pad1  [4]byte
  8384  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  8385  			if i != 0 {
  8386  				return uintptr(0)
  8387  			}
  8388  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  8389  		}())
  8390  	}
  8391  
  8392  	return TCL_OK
  8393  }
  8394  
  8395  var aCmd = [8]struct {
  8396  	FzName        uintptr
  8397  	FxProc        uintptr
  8398  	FbTokenizeCtx int32
  8399  	F__ccgo_pad1  [4]byte
  8400  }{
  8401  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  8402  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  8403  	{FzName: ts + 2961, FxProc: 0},
  8404  	{FzName: ts + 2983, FxProc: 0},
  8405  	{FzName: ts + 3012, FxProc: 0},
  8406  	{FzName: ts + 3040, FxProc: 0},
  8407  	{FzName: ts + 3064, FxProc: 0},
  8408  	{FzName: ts + 3096, FxProc: 0},
  8409  }
  8410  
  8411  type Fts5MatchinfoCtx1 = struct {
  8412  	FnCol        int32
  8413  	FnPhrase     int32
  8414  	FzArg        uintptr
  8415  	FnRet        int32
  8416  	F__ccgo_pad1 [4]byte
  8417  	FaRet        uintptr
  8418  }
  8419  
  8420  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  8421  
  8422  type u32 = uint32
  8423  
  8424  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  8425  	bp := tls.Alloc(8)
  8426  	defer tls.Free(8)
  8427  
  8428  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8429  	var rc int32
  8430  
  8431  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  8432  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  8433  	if rc == SQLITE_OK {
  8434  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  8435  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8436  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8437  	}
  8438  
  8439  	return rc
  8440  }
  8441  
  8442  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f int8) int32 {
  8443  	var ret int32 = -1
  8444  	switch int32(f) {
  8445  	case 'p':
  8446  		ret = 1
  8447  		break
  8448  	case 'c':
  8449  		ret = 1
  8450  		break
  8451  	case 'x':
  8452  		ret = 3 * nCol * nPhrase
  8453  		break
  8454  	case 'y':
  8455  		ret = nCol * nPhrase
  8456  		break
  8457  	case 'b':
  8458  		ret = (nCol + 31) / 32 * nPhrase
  8459  		break
  8460  	case 'n':
  8461  		ret = 1
  8462  		break
  8463  	case 'a':
  8464  		ret = nCol
  8465  		break
  8466  	case 'l':
  8467  		ret = nCol
  8468  		break
  8469  	case 's':
  8470  		ret = nCol
  8471  		break
  8472  	}
  8473  	return ret
  8474  }
  8475  
  8476  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  8477  	var i int32
  8478  	var n int32 = 0
  8479  	var rc int32 = SQLITE_OK
  8480  	var f int8
  8481  	for i = 0; libc.AssignInt8(&f, *(*int8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  8482  		rc = (*struct {
  8483  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8484  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  8485  		if rc != SQLITE_OK {
  8486  			break
  8487  		}
  8488  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  8489  	}
  8490  	return rc
  8491  }
  8492  
  8493  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  8494  	bp := tls.Alloc(24)
  8495  	defer tls.Free(24)
  8496  
  8497  	var aOut uintptr = pUserData
  8498  	var iPrev int32 = -1
  8499  
  8500  	for (*struct {
  8501  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8502  	})(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 {
  8503  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8504  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  8505  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  8506  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  8507  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  8508  		}
  8509  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  8510  	}
  8511  
  8512  	return SQLITE_OK
  8513  }
  8514  
  8515  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8516  	bp := tls.Alloc(24)
  8517  	defer tls.Free(24)
  8518  
  8519  	var rc int32 = SQLITE_OK
  8520  	switch int32(f) {
  8521  	case 'p':
  8522  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  8523  		break
  8524  
  8525  	case 'c':
  8526  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  8527  		break
  8528  
  8529  	case 'x':
  8530  		{
  8531  			var i int32
  8532  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  8533  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  8534  				rc = (*struct {
  8535  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8536  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  8537  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8538  				}{fts5MatchinfoXCb})))
  8539  			}
  8540  			break
  8541  
  8542  		}
  8543  
  8544  	case 'n':
  8545  		{
  8546  			rc = (*struct {
  8547  				f func(*libc.TLS, uintptr, uintptr) int32
  8548  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  8549  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  8550  			break
  8551  
  8552  		}
  8553  
  8554  	case 'a':
  8555  		{
  8556  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  8557  			rc = (*struct {
  8558  				f func(*libc.TLS, uintptr, uintptr) int32
  8559  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  8560  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  8561  				libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8562  			} else {
  8563  				var i int32
  8564  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8565  					rc = (*struct {
  8566  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  8567  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  8568  					if rc == SQLITE_OK {
  8569  						*(*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))))
  8570  					}
  8571  				}
  8572  			}
  8573  			break
  8574  
  8575  		}
  8576  
  8577  	}
  8578  	return rc
  8579  }
  8580  
  8581  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8582  	bp := tls.Alloc(80)
  8583  	defer tls.Free(80)
  8584  
  8585  	var i int32
  8586  	var rc int32 = SQLITE_OK
  8587  
  8588  	switch int32(f) {
  8589  	case 'b':
  8590  		{
  8591  			var iPhrase int32
  8592  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  8593  			for i = 0; i < nInt; i++ {
  8594  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  8595  			}
  8596  
  8597  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8598  				for (*struct {
  8599  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8600  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  8601  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  8602  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  8603  					*(*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)
  8604  				}
  8605  			}
  8606  
  8607  			break
  8608  
  8609  		}
  8610  
  8611  	case 'x':
  8612  		fallthrough
  8613  	case 'y':
  8614  		{
  8615  			var nMul int32 = func() int32 {
  8616  				if int32(f) == 'x' {
  8617  					return 3
  8618  				}
  8619  				return 1
  8620  			}()
  8621  			var iPhrase int32
  8622  
  8623  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  8624  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  8625  			}
  8626  
  8627  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8628  				for (*struct {
  8629  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8630  				})(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 {
  8631  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8632  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  8633  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  8634  				}
  8635  			}
  8636  
  8637  			break
  8638  
  8639  		}
  8640  
  8641  	case 'l':
  8642  		{
  8643  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8644  				rc = (*struct {
  8645  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  8646  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  8647  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  8648  			}
  8649  			break
  8650  
  8651  		}
  8652  
  8653  	case 's':
  8654  		{
  8655  			libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8656  
  8657  			rc = (*struct {
  8658  				f func(*libc.TLS, uintptr, uintptr) int32
  8659  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  8660  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  8661  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  8662  				var iNextPhrase int32
  8663  				var iNextOff int32
  8664  				var nSeq u32 = u32(1)
  8665  				var j int32
  8666  
  8667  				rc = (*struct {
  8668  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8669  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  8670  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  8671  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  8672  					f func(*libc.TLS, uintptr, int32) int32
  8673  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  8674  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  8675  					rc = (*struct {
  8676  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8677  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  8678  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  8679  						break
  8680  					}
  8681  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  8682  						nSeq++
  8683  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  8684  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  8685  							f func(*libc.TLS, uintptr, int32) int32
  8686  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  8687  					}
  8688  				}
  8689  
  8690  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  8691  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  8692  				}
  8693  			}
  8694  
  8695  			break
  8696  
  8697  		}
  8698  	}
  8699  	return rc
  8700  }
  8701  
  8702  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  8703  	bp := tls.Alloc(8)
  8704  	defer tls.Free(8)
  8705  
  8706  	var p uintptr
  8707  	var nCol int32
  8708  	var nPhrase int32
  8709  	var i int32
  8710  	var nInt int32
  8711  	var nByte sqlite3_int64
  8712  	var rc int32
  8713  
  8714  	nCol = (*struct {
  8715  		f func(*libc.TLS, uintptr) int32
  8716  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  8717  	nPhrase = (*struct {
  8718  		f func(*libc.TLS, uintptr) int32
  8719  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  8720  
  8721  	nInt = 0
  8722  	for i = 0; *(*int8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  8723  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*int8)(unsafe.Pointer(zArg + uintptr(i))))
  8724  		if n < 0 {
  8725  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i))))))
  8726  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  8727  			sqlite3.Xsqlite3_free(tls, zErr)
  8728  			return uintptr(0)
  8729  		}
  8730  		nInt = nInt + n
  8731  	}
  8732  
  8733  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  8734  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  8735  		uint64(i+1))
  8736  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  8737  	if p == uintptr(0) {
  8738  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  8739  		return uintptr(0)
  8740  	}
  8741  	libc.Xmemset(tls, p, 0, uint64(nByte))
  8742  
  8743  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  8744  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  8745  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  8746  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  8747  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  8748  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i))
  8749  
  8750  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8751  		f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8752  	}{fts5MatchinfoGlobalCb})))
  8753  	if rc != SQLITE_OK {
  8754  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8755  		sqlite3.Xsqlite3_free(tls, p)
  8756  		p = uintptr(0)
  8757  	}
  8758  
  8759  	return p
  8760  }
  8761  
  8762  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8763  	var zArg uintptr
  8764  	var p uintptr
  8765  	var rc int32 = SQLITE_OK
  8766  
  8767  	if nVal > 0 {
  8768  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  8769  	} else {
  8770  		zArg = ts + 3163
  8771  	}
  8772  
  8773  	p = (*struct {
  8774  		f func(*libc.TLS, uintptr, int32) uintptr
  8775  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  8776  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  8777  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  8778  		if p == uintptr(0) {
  8779  			rc = SQLITE_NOMEM
  8780  		} else {
  8781  			rc = (*struct {
  8782  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8783  			})(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})))
  8784  		}
  8785  	}
  8786  
  8787  	if rc == SQLITE_OK {
  8788  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8789  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8790  		}{fts5MatchinfoLocalCb})))
  8791  	}
  8792  	if rc != SQLITE_OK {
  8793  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8794  	} else {
  8795  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  8796  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  8797  	}
  8798  }
  8799  
  8800  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  8801  	bp := tls.Alloc(8)
  8802  	defer tls.Free(8)
  8803  
  8804  	var rc int32
  8805  
  8806  	rc = fts5_api_from_db(tls, db, bp)
  8807  	if rc != SQLITE_OK {
  8808  		return rc
  8809  	}
  8810  
  8811  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  8812  		return SQLITE_ERROR
  8813  	}
  8814  
  8815  	rc = (*struct {
  8816  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8817  	})(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 {
  8818  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8819  	}{fts5MatchinfoFunc})), uintptr(0))
  8820  
  8821  	return rc
  8822  }
  8823  
  8824  type Fts5tokTable1 = struct {
  8825  	Fbase sqlite3_vtab
  8826  	Ftok  fts5_tokenizer
  8827  	FpTok uintptr
  8828  }
  8829  
  8830  type Fts5tokTable = Fts5tokTable1
  8831  type Fts5tokCursor1 = struct {
  8832  	Fbase        sqlite3_vtab_cursor
  8833  	FiRowid      int32
  8834  	F__ccgo_pad1 [4]byte
  8835  	FzInput      uintptr
  8836  	FnRow        int32
  8837  	F__ccgo_pad2 [4]byte
  8838  	FaRow        uintptr
  8839  }
  8840  
  8841  type Fts5tokCursor = Fts5tokCursor1
  8842  type Fts5tokRow1 = struct {
  8843  	FzToken      uintptr
  8844  	FiStart      int32
  8845  	FiEnd        int32
  8846  	FiPos        int32
  8847  	F__ccgo_pad1 [4]byte
  8848  }
  8849  
  8850  type Fts5tokRow = Fts5tokRow1
  8851  
  8852  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  8853  	var q int8 = *(*int8)(unsafe.Pointer(z))
  8854  
  8855  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  8856  		var iIn int32 = 1
  8857  		var iOut int32 = 0
  8858  		if int32(q) == '[' {
  8859  			q = int8(']')
  8860  		}
  8861  
  8862  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  8863  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  8864  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  8865  					iIn++
  8866  					break
  8867  				} else {
  8868  					iIn = iIn + 2
  8869  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  8870  				}
  8871  			} else {
  8872  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  8873  			}
  8874  		}
  8875  
  8876  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
  8877  	}
  8878  }
  8879  
  8880  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  8881  	var rc int32 = SQLITE_OK
  8882  	if argc == 0 {
  8883  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  8884  	} else {
  8885  		var i int32
  8886  		var nByte int32 = 0
  8887  		var azDequote uintptr
  8888  
  8889  		for i = 0; i < argc; i++ {
  8890  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  8891  		}
  8892  
  8893  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  8894  		if azDequote == uintptr(0) {
  8895  			rc = SQLITE_NOMEM
  8896  		} else {
  8897  			var pSpace uintptr = azDequote + uintptr(argc)*8
  8898  			for i = 0; i < argc; i++ {
  8899  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  8900  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  8901  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1))
  8902  				fts5tokDequote(tls, pSpace)
  8903  				pSpace += uintptr(n + 1)
  8904  			}
  8905  		}
  8906  	}
  8907  
  8908  	return rc
  8909  }
  8910  
  8911  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  8912  	bp := tls.Alloc(16)
  8913  	defer tls.Free(16)
  8914  
  8915  	var pApi uintptr = pCtx
  8916  	var pTab uintptr = uintptr(0)
  8917  	var rc int32
  8918  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8919  	var nDequote int32 = 0
  8920  
  8921  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  8922  		ts+3177)
  8923  
  8924  	if rc == SQLITE_OK {
  8925  		nDequote = argc - 3
  8926  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  8927  	}
  8928  
  8929  	if rc == SQLITE_OK {
  8930  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  8931  		if pTab == uintptr(0) {
  8932  			rc = SQLITE_NOMEM
  8933  		} else {
  8934  			libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})))
  8935  		}
  8936  	}
  8937  
  8938  	if rc == SQLITE_OK {
  8939  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8940  		var zModule uintptr = uintptr(0)
  8941  		if nDequote > 0 {
  8942  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  8943  		}
  8944  
  8945  		rc = (*struct {
  8946  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8947  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  8948  		if rc == SQLITE_OK {
  8949  			var azArg uintptr = func() uintptr {
  8950  				if nDequote > 1 {
  8951  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  8952  				}
  8953  				return uintptr(0)
  8954  			}()
  8955  			var nArg int32
  8956  			if nDequote > 0 {
  8957  				nArg = nDequote - 1
  8958  			} else {
  8959  				nArg = 0
  8960  			}
  8961  			rc = (*struct {
  8962  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8963  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  8964  		}
  8965  	}
  8966  
  8967  	if rc != SQLITE_OK {
  8968  		sqlite3.Xsqlite3_free(tls, pTab)
  8969  		pTab = uintptr(0)
  8970  	}
  8971  
  8972  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  8973  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8974  	return rc
  8975  }
  8976  
  8977  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  8978  	var pTab uintptr = pVtab
  8979  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  8980  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  8981  	}
  8982  	sqlite3.Xsqlite3_free(tls, pTab)
  8983  	return SQLITE_OK
  8984  }
  8985  
  8986  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  8987  	var i int32
  8988  
  8989  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  8990  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  8991  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  8992  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  8993  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  8994  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  8995  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  8996  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  8997  			return SQLITE_OK
  8998  		}
  8999  	}
  9000  
  9001  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9002  
  9003  	return SQLITE_OK
  9004  }
  9005  
  9006  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9007  	var pCsr uintptr
  9008  
  9009  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9010  	if pCsr == uintptr(0) {
  9011  		return SQLITE_NOMEM
  9012  	}
  9013  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})))
  9014  
  9015  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9016  	return SQLITE_OK
  9017  }
  9018  
  9019  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9020  	var i int32
  9021  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9022  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9023  	}
  9024  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9025  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9026  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9027  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9028  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9029  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9030  }
  9031  
  9032  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9033  	var pCsr uintptr = pCursor
  9034  	fts5tokResetCursor(tls, pCsr)
  9035  	sqlite3.Xsqlite3_free(tls, pCsr)
  9036  	return SQLITE_OK
  9037  }
  9038  
  9039  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9040  	var pCsr uintptr = pCursor
  9041  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9042  	return SQLITE_OK
  9043  }
  9044  
  9045  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9046  	var pCsr uintptr = pCtx
  9047  	var pRow uintptr
  9048  
  9049  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9050  		var nNew int32
  9051  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9052  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9053  		} else {
  9054  			nNew = 32
  9055  		}
  9056  		var aNew uintptr
  9057  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9058  		if aNew == uintptr(0) {
  9059  			return SQLITE_NOMEM
  9060  		}
  9061  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9062  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9063  	}
  9064  
  9065  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9066  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9067  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9068  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9069  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9070  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9071  				return 0
  9072  			}
  9073  			return 1
  9074  		}()
  9075  	}
  9076  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9077  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9078  		return SQLITE_NOMEM
  9079  	}
  9080  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken))
  9081  	*(*int8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = int8(0)
  9082  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9083  
  9084  	return SQLITE_OK
  9085  }
  9086  
  9087  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9088  	var rc int32 = SQLITE_ERROR
  9089  	var pCsr uintptr = pCursor
  9090  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9091  
  9092  	fts5tokResetCursor(tls, pCsr)
  9093  	if idxNum == 1 {
  9094  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9095  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9096  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9097  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9098  			rc = SQLITE_NOMEM
  9099  		} else {
  9100  			if nByte > 0 {
  9101  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte))
  9102  			}
  9103  			*(*int8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = int8(0)
  9104  			rc = (*struct {
  9105  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9106  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9107  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9108  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9109  				}{fts5tokCb})))
  9110  		}
  9111  	}
  9112  
  9113  	if rc != SQLITE_OK {
  9114  		return rc
  9115  	}
  9116  	return fts5tokNextMethod(tls, pCursor)
  9117  }
  9118  
  9119  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9120  	var pCsr uintptr = pCursor
  9121  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9122  }
  9123  
  9124  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9125  	var pCsr uintptr = pCursor
  9126  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9127  
  9128  	switch iCol {
  9129  	case 0:
  9130  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9131  		break
  9132  	case 1:
  9133  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9134  		break
  9135  	case 2:
  9136  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9137  		break
  9138  	case 3:
  9139  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9140  		break
  9141  	default:
  9142  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9143  		break
  9144  	}
  9145  	return SQLITE_OK
  9146  }
  9147  
  9148  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9149  	var pCsr uintptr = pCursor
  9150  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9151  	return SQLITE_OK
  9152  }
  9153  
  9154  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9155  	var rc int32
  9156  
  9157  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9158  	return rc
  9159  }
  9160  
  9161  var fts5tok_module = sqlite3_module{
  9162  	FxCreate:     0,
  9163  	FxConnect:    0,
  9164  	FxBestIndex:  0,
  9165  	FxDisconnect: 0,
  9166  	FxDestroy:    0,
  9167  	FxOpen:       0,
  9168  	FxClose:      0,
  9169  	FxFilter:     0,
  9170  	FxNext:       0,
  9171  	FxEof:        0,
  9172  	FxColumn:     0,
  9173  	FxRowid:      0,
  9174  }
  9175  
  9176  type sqlite3_api_routines = sqlite3_api_routines1
  9177  
  9178  type sqlite3_loadext_entry = uintptr
  9179  
  9180  type ApndVfs = sqlite3_vfs1
  9181  type ApndFile1 = struct {
  9182  	Fbase   sqlite3_file
  9183  	FiPgOne sqlite3_int64
  9184  	FiMark  sqlite3_int64
  9185  }
  9186  
  9187  type ApndFile = ApndFile1
  9188  
  9189  var apnd_vfs = sqlite3_vfs{
  9190  	FiVersion:          3,
  9191  	FmxPathname:        1024,
  9192  	FzName:             ts + 3248,
  9193  	FxOpen:             0,
  9194  	FxDelete:           0,
  9195  	FxAccess:           0,
  9196  	FxFullPathname:     0,
  9197  	FxDlOpen:           0,
  9198  	FxDlError:          0,
  9199  	FxDlSym:            0,
  9200  	FxDlClose:          0,
  9201  	FxRandomness:       0,
  9202  	FxSleep:            0,
  9203  	FxCurrentTime:      0,
  9204  	FxGetLastError:     0,
  9205  	FxCurrentTimeInt64: 0,
  9206  	FxSetSystemCall:    0,
  9207  	FxGetSystemCall:    0,
  9208  	FxNextSystemCall:   0,
  9209  }
  9210  
  9211  var apnd_io_methods = sqlite3_io_methods{
  9212  	FiVersion:               3,
  9213  	FxClose:                 0,
  9214  	FxRead:                  0,
  9215  	FxWrite:                 0,
  9216  	FxTruncate:              0,
  9217  	FxSync:                  0,
  9218  	FxFileSize:              0,
  9219  	FxLock:                  0,
  9220  	FxUnlock:                0,
  9221  	FxCheckReservedLock:     0,
  9222  	FxFileControl:           0,
  9223  	FxSectorSize:            0,
  9224  	FxDeviceCharacteristics: 0,
  9225  	FxShmMap:                0,
  9226  	FxShmLock:               0,
  9227  	FxShmBarrier:            0,
  9228  	FxShmUnmap:              0,
  9229  	FxFetch:                 0,
  9230  	FxUnfetch:               0,
  9231  }
  9232  
  9233  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9234  	pFile = pFile + uintptr(1)*24
  9235  	return (*struct {
  9236  		f func(*libc.TLS, uintptr) int32
  9237  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9238  }
  9239  
  9240  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9241  	var paf uintptr = pFile
  9242  	pFile = pFile + uintptr(1)*24
  9243  	return (*struct {
  9244  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9245  	})(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)
  9246  }
  9247  
  9248  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9249  	bp := tls.Alloc(25)
  9250  	defer tls.Free(25)
  9251  
  9252  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9253  
  9254  	var i int32 = APND_MARK_FOS_SZ
  9255  	var rc int32
  9256  
  9257  	libc.Xmemcpy(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ))
  9258  	for libc.PreDecInt32(&i, 1) >= 0 {
  9259  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9260  		iPgOne >>= 8
  9261  	}
  9262  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9263  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9264  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9265  	})(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)) {
  9266  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9267  	}
  9268  	return rc
  9269  }
  9270  
  9271  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9272  	var paf uintptr = pFile
  9273  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9274  	if iWriteEnd >= int64(0x40000000) {
  9275  		return SQLITE_FULL
  9276  	}
  9277  	pFile = pFile + uintptr(1)*24
  9278  
  9279  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9280  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9281  		if SQLITE_OK != rc {
  9282  			return rc
  9283  		}
  9284  	}
  9285  	return (*struct {
  9286  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9287  	})(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)
  9288  }
  9289  
  9290  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
  9291  	var paf uintptr = pFile
  9292  	pFile = pFile + uintptr(1)*24
  9293  
  9294  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
  9295  		return SQLITE_IOERR
  9296  	}
  9297  
  9298  	return (*struct {
  9299  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
  9300  	})(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))
  9301  }
  9302  
  9303  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
  9304  	pFile = pFile + uintptr(1)*24
  9305  	return (*struct {
  9306  		f func(*libc.TLS, uintptr, int32) int32
  9307  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
  9308  }
  9309  
  9310  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
  9311  	var paf uintptr = pFile
  9312  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
  9313  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
  9314  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9315  		}
  9316  		return int64(0)
  9317  	}()
  9318  	return SQLITE_OK
  9319  }
  9320  
  9321  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9322  	pFile = pFile + uintptr(1)*24
  9323  	return (*struct {
  9324  		f func(*libc.TLS, uintptr, int32) int32
  9325  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
  9326  }
  9327  
  9328  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9329  	pFile = pFile + uintptr(1)*24
  9330  	return (*struct {
  9331  		f func(*libc.TLS, uintptr, int32) int32
  9332  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
  9333  }
  9334  
  9335  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
  9336  	pFile = pFile + uintptr(1)*24
  9337  	return (*struct {
  9338  		f func(*libc.TLS, uintptr, uintptr) int32
  9339  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
  9340  }
  9341  
  9342  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
  9343  	bp := tls.Alloc(16)
  9344  	defer tls.Free(16)
  9345  
  9346  	var paf uintptr = pFile
  9347  	var rc int32
  9348  	pFile = pFile + uintptr(1)*24
  9349  	if op == SQLITE_FCNTL_SIZE_HINT {
  9350  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9351  	}
  9352  	rc = (*struct {
  9353  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9354  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
  9355  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
  9356  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
  9357  	}
  9358  	return rc
  9359  }
  9360  
  9361  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
  9362  	pFile = pFile + uintptr(1)*24
  9363  	return (*struct {
  9364  		f func(*libc.TLS, uintptr) int32
  9365  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
  9366  }
  9367  
  9368  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
  9369  	pFile = pFile + uintptr(1)*24
  9370  	return (*struct {
  9371  		f func(*libc.TLS, uintptr) int32
  9372  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
  9373  }
  9374  
  9375  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
  9376  	pFile = pFile + uintptr(1)*24
  9377  	return (*struct {
  9378  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
  9379  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
  9380  }
  9381  
  9382  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
  9383  	pFile = pFile + uintptr(1)*24
  9384  	return (*struct {
  9385  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
  9386  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
  9387  }
  9388  
  9389  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
  9390  	pFile = pFile + uintptr(1)*24
  9391  	(*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)
  9392  }
  9393  
  9394  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
  9395  	pFile = pFile + uintptr(1)*24
  9396  	return (*struct {
  9397  		f func(*libc.TLS, uintptr, int32) int32
  9398  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
  9399  }
  9400  
  9401  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
  9402  	var p uintptr = pFile
  9403  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
  9404  		return SQLITE_IOERR
  9405  	}
  9406  	pFile = pFile + uintptr(1)*24
  9407  	return (*struct {
  9408  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
  9409  	})(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)
  9410  }
  9411  
  9412  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
  9413  	var p uintptr = pFile
  9414  	pFile = pFile + uintptr(1)*24
  9415  	return (*struct {
  9416  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
  9417  	})(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)
  9418  }
  9419  
  9420  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
  9421  	bp := tls.Alloc(25)
  9422  	defer tls.Free(25)
  9423  
  9424  	var rc int32
  9425  	var i int32
  9426  	var iMark sqlite3_int64
  9427  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
  9428  
  9429  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
  9430  		return int64(-1)
  9431  	}
  9432  	rc = (*struct {
  9433  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9434  	})(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))
  9435  	if rc != 0 {
  9436  		return int64(-1)
  9437  	}
  9438  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
  9439  		return int64(-1)
  9440  	}
  9441  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
  9442  	for i = 1; i < 8; i++ {
  9443  		msbs = msbs - 8
  9444  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
  9445  	}
  9446  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
  9447  		return int64(-1)
  9448  	}
  9449  	if iMark&int64(0x1ff) != 0 {
  9450  		return int64(-1)
  9451  	}
  9452  	return iMark
  9453  }
  9454  
  9455  var apvfsSqliteHdr = *(*[16]int8)(unsafe.Pointer(ts + 3288))
  9456  
  9457  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9458  	bp := tls.Alloc(16)
  9459  	defer tls.Free(16)
  9460  
  9461  	var rc int32
  9462  
  9463  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
  9464  	if iMark >= int64(0) {
  9465  		rc = (*struct {
  9466  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9467  		})(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)
  9468  		if SQLITE_OK == rc &&
  9469  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) == 0 &&
  9470  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
  9471  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
  9472  			return 1
  9473  		}
  9474  	}
  9475  	return 0
  9476  }
  9477  
  9478  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9479  	bp := tls.Alloc(16)
  9480  	defer tls.Free(16)
  9481  
  9482  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
  9483  		sz&int64(0x1ff) != int64(0) ||
  9484  		SQLITE_OK != (*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, int32(unsafe.Sizeof([16]int8{})), int64(0)) ||
  9487  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) != 0 {
  9488  		return 0
  9489  	} else {
  9490  		return 1
  9491  	}
  9492  	return int32(0)
  9493  }
  9494  
  9495  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
  9496  	bp := tls.Alloc(8)
  9497  	defer tls.Free(8)
  9498  
  9499  	var pApndFile uintptr = pFile
  9500  	var pBaseFile uintptr = pFile + uintptr(1)*24
  9501  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
  9502  	var rc int32
  9503  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
  9504  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
  9505  		return (*struct {
  9506  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9507  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
  9508  	}
  9509  	libc.Xmemset(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})))
  9510  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
  9511  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
  9512  
  9513  	rc = (*struct {
  9514  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9515  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
  9516  	if rc == SQLITE_OK {
  9517  		rc = (*struct {
  9518  			f func(*libc.TLS, uintptr, uintptr) int32
  9519  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
  9520  		if rc != 0 {
  9521  			(*struct {
  9522  				f func(*libc.TLS, uintptr) int32
  9523  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9524  		}
  9525  	}
  9526  	if rc != 0 {
  9527  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9528  		return rc
  9529  	}
  9530  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
  9531  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
  9532  		return SQLITE_OK
  9533  	}
  9534  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
  9535  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
  9536  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
  9537  		return SQLITE_OK
  9538  	}
  9539  	if flags&SQLITE_OPEN_CREATE == 0 {
  9540  		(*struct {
  9541  			f func(*libc.TLS, uintptr) int32
  9542  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9543  		rc = SQLITE_CANTOPEN
  9544  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9545  	} else {
  9546  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
  9547  	}
  9548  	return rc
  9549  }
  9550  
  9551  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
  9552  	return (*struct {
  9553  		f func(*libc.TLS, uintptr, uintptr, int32) int32
  9554  	})(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)
  9555  }
  9556  
  9557  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
  9558  	return (*struct {
  9559  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9560  	})(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)
  9561  }
  9562  
  9563  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
  9564  	return (*struct {
  9565  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9566  	})(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)
  9567  }
  9568  
  9569  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
  9570  	return (*struct {
  9571  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9572  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
  9573  }
  9574  
  9575  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
  9576  	(*struct {
  9577  		f func(*libc.TLS, uintptr, int32, uintptr)
  9578  	})(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)
  9579  }
  9580  
  9581  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
  9582  	return (*struct {
  9583  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
  9584  	})(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)
  9585  }
  9586  
  9587  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
  9588  	(*struct {
  9589  		f func(*libc.TLS, uintptr, uintptr)
  9590  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
  9591  }
  9592  
  9593  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
  9594  	return (*struct {
  9595  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9596  	})(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)
  9597  }
  9598  
  9599  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
  9600  	return (*struct {
  9601  		f func(*libc.TLS, uintptr, int32) int32
  9602  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
  9603  }
  9604  
  9605  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
  9606  	return (*struct {
  9607  		f func(*libc.TLS, uintptr, uintptr) int32
  9608  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
  9609  }
  9610  
  9611  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
  9612  	return (*struct {
  9613  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9614  	})(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)
  9615  }
  9616  
  9617  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
  9618  	return (*struct {
  9619  		f func(*libc.TLS, uintptr, uintptr) int32
  9620  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
  9621  }
  9622  
  9623  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
  9624  	return (*struct {
  9625  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
  9626  	})(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)
  9627  }
  9628  
  9629  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
  9630  	return (*struct {
  9631  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
  9632  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9633  }
  9634  
  9635  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
  9636  	return (*struct {
  9637  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9638  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9639  }
  9640  
  9641  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
  9642  	var rc int32 = SQLITE_OK
  9643  	var pOrig uintptr
  9644  	_ = pApi
  9645  
  9646  	_ = pzErrMsg
  9647  	_ = db
  9648  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
  9649  	if pOrig == uintptr(0) {
  9650  		return SQLITE_ERROR
  9651  	}
  9652  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
  9653  	apnd_vfs.FpAppData = pOrig
  9654  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
  9655  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
  9656  	if rc == SQLITE_OK {
  9657  		rc = SQLITE_OK | int32(1)<<8
  9658  	}
  9659  	return rc
  9660  }
  9661  
  9662  type div_t = struct {
  9663  	Fquot int32
  9664  	Frem  int32
  9665  }
  9666  
  9667  type ldiv_t = struct {
  9668  	Fquot int64
  9669  	Frem  int64
  9670  }
  9671  
  9672  type lldiv_t = struct {
  9673  	Fquot int64
  9674  	Frem  int64
  9675  }
  9676  
  9677  type qdiv_t = struct {
  9678  	Fquot quad_t
  9679  	Frem  quad_t
  9680  }
  9681  
  9682  type amatch_vtab1 = struct {
  9683  	Fbase        sqlite3_vtab
  9684  	FzClassName  uintptr
  9685  	FzDb         uintptr
  9686  	FzSelf       uintptr
  9687  	FzCostTab    uintptr
  9688  	FzVocabTab   uintptr
  9689  	FzVocabWord  uintptr
  9690  	FzVocabLang  uintptr
  9691  	FpRule       uintptr
  9692  	FrIns        amatch_cost
  9693  	FrDel        amatch_cost
  9694  	FrSub        amatch_cost
  9695  	F__ccgo_pad1 [4]byte
  9696  	Fdb          uintptr
  9697  	FpVCheck     uintptr
  9698  	FnCursor     int32
  9699  	F__ccgo_pad2 [4]byte
  9700  }
  9701  
  9702  type amatch_vtab = amatch_vtab1
  9703  type amatch_cursor1 = struct {
  9704  	Fbase        sqlite3_vtab_cursor
  9705  	FiRowid      sqlite3_int64
  9706  	FiLang       amatch_langid
  9707  	FrLimit      amatch_cost
  9708  	FnBuf        int32
  9709  	FoomErr      int32
  9710  	FnWord       int32
  9711  	F__ccgo_pad1 [4]byte
  9712  	FzBuf        uintptr
  9713  	FzInput      uintptr
  9714  	FpVtab       uintptr
  9715  	FpAllWords   uintptr
  9716  	FpCurrent    uintptr
  9717  	FpCost       uintptr
  9718  	FpWord       uintptr
  9719  }
  9720  
  9721  type amatch_cursor = amatch_cursor1
  9722  type amatch_rule1 = struct {
  9723  	FpNext       uintptr
  9724  	FzFrom       uintptr
  9725  	FrCost       amatch_cost
  9726  	FiLang       amatch_langid
  9727  	FnFrom       amatch_len
  9728  	FnTo         amatch_len
  9729  	FzTo         [4]int8
  9730  	F__ccgo_pad1 [2]byte
  9731  }
  9732  
  9733  type amatch_rule = amatch_rule1
  9734  type amatch_word1 = struct {
  9735  	FpNext  uintptr
  9736  	FsCost  amatch_avl
  9737  	FsWord  amatch_avl
  9738  	FrCost  amatch_cost
  9739  	FiSeq   int32
  9740  	FzCost  [10]int8
  9741  	FnMatch int16
  9742  	FzWord  [4]int8
  9743  }
  9744  
  9745  type amatch_word = amatch_word1
  9746  type amatch_avl1 = struct {
  9747  	FpWord       uintptr
  9748  	FzKey        uintptr
  9749  	FpBefore     uintptr
  9750  	FpAfter      uintptr
  9751  	FpUp         uintptr
  9752  	Fheight      int16
  9753  	Fimbalance   int16
  9754  	F__ccgo_pad1 [4]byte
  9755  }
  9756  
  9757  type amatch_avl = amatch_avl1
  9758  
  9759  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
  9760  	var hBefore int16
  9761  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9762  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
  9763  	} else {
  9764  		hBefore = int16(0)
  9765  	}
  9766  	var hAfter int16
  9767  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
  9768  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
  9769  	} else {
  9770  		hAfter = int16(0)
  9771  	}
  9772  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
  9773  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
  9774  		if int32(hBefore) > int32(hAfter) {
  9775  			return int32(hBefore)
  9776  		}
  9777  		return int32(hAfter)
  9778  	}() + 1)
  9779  }
  9780  
  9781  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
  9782  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
  9783  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
  9784  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
  9785  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
  9786  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
  9787  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
  9788  	if pY != 0 {
  9789  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
  9790  	}
  9791  	amatchAvlRecomputeHeight(tls, pP)
  9792  	amatchAvlRecomputeHeight(tls, pB)
  9793  	return pB
  9794  }
  9795  
  9796  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
  9797  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
  9798  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
  9799  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
  9800  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
  9801  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
  9802  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
  9803  	if pY != 0 {
  9804  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
  9805  	}
  9806  	amatchAvlRecomputeHeight(tls, pP)
  9807  	amatchAvlRecomputeHeight(tls, pA)
  9808  	return pA
  9809  }
  9810  
  9811  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
  9812  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
  9813  	if pUp == uintptr(0) {
  9814  		return pp
  9815  	}
  9816  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
  9817  		return pUp + 24
  9818  	}
  9819  	return pUp + 16
  9820  }
  9821  
  9822  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
  9823  	bp := tls.Alloc(8)
  9824  	defer tls.Free(8)
  9825  	*(*uintptr)(unsafe.Pointer(bp)) = p
  9826  
  9827  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
  9828  	var pp uintptr
  9829  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  9830  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9831  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
  9832  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
  9833  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
  9834  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
  9835  			}
  9836  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
  9837  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
  9838  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
  9839  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
  9840  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
  9841  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
  9842  			}
  9843  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
  9844  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
  9845  		}
  9846  		pTop = *(*uintptr)(unsafe.Pointer(bp))
  9847  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
  9848  	}
  9849  	return pTop
  9850  }
  9851  
  9852  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
  9853  	var c int32
  9854  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
  9855  		if c < 0 {
  9856  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9857  		} else {
  9858  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
  9859  		}
  9860  	}
  9861  	return p
  9862  }
  9863  
  9864  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
  9865  	if p != 0 {
  9866  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9867  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9868  		}
  9869  	}
  9870  	return p
  9871  }
  9872  
  9873  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
  9874  	var c int32
  9875  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
  9876  	if p == uintptr(0) {
  9877  		p = pNew
  9878  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
  9879  	} else {
  9880  		for p != 0 {
  9881  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
  9882  			if c < 0 {
  9883  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9884  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9885  				} else {
  9886  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
  9887  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
  9888  					break
  9889  				}
  9890  			} else if c > 0 {
  9891  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
  9892  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
  9893  				} else {
  9894  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
  9895  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
  9896  					break
  9897  				}
  9898  			} else {
  9899  				return p
  9900  			}
  9901  		}
  9902  	}
  9903  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
  9904  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
  9905  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
  9906  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
  9907  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
  9908  
  9909  	return uintptr(0)
  9910  }
  9911  
  9912  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
  9913  	var ppParent uintptr
  9914  	var pBalance uintptr = uintptr(0)
  9915  
  9916  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
  9917  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
  9918  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
  9919  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9920  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
  9921  		var pX uintptr
  9922  		var pY uintptr
  9923  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
  9924  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
  9925  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
  9926  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
  9927  		}
  9928  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
  9929  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
  9930  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
  9931  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
  9932  		} else {
  9933  			pBalance = pX
  9934  		}
  9935  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
  9936  		if pY != 0 {
  9937  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
  9938  		}
  9939  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9940  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
  9941  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
  9942  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
  9943  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9944  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
  9945  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
  9946  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9947  	}
  9948  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
  9949  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
  9950  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
  9951  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
  9952  
  9953  }
  9954  
  9955  type amatch_cost = int32
  9956  type amatch_len = int8
  9957  type amatch_langid = int32
  9958  
  9959  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
  9960  	bp := tls.Alloc(32)
  9961  	defer tls.Free(32)
  9962  
  9963  	var pTail uintptr
  9964  
  9965  	pTail = bp
  9966  	for pA != 0 && pB != 0 {
  9967  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
  9968  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
  9969  			pTail = pA
  9970  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
  9971  		} else {
  9972  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
  9973  			pTail = pB
  9974  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
  9975  		}
  9976  	}
  9977  	if pA == uintptr(0) {
  9978  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
  9979  	} else {
  9980  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
  9981  	}
  9982  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
  9983  }
  9984  
  9985  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
  9986  	bp := tls.Alloc(48)
  9987  	defer tls.Free(48)
  9988  
  9989  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
  9990  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
  9991  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
  9992  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
  9993  
  9994  	var rc int32 = SQLITE_OK
  9995  	var nFrom int32
  9996  	var nTo int32
  9997  	var pRule uintptr = uintptr(0)
  9998  
  9999  	if zFrom == uintptr(0) {
 10000  		zFrom = ts + 584
 10001  	}
 10002  	if zTo == uintptr(0) {
 10003  		zTo = ts + 584
 10004  	}
 10005  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 10006  	nTo = int32(libc.Xstrlen(tls, zTo))
 10007  
 10008  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 10009  		if int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zFrom + 1))) == 0 {
 10010  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 10011  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 10012  			}
 10013  		}
 10014  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 10015  		return SQLITE_OK
 10016  	}
 10017  
 10018  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 10019  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 10020  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 10021  		rc = SQLITE_ERROR
 10022  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 10023  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 10024  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 10025  		rc = SQLITE_ERROR
 10026  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 10027  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 10028  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 10029  		rc = SQLITE_ERROR
 10030  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 10031  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 10032  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 10033  		}
 10034  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 10035  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 10036  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 10037  		}
 10038  	} else {
 10039  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 10040  		if pRule == uintptr(0) {
 10041  			rc = SQLITE_NOMEM
 10042  		} else {
 10043  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})))
 10044  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 10045  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 10046  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 10047  			libc.Xmemcpy(tls, pRule+26, zTo, uint64(nTo+1))
 10048  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 10049  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 10050  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 10051  		}
 10052  	}
 10053  
 10054  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 10055  	return rc
 10056  }
 10057  
 10058  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 10059  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 10060  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 10061  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 10062  		sqlite3.Xsqlite3_free(tls, pRule)
 10063  	}
 10064  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 10065  }
 10066  
 10067  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 10068  	bp := tls.Alloc(192)
 10069  	defer tls.Free(192)
 10070  
 10071  	var rc int32 = SQLITE_OK
 10072  	var zSql uintptr
 10073  	var pHead uintptr = uintptr(0)
 10074  
 10075  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 10076  	if zSql == uintptr(0) {
 10077  		rc = SQLITE_NOMEM
 10078  	} else {
 10079  		var rc2 int32
 10080  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 10081  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 10082  		if rc != SQLITE_OK {
 10083  			*(*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)))
 10084  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 10085  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 10086  				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)))))
 10087  			rc = SQLITE_ERROR
 10088  		} else {
 10089  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 10090  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 10091  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 10092  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 10093  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 10094  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 10095  				}
 10096  			}
 10097  		}
 10098  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 10099  		if rc == SQLITE_OK {
 10100  			rc = rc2
 10101  		}
 10102  	}
 10103  	sqlite3.Xsqlite3_free(tls, zSql)
 10104  
 10105  	if rc == SQLITE_OK {
 10106  		var i uint32
 10107  		var pX uintptr
 10108  
 10109  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10110  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10111  		}
 10112  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 10113  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 10114  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 10115  			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++ {
 10116  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10117  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10118  			}
 10119  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10120  		}
 10121  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 10122  		i = uint32(1)
 10123  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10124  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10125  		}
 10126  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 10127  	} else {
 10128  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 10129  	}
 10130  
 10131  	return rc
 10132  }
 10133  
 10134  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 10135  	var nIn sqlite3_int64
 10136  	var zOut uintptr
 10137  
 10138  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 10139  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 10140  	if zOut != 0 {
 10141  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 10142  
 10143  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 10144  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 10145  		} else {
 10146  			var iOut int32 = 0
 10147  			var iIn int32
 10148  
 10149  			if int32(q) == '[' {
 10150  				q = int8(']')
 10151  			}
 10152  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 10153  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 10154  					iIn++
 10155  				}
 10156  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 10157  			}
 10158  		}
 10159  
 10160  	}
 10161  	return zOut
 10162  }
 10163  
 10164  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 10165  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 10166  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10167  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 10168  	}
 10169  }
 10170  
 10171  func amatchFree(tls *libc.TLS, p uintptr) {
 10172  	if p != 0 {
 10173  		amatchFreeRules(tls, p)
 10174  		amatchVCheckClear(tls, p)
 10175  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 10176  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 10177  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 10178  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 10179  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 10180  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 10181  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 10182  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10183  		sqlite3.Xsqlite3_free(tls, p)
 10184  	}
 10185  }
 10186  
 10187  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10188  	var p uintptr = pVtab
 10189  
 10190  	amatchFree(tls, p)
 10191  	return SQLITE_OK
 10192  }
 10193  
 10194  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 10195  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 10196  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 10197  	var i int32
 10198  	if nStr < nKey+1 {
 10199  		return uintptr(0)
 10200  	}
 10201  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 10202  		return uintptr(0)
 10203  	}
 10204  	for i = nKey; libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 10205  	}
 10206  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 10207  		return uintptr(0)
 10208  	}
 10209  	i++
 10210  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 10211  		i++
 10212  	}
 10213  	return zStr + uintptr(i)
 10214  }
 10215  
 10216  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10217  	bp := tls.Alloc(32)
 10218  	defer tls.Free(32)
 10219  
 10220  	var rc int32
 10221  	var pNew uintptr
 10222  	var zModule uintptr
 10223  	var zDb uintptr
 10224  	var zVal uintptr
 10225  	var i int32
 10226  	rc = SQLITE_OK
 10227  	pNew = uintptr(0)
 10228  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 10229  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 10230  
 10231  	_ = pAux
 10232  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10233  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 10234  	if !(pNew == uintptr(0)) {
 10235  		goto __1
 10236  	}
 10237  	return SQLITE_NOMEM
 10238  __1:
 10239  	;
 10240  	rc = SQLITE_NOMEM
 10241  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10242  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 10243  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 10244  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 10245  		goto __2
 10246  	}
 10247  	goto amatchConnectError
 10248  __2:
 10249  	;
 10250  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 10251  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 10252  		goto __3
 10253  	}
 10254  	goto amatchConnectError
 10255  __3:
 10256  	;
 10257  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 10258  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 10259  		goto __4
 10260  	}
 10261  	goto amatchConnectError
 10262  __4:
 10263  	;
 10264  	i = 3
 10265  __5:
 10266  	if !(i < argc) {
 10267  		goto __7
 10268  	}
 10269  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10270  	if !(zVal != 0) {
 10271  		goto __8
 10272  	}
 10273  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 10274  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 10275  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 10276  		goto __9
 10277  	}
 10278  	goto amatchConnectError
 10279  __9:
 10280  	;
 10281  	goto __6
 10282  __8:
 10283  	;
 10284  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10285  	if !(zVal != 0) {
 10286  		goto __10
 10287  	}
 10288  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 10289  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 10290  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 10291  		goto __11
 10292  	}
 10293  	goto amatchConnectError
 10294  __11:
 10295  	;
 10296  	goto __6
 10297  __10:
 10298  	;
 10299  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10300  	if !(zVal != 0) {
 10301  		goto __12
 10302  	}
 10303  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 10304  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 10305  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 10306  		goto __13
 10307  	}
 10308  	goto amatchConnectError
 10309  __13:
 10310  	;
 10311  	goto __6
 10312  __12:
 10313  	;
 10314  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10315  	if !(zVal != 0) {
 10316  		goto __14
 10317  	}
 10318  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 10319  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 10320  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10321  		goto __15
 10322  	}
 10323  	goto amatchConnectError
 10324  __15:
 10325  	;
 10326  	goto __6
 10327  __14:
 10328  	;
 10329  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 10330  	amatchFree(tls, pNew)
 10331  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10332  	return SQLITE_ERROR
 10333  	goto __6
 10334  __6:
 10335  	i++
 10336  	goto __5
 10337  	goto __7
 10338  __7:
 10339  	;
 10340  	rc = SQLITE_OK
 10341  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10342  		goto __16
 10343  	}
 10344  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 10345  	rc = SQLITE_ERROR
 10346  	goto __17
 10347  __16:
 10348  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 10349  __17:
 10350  	;
 10351  	if !(rc == SQLITE_OK) {
 10352  		goto __18
 10353  	}
 10354  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 10355  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10356  		ts+3599)
 10357  __18:
 10358  	;
 10359  	if !(rc != SQLITE_OK) {
 10360  		goto __19
 10361  	}
 10362  	amatchFree(tls, pNew)
 10363  __19:
 10364  	;
 10365  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 10366  	return rc
 10367  
 10368  amatchConnectError:
 10369  	amatchFree(tls, pNew)
 10370  	return rc
 10371  }
 10372  
 10373  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 10374  	var p uintptr = pVTab
 10375  	var pCur uintptr
 10376  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 10377  	if pCur == uintptr(0) {
 10378  		return SQLITE_NOMEM
 10379  	}
 10380  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})))
 10381  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 10382  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10383  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 10384  	return SQLITE_OK
 10385  }
 10386  
 10387  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 10388  	var pWord uintptr
 10389  	var pNextWord uintptr
 10390  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 10391  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 10392  		sqlite3.Xsqlite3_free(tls, pWord)
 10393  	}
 10394  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 10395  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 10396  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 10397  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10398  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 10399  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10400  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 10401  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 10402  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 10403  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 10404  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 10405  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 10406  }
 10407  
 10408  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 10409  	var pCur uintptr = cur
 10410  	amatchClearCursor(tls, pCur)
 10411  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 10412  	sqlite3.Xsqlite3_free(tls, pCur)
 10413  	return SQLITE_OK
 10414  }
 10415  
 10416  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 10417  	*(*int8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 10418  	*(*int8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 10419  	*(*int8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 10420  	*(*int8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 10421  }
 10422  
 10423  var a = *(*[65]int8)(unsafe.Pointer(ts + 3666))
 10424  
 10425  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 10426  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 10427  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 10428  	*(*int8)(unsafe.Pointer(pWord + 112 + 8)) = int8(0)
 10429  }
 10430  
 10431  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 10432  	for int32(libc.AssignPtrInt8(libc.PostIncUintptr(&dest, 1), *(*int8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 10433  	}
 10434  }
 10435  
 10436  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 10437  	for *(*int8)(unsafe.Pointer(dest)) != 0 {
 10438  		dest++
 10439  	}
 10440  	amatchStrcpy(tls, dest, src)
 10441  }
 10442  
 10443  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 10444  	bp := tls.Alloc(4)
 10445  	defer tls.Free(4)
 10446  
 10447  	var pWord uintptr
 10448  	var pNode uintptr
 10449  	var pOther uintptr
 10450  	_ = pOther
 10451  	var nBase int32
 10452  	var nTail int32
 10453  
 10454  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 10455  		return
 10456  	}
 10457  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 10458  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 10459  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 10460  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 10461  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 10462  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 10463  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10464  			return
 10465  		}
 10466  	}
 10467  	amatchEncodeInt(tls, nMatch, bp)
 10468  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2))
 10469  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase))
 10470  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1))
 10471  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10472  	if pNode != 0 {
 10473  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10474  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 10475  			amatchAvlRemove(tls, pCur+80, pWord+8)
 10476  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10477  			amatchWriteCost(tls, pWord)
 10478  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10479  			_ = pOther
 10480  		}
 10481  		return
 10482  	}
 10483  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 10484  	if pWord == uintptr(0) {
 10485  		return
 10486  	}
 10487  	libc.Xmemset(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})))
 10488  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10489  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 10490  	amatchWriteCost(tls, pWord)
 10491  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 10492  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 10493  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 10494  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 10495  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 10496  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10497  	_ = pOther
 10498  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 10499  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 10500  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10501  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 10502  	_ = pOther
 10503  }
 10504  
 10505  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 10506  	bp := tls.Alloc(80)
 10507  	defer tls.Free(80)
 10508  
 10509  	var pCur uintptr = cur
 10510  	var pWord uintptr = uintptr(0)
 10511  	var pNode uintptr
 10512  	var isMatch int32 = 0
 10513  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 10514  	var nWord int32
 10515  	var rc int32
 10516  	var i int32
 10517  	var zW uintptr
 10518  	var pRule uintptr
 10519  	var zBuf uintptr = uintptr(0)
 10520  	var nBuf int8 = int8(0)
 10521  
 10522  	var nNextIn int32
 10523  
 10524  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 10525  		var zSql uintptr
 10526  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*int8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 10527  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10528  				ts+3731,
 10529  				libc.VaList(bp, ts+3753,
 10530  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10531  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 10532  		} else {
 10533  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10534  				ts+3792,
 10535  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10536  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 10537  		}
 10538  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 10539  		sqlite3.Xsqlite3_free(tls, zSql)
 10540  		if rc != 0 {
 10541  			return rc
 10542  		}
 10543  	}
 10544  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10545  
 10546  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 10547  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 10548  		if pNode == uintptr(0) {
 10549  			pWord = uintptr(0)
 10550  			break
 10551  		}
 10552  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10553  		amatchAvlRemove(tls, pCur+80, pWord+8)
 10554  
 10555  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 10556  		if nWord+20 > int32(nBuf) {
 10557  			nBuf = int8(nWord + 100)
 10558  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 10559  			if zBuf == uintptr(0) {
 10560  				return SQLITE_NOMEM
 10561  			}
 10562  		}
 10563  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 10564  		*(*int8)(unsafe.Pointer(bp + 64)) = int8(0)
 10565  		*(*int8)(unsafe.Pointer(bp + 72)) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 10566  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 {
 10567  			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++ {
 10568  				*(*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)))
 10569  			}
 10570  			*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = int8(0)
 10571  			nNextIn = i
 10572  		} else {
 10573  			nNextIn = 0
 10574  		}
 10575  
 10576  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*int8)(unsafe.Pointer(bp + 72))) != '*' {
 10577  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10578  			amatchStrcat(tls, zBuf, bp+72)
 10579  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 10580  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10581  			if rc == SQLITE_ROW {
 10582  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10583  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 10584  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 10585  				}
 10586  			}
 10587  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10588  		}
 10589  
 10590  		for 1 != 0 {
 10591  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10592  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10593  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 10594  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10595  			if rc != SQLITE_ROW {
 10596  				break
 10597  			}
 10598  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10599  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10600  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 10601  				break
 10602  			}
 10603  			if int32(*(*int8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*int8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 10604  				int32(*(*int8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 10605  				isMatch = 1
 10606  				*(*int8)(unsafe.Pointer(bp + 72)) = int8(0)
 10607  				nNextIn = 0
 10608  				break
 10609  			}
 10610  			*(*int8)(unsafe.Pointer(bp + 64)) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord)))
 10611  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 10612  				*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 10613  			}
 10614  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = int8(0)
 10615  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10616  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 10617  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 10618  					zBuf, bp+64)
 10619  			}
 10620  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 10621  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10622  					zBuf, bp+64)
 10623  			}
 10624  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 10625  				break
 10626  			}
 10627  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 10628  		}
 10629  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10630  
 10631  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 10632  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10633  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10634  				zBuf, ts+584)
 10635  		}
 10636  
 10637  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 10638  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 10639  				continue
 10640  			}
 10641  			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 {
 10642  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 10643  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 10644  			}
 10645  		}
 10646  	}
 10647  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 10648  	sqlite3.Xsqlite3_free(tls, zBuf)
 10649  	return SQLITE_OK
 10650  }
 10651  
 10652  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 10653  	bp := tls.Alloc(8)
 10654  	defer tls.Free(8)
 10655  
 10656  	var pCur uintptr = pVtabCursor
 10657  	var zWord uintptr = ts + 3840
 10658  	var idx int32
 10659  
 10660  	amatchClearCursor(tls, pCur)
 10661  	idx = 0
 10662  	if idxNum&1 != 0 {
 10663  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 10664  		idx++
 10665  	}
 10666  	if idxNum&2 != 0 {
 10667  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10668  		idx++
 10669  	}
 10670  	if idxNum&4 != 0 {
 10671  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10672  		idx++
 10673  	}
 10674  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 10675  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 10676  		return SQLITE_NOMEM
 10677  	}
 10678  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 10679  	amatchNext(tls, pVtabCursor)
 10680  
 10681  	return SQLITE_OK
 10682  }
 10683  
 10684  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 10685  	var pCur uintptr = cur
 10686  	switch i {
 10687  	case AMATCH_COL_WORD:
 10688  		{
 10689  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 10690  			break
 10691  
 10692  		}
 10693  	case AMATCH_COL_DISTANCE:
 10694  		{
 10695  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 10696  			break
 10697  
 10698  		}
 10699  	case AMATCH_COL_LANGUAGE:
 10700  		{
 10701  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10702  			break
 10703  
 10704  		}
 10705  	case AMATCH_COL_NWORD:
 10706  		{
 10707  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 10708  			break
 10709  
 10710  		}
 10711  	default:
 10712  		{
 10713  			sqlite3.Xsqlite3_result_null(tls, ctx)
 10714  			break
 10715  
 10716  		}
 10717  	}
 10718  	return SQLITE_OK
 10719  }
 10720  
 10721  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 10722  	var pCur uintptr = cur
 10723  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 10724  	return SQLITE_OK
 10725  }
 10726  
 10727  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 10728  	var pCur uintptr = cur
 10729  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 10730  }
 10731  
 10732  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 10733  	var iPlan int32 = 0
 10734  	var iDistTerm int32 = -1
 10735  	var iLangTerm int32 = -1
 10736  	var i int32
 10737  	var pConstraint uintptr
 10738  
 10739  	_ = tab
 10740  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 10741  	i = 0
 10742  __1:
 10743  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 10744  		goto __3
 10745  	}
 10746  	{
 10747  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 10748  			goto __2
 10749  		}
 10750  		if iPlan&1 == 0 &&
 10751  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 10752  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 10753  			iPlan = iPlan | 1
 10754  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 10755  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10756  		}
 10757  		if iPlan&2 == 0 &&
 10758  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 10759  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 10760  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 10761  			iPlan = iPlan | 2
 10762  			iDistTerm = i
 10763  		}
 10764  		if iPlan&4 == 0 &&
 10765  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 10766  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 10767  			iPlan = iPlan | 4
 10768  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10769  			iLangTerm = i
 10770  		}
 10771  
 10772  	}
 10773  	goto __2
 10774  __2:
 10775  	i++
 10776  	pConstraint += 12
 10777  	goto __1
 10778  	goto __3
 10779  __3:
 10780  	;
 10781  	if iPlan&2 != 0 {
 10782  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 10783  	}
 10784  	if iPlan&4 != 0 {
 10785  		var idx int32 = 1
 10786  		if iPlan&1 != 0 {
 10787  			idx++
 10788  		}
 10789  		if iPlan&2 != 0 {
 10790  			idx++
 10791  		}
 10792  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 10793  	}
 10794  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 10795  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 10796  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 10797  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 10798  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 10799  	}
 10800  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 10801  
 10802  	return SQLITE_OK
 10803  }
 10804  
 10805  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 10806  	bp := tls.Alloc(24)
 10807  	defer tls.Free(24)
 10808  
 10809  	var p uintptr = pVTab
 10810  	var zCmd uintptr
 10811  	_ = pRowid
 10812  	if argc == 1 {
 10813  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 10814  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10815  		return SQLITE_ERROR
 10816  	}
 10817  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 10818  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 10819  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10820  		return SQLITE_ERROR
 10821  	}
 10822  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 10823  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 10824  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 10825  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 10826  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10827  		return SQLITE_ERROR
 10828  	}
 10829  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 10830  	if zCmd == uintptr(0) {
 10831  		return SQLITE_OK
 10832  	}
 10833  
 10834  	return SQLITE_OK
 10835  }
 10836  
 10837  var amatchModule = sqlite3_module{
 10838  	FxCreate:     0,
 10839  	FxConnect:    0,
 10840  	FxBestIndex:  0,
 10841  	FxDisconnect: 0,
 10842  	FxDestroy:    0,
 10843  	FxOpen:       0,
 10844  	FxClose:      0,
 10845  	FxFilter:     0,
 10846  	FxNext:       0,
 10847  	FxEof:        0,
 10848  	FxColumn:     0,
 10849  	FxRowid:      0,
 10850  	FxUpdate:     0,
 10851  }
 10852  
 10853  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10854  	var rc int32 = SQLITE_OK
 10855  	_ = pApi
 10856  
 10857  	_ = pzErrMsg
 10858  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 10859  	return rc
 10860  }
 10861  
 10862  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 10863  
 10864  type carray_bind1 = struct {
 10865  	FaData  uintptr
 10866  	FnData  int32
 10867  	FmFlags int32
 10868  	FxDel   uintptr
 10869  }
 10870  
 10871  type carray_bind = carray_bind1
 10872  
 10873  type carray_cursor1 = struct {
 10874  	Fbase        sqlite3_vtab_cursor
 10875  	FiRowid      sqlite3_int64
 10876  	FpPtr        uintptr
 10877  	FiCnt        sqlite3_int64
 10878  	FeType       uint8
 10879  	F__ccgo_pad1 [7]byte
 10880  }
 10881  
 10882  type carray_cursor = carray_cursor1
 10883  
 10884  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10885  	var pNew uintptr
 10886  	var rc int32
 10887  
 10888  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10889  		ts+3985)
 10890  	if rc == SQLITE_OK {
 10891  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 10892  		if pNew == uintptr(0) {
 10893  			return SQLITE_NOMEM
 10894  		}
 10895  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 10896  	}
 10897  	return rc
 10898  }
 10899  
 10900  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10901  	sqlite3.Xsqlite3_free(tls, pVtab)
 10902  	return SQLITE_OK
 10903  }
 10904  
 10905  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 10906  	var pCur uintptr
 10907  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 10908  	if pCur == uintptr(0) {
 10909  		return SQLITE_NOMEM
 10910  	}
 10911  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})))
 10912  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10913  	return SQLITE_OK
 10914  }
 10915  
 10916  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 10917  	sqlite3.Xsqlite3_free(tls, cur)
 10918  	return SQLITE_OK
 10919  }
 10920  
 10921  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 10922  	var pCur uintptr = cur
 10923  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 10924  	return SQLITE_OK
 10925  }
 10926  
 10927  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 10928  	var pCur uintptr = cur
 10929  	var x sqlite3_int64 = int64(0)
 10930  	switch i {
 10931  	case CARRAY_COLUMN_POINTER:
 10932  		return SQLITE_OK
 10933  	case CARRAY_COLUMN_COUNT:
 10934  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 10935  		break
 10936  	case CARRAY_COLUMN_CTYPE:
 10937  		{
 10938  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 10939  			return SQLITE_OK
 10940  
 10941  		}
 10942  	default:
 10943  		{
 10944  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 10945  			case CARRAY_INT32:
 10946  				{
 10947  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10948  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 10949  					return SQLITE_OK
 10950  
 10951  				}
 10952  			case CARRAY_INT64:
 10953  				{
 10954  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10955  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 10956  					return SQLITE_OK
 10957  
 10958  				}
 10959  			case CARRAY_DOUBLE:
 10960  				{
 10961  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10962  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 10963  					return SQLITE_OK
 10964  
 10965  				}
 10966  			case CARRAY_TEXT:
 10967  				{
 10968  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10969  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 10970  					return SQLITE_OK
 10971  
 10972  				}
 10973  			}
 10974  
 10975  		}
 10976  	}
 10977  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 10978  	return SQLITE_OK
 10979  }
 10980  
 10981  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 10982  	var pCur uintptr = cur
 10983  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 10984  	return SQLITE_OK
 10985  }
 10986  
 10987  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 10988  	var pCur uintptr = cur
 10989  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 10990  }
 10991  
 10992  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 10993  	bp := tls.Alloc(8)
 10994  	defer tls.Free(8)
 10995  
 10996  	var pCur uintptr = pVtabCursor
 10997  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 10998  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 10999  	switch idxNum {
 11000  	case 1:
 11001  		{
 11002  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 11003  			if pBind == uintptr(0) {
 11004  				break
 11005  			}
 11006  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 11007  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 11008  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 11009  			break
 11010  
 11011  		}
 11012  	case 2:
 11013  		fallthrough
 11014  	case 3:
 11015  		{
 11016  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 11017  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 11018  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 11019  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 11020  				}
 11021  				return int64(0)
 11022  			}()
 11023  			if idxNum < 3 {
 11024  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 11025  			} else {
 11026  				var i uint8
 11027  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 11028  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11029  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 11030  						break
 11031  					}
 11032  				}
 11033  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 11034  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11035  						ts+4067, libc.VaList(bp, zType))
 11036  					return SQLITE_ERROR
 11037  				} else {
 11038  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 11039  				}
 11040  			}
 11041  			break
 11042  
 11043  		}
 11044  	}
 11045  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 11046  	return SQLITE_OK
 11047  }
 11048  
 11049  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11050  	var i int32
 11051  	var ptrIdx int32 = -1
 11052  	var cntIdx int32 = -1
 11053  	var ctypeIdx int32 = -1
 11054  
 11055  	var pConstraint uintptr
 11056  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11057  	i = 0
 11058  __1:
 11059  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11060  		goto __3
 11061  	}
 11062  	{
 11063  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11064  			goto __2
 11065  		}
 11066  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 11067  			goto __2
 11068  		}
 11069  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 11070  		case CARRAY_COLUMN_POINTER:
 11071  			ptrIdx = i
 11072  			break
 11073  		case CARRAY_COLUMN_COUNT:
 11074  			cntIdx = i
 11075  			break
 11076  		case CARRAY_COLUMN_CTYPE:
 11077  			ctypeIdx = i
 11078  			break
 11079  		}
 11080  
 11081  	}
 11082  	goto __2
 11083  __2:
 11084  	i++
 11085  	pConstraint += 12
 11086  	goto __1
 11087  	goto __3
 11088  __3:
 11089  	;
 11090  	if ptrIdx >= 0 {
 11091  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 11092  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 11093  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 11094  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 11095  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 11096  		if cntIdx >= 0 {
 11097  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 11098  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 11099  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 11100  			if ctypeIdx >= 0 {
 11101  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 11102  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 11103  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 11104  			}
 11105  		}
 11106  	} else {
 11107  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 11108  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 11109  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 11110  	}
 11111  	return SQLITE_OK
 11112  }
 11113  
 11114  var carrayModule = sqlite3_module{
 11115  	FxConnect:    0,
 11116  	FxBestIndex:  0,
 11117  	FxDisconnect: 0,
 11118  	FxOpen:       0,
 11119  	FxClose:      0,
 11120  	FxFilter:     0,
 11121  	FxNext:       0,
 11122  	FxEof:        0,
 11123  	FxColumn:     0,
 11124  	FxRowid:      0,
 11125  }
 11126  
 11127  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 11128  	var p uintptr = pPtr
 11129  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 11130  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 11131  	}
 11132  	sqlite3.Xsqlite3_free(tls, p)
 11133  }
 11134  
 11135  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 11136  	var pNew uintptr
 11137  	var i int32
 11138  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 11139  	if pNew == uintptr(0) {
 11140  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 11141  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 11142  		}
 11143  		return SQLITE_NOMEM
 11144  	}
 11145  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 11146  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 11147  	if xDestroy == libc.UintptrFromInt32(-1) {
 11148  		var sz sqlite3_int64 = sqlite3_int64(nData)
 11149  		switch mFlags & 0x03 {
 11150  		case CARRAY_INT32:
 11151  			sz = sz * int64(4)
 11152  			break
 11153  			fallthrough
 11154  		case CARRAY_INT64:
 11155  			sz = sz * int64(8)
 11156  			break
 11157  			fallthrough
 11158  		case CARRAY_DOUBLE:
 11159  			sz = sz * int64(8)
 11160  			break
 11161  			fallthrough
 11162  		case CARRAY_TEXT:
 11163  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 11164  			break
 11165  		}
 11166  		if mFlags&0x03 == CARRAY_TEXT {
 11167  			for i = 0; i < nData; i++ {
 11168  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11169  				if z != 0 {
 11170  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 11171  				}
 11172  			}
 11173  		}
 11174  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 11175  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 11176  			sqlite3.Xsqlite3_free(tls, pNew)
 11177  			return SQLITE_NOMEM
 11178  		}
 11179  		if mFlags&0x03 == CARRAY_TEXT {
 11180  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 11181  			var z uintptr = az + uintptr(nData)*8
 11182  			for i = 0; i < nData; i++ {
 11183  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11184  				var n sqlite3_int64
 11185  				if zData == uintptr(0) {
 11186  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 11187  					continue
 11188  				}
 11189  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 11190  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 11191  				libc.Xmemcpy(tls, z, zData, uint64(n+int64(1)))
 11192  				z += uintptr(n + int64(1))
 11193  			}
 11194  		} else {
 11195  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz))
 11196  		}
 11197  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 11198  	} else {
 11199  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 11200  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 11201  	}
 11202  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 11203  }
 11204  
 11205  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11206  	bp := tls.Alloc(20)
 11207  	defer tls.Free(20)
 11208  
 11209  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11210  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 11211  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 11212  	} else {
 11213  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 11214  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 11215  	}
 11216  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 11217  }
 11218  
 11219  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11220  	var rc int32 = SQLITE_OK
 11221  	_ = pApi
 11222  
 11223  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 11224  	if rc == SQLITE_OK {
 11225  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 11226  			*(*uintptr)(unsafe.Pointer(&struct {
 11227  				f func(*libc.TLS, uintptr, int32, uintptr)
 11228  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 11229  	}
 11230  	return rc
 11231  }
 11232  
 11233  type CksmVfs = sqlite3_vfs1
 11234  type CksmFile1 = struct {
 11235  	Fbase        sqlite3_file
 11236  	FzFName      uintptr
 11237  	FcomputeCksm int8
 11238  	FverifyCksm  int8
 11239  	FisWal       int8
 11240  	FinCkpt      int8
 11241  	F__ccgo_pad1 [4]byte
 11242  	FpPartner    uintptr
 11243  }
 11244  
 11245  type CksmFile = CksmFile1
 11246  
 11247  type u8 = uint8
 11248  
 11249  var cksm_vfs = sqlite3_vfs{
 11250  	FiVersion:          3,
 11251  	FmxPathname:        1024,
 11252  	FzName:             ts + 4097,
 11253  	FxOpen:             0,
 11254  	FxDelete:           0,
 11255  	FxAccess:           0,
 11256  	FxFullPathname:     0,
 11257  	FxDlOpen:           0,
 11258  	FxDlError:          0,
 11259  	FxDlSym:            0,
 11260  	FxDlClose:          0,
 11261  	FxRandomness:       0,
 11262  	FxSleep:            0,
 11263  	FxCurrentTime:      0,
 11264  	FxGetLastError:     0,
 11265  	FxCurrentTimeInt64: 0,
 11266  	FxSetSystemCall:    0,
 11267  	FxGetSystemCall:    0,
 11268  	FxNextSystemCall:   0,
 11269  }
 11270  
 11271  var cksm_io_methods = sqlite3_io_methods{
 11272  	FiVersion:               3,
 11273  	FxClose:                 0,
 11274  	FxRead:                  0,
 11275  	FxWrite:                 0,
 11276  	FxTruncate:              0,
 11277  	FxSync:                  0,
 11278  	FxFileSize:              0,
 11279  	FxLock:                  0,
 11280  	FxUnlock:                0,
 11281  	FxCheckReservedLock:     0,
 11282  	FxFileControl:           0,
 11283  	FxSectorSize:            0,
 11284  	FxDeviceCharacteristics: 0,
 11285  	FxShmMap:                0,
 11286  	FxShmLock:               0,
 11287  	FxShmBarrier:            0,
 11288  	FxShmUnmap:              0,
 11289  	FxFetch:                 0,
 11290  	FxUnfetch:               0,
 11291  }
 11292  
 11293  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 11294  	bp := tls.Alloc(12)
 11295  	defer tls.Free(12)
 11296  
 11297  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 11298  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 11299  	var aData uintptr = a
 11300  	var aEnd uintptr = a + uintptr(nByte)
 11301  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 11302  
 11303  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 11304  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 11305  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 11306  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 11307  		}
 11308  	} else {
 11309  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 11310  			*(*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))
 11311  			*(*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))
 11312  			aData += 4 * uintptr(2)
 11313  		}
 11314  		*(*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
 11315  		*(*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
 11316  	}
 11317  	libc.Xmemcpy(tls, aOut, bp+4, uint64(4))
 11318  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint64(4))
 11319  }
 11320  
 11321  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11322  	bp := tls.Alloc(8)
 11323  	defer tls.Free(8)
 11324  
 11325  	var nByte int32
 11326  	var data uintptr
 11327  
 11328  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11329  	if data == uintptr(0) {
 11330  		return
 11331  	}
 11332  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 11333  		return
 11334  	}
 11335  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11336  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 11337  		return
 11338  	}
 11339  	cksmCompute(tls, data, nByte-8, bp)
 11340  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 11341  }
 11342  
 11343  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 11344  	var p uintptr = pFile
 11345  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11346  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 11347  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 11348  	}
 11349  	pFile = pFile + uintptr(1)*32
 11350  	return (*struct {
 11351  		f func(*libc.TLS, uintptr) int32
 11352  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 11353  }
 11354  
 11355  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 11356  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 11357  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrInt8(p+17, int8(hasCorrectReserveSize))
 11358  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11359  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = int8(hasCorrectReserveSize)
 11360  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = int8(hasCorrectReserveSize)
 11361  		}
 11362  	}
 11363  }
 11364  
 11365  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11366  	bp := tls.Alloc(24)
 11367  	defer tls.Free(24)
 11368  
 11369  	var rc int32
 11370  	var p uintptr = pFile
 11371  	pFile = pFile + uintptr(1)*32
 11372  	rc = (*struct {
 11373  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11374  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 11375  	if rc == SQLITE_OK {
 11376  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11377  			var d uintptr = zBuf
 11378  			var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11379  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11380  		}
 11381  
 11382  		if iAmt >= 512 &&
 11383  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 11384  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11385  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 11386  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 11387  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 11388  					ts+4109,
 11389  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 11390  				rc = SQLITE_IOERR | int32(32)<<8
 11391  			}
 11392  		}
 11393  	}
 11394  	return rc
 11395  }
 11396  
 11397  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11398  	var p uintptr = pFile
 11399  	pFile = pFile + uintptr(1)*32
 11400  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11401  		var d uintptr = zBuf
 11402  		var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11403  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11404  	}
 11405  
 11406  	if iAmt >= 512 &&
 11407  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 11408  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11409  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 11410  	}
 11411  	return (*struct {
 11412  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11413  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 11414  }
 11415  
 11416  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 11417  	pFile = pFile + uintptr(1)*32
 11418  	return (*struct {
 11419  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 11420  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 11421  }
 11422  
 11423  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 11424  	pFile = pFile + uintptr(1)*32
 11425  	return (*struct {
 11426  		f func(*libc.TLS, uintptr, int32) int32
 11427  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 11428  }
 11429  
 11430  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 11431  	var p uintptr = pFile
 11432  	pFile = p + uintptr(1)*32
 11433  	return (*struct {
 11434  		f func(*libc.TLS, uintptr, uintptr) int32
 11435  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 11436  }
 11437  
 11438  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11439  	pFile = pFile + uintptr(1)*32
 11440  	return (*struct {
 11441  		f func(*libc.TLS, uintptr, int32) int32
 11442  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 11443  }
 11444  
 11445  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11446  	pFile = pFile + uintptr(1)*32
 11447  	return (*struct {
 11448  		f func(*libc.TLS, uintptr, int32) int32
 11449  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 11450  }
 11451  
 11452  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 11453  	pFile = pFile + uintptr(1)*32
 11454  	return (*struct {
 11455  		f func(*libc.TLS, uintptr, uintptr) int32
 11456  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 11457  }
 11458  
 11459  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 11460  	bp := tls.Alloc(16)
 11461  	defer tls.Free(16)
 11462  
 11463  	var rc int32
 11464  	var p uintptr = pFile
 11465  	pFile = pFile + uintptr(1)*32
 11466  	if op == SQLITE_FCNTL_PRAGMA {
 11467  		var azArg uintptr = pArg
 11468  
 11469  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 11470  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 11471  			if zArg != uintptr(0) {
 11472  				if int32(*(*int8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*int8)(unsafe.Pointer(zArg))) <= '9' ||
 11473  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 11474  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 11475  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 11476  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 11477  				} else {
 11478  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = int8(0)
 11479  				}
 11480  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11481  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 11482  				}
 11483  			}
 11484  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 11485  			return SQLITE_OK
 11486  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 11487  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 11488  			return SQLITE_OK
 11489  		}
 11490  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 11491  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = int8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 11492  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11493  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 11494  		}
 11495  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 11496  		var ppFile uintptr = pArg
 11497  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 11498  		return SQLITE_OK
 11499  	}
 11500  	rc = (*struct {
 11501  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11502  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 11503  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 11504  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 11505  	}
 11506  	return rc
 11507  }
 11508  
 11509  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 11510  	pFile = pFile + uintptr(1)*32
 11511  	return (*struct {
 11512  		f func(*libc.TLS, uintptr) int32
 11513  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 11514  }
 11515  
 11516  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 11517  	pFile = pFile + uintptr(1)*32
 11518  	return (*struct {
 11519  		f func(*libc.TLS, uintptr) int32
 11520  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 11521  }
 11522  
 11523  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 11524  	pFile = pFile + uintptr(1)*32
 11525  	return (*struct {
 11526  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 11527  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 11528  }
 11529  
 11530  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 11531  	pFile = pFile + uintptr(1)*32
 11532  	return (*struct {
 11533  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 11534  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 11535  }
 11536  
 11537  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 11538  	pFile = pFile + uintptr(1)*32
 11539  	(*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)
 11540  }
 11541  
 11542  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 11543  	pFile = pFile + uintptr(1)*32
 11544  	return (*struct {
 11545  		f func(*libc.TLS, uintptr, int32) int32
 11546  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 11547  }
 11548  
 11549  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 11550  	var p uintptr = pFile
 11551  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 11552  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11553  		return SQLITE_OK
 11554  	}
 11555  	pFile = pFile + uintptr(1)*32
 11556  	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 {
 11557  		return (*struct {
 11558  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 11559  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 11560  	}
 11561  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11562  	return SQLITE_OK
 11563  }
 11564  
 11565  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 11566  	pFile = pFile + uintptr(1)*32
 11567  	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 {
 11568  		return (*struct {
 11569  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 11570  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 11571  	}
 11572  	return SQLITE_OK
 11573  }
 11574  
 11575  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 11576  	bp := tls.Alloc(8)
 11577  	defer tls.Free(8)
 11578  
 11579  	var p uintptr
 11580  	var pSubFile uintptr
 11581  	var pSubVfs uintptr
 11582  	var rc int32
 11583  
 11584  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11585  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 11586  		goto __1
 11587  	}
 11588  	return (*struct {
 11589  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11590  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 11591  __1:
 11592  	;
 11593  	p = pFile
 11594  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})))
 11595  	pSubFile = pFile + uintptr(1)*32
 11596  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 11597  	rc = (*struct {
 11598  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11599  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 11600  	if !(rc != 0) {
 11601  		goto __2
 11602  	}
 11603  	goto cksm_open_done
 11604  __2:
 11605  	;
 11606  	if !(flags&SQLITE_OPEN_WAL != 0) {
 11607  		goto __3
 11608  	}
 11609  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 11610  	rc = (*struct {
 11611  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11612  	})(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)
 11613  
 11614  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 11615  
 11616  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 11617  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(1)
 11618  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 11619  	goto __4
 11620  __3:
 11621  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(0)
 11622  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = int8(0)
 11623  __4:
 11624  	;
 11625  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 11626  cksm_open_done:
 11627  	if !(rc != 0) {
 11628  		goto __5
 11629  	}
 11630  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 11631  __5:
 11632  	;
 11633  	return rc
 11634  }
 11635  
 11636  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 11637  	return (*struct {
 11638  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 11639  	})(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)
 11640  }
 11641  
 11642  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 11643  	return (*struct {
 11644  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11645  	})(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)
 11646  }
 11647  
 11648  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 11649  	return (*struct {
 11650  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11651  	})(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)
 11652  }
 11653  
 11654  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 11655  	return (*struct {
 11656  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11657  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 11658  }
 11659  
 11660  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 11661  	(*struct {
 11662  		f func(*libc.TLS, uintptr, int32, uintptr)
 11663  	})(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)
 11664  }
 11665  
 11666  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 11667  	return (*struct {
 11668  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 11669  	})(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)
 11670  }
 11671  
 11672  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 11673  	(*struct {
 11674  		f func(*libc.TLS, uintptr, uintptr)
 11675  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 11676  }
 11677  
 11678  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 11679  	return (*struct {
 11680  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11681  	})(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)
 11682  }
 11683  
 11684  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 11685  	return (*struct {
 11686  		f func(*libc.TLS, uintptr, int32) int32
 11687  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 11688  }
 11689  
 11690  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 11691  	return (*struct {
 11692  		f func(*libc.TLS, uintptr, uintptr) int32
 11693  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 11694  }
 11695  
 11696  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 11697  	return (*struct {
 11698  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11699  	})(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)
 11700  }
 11701  
 11702  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 11703  	bp := tls.Alloc(8)
 11704  	defer tls.Free(8)
 11705  
 11706  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11707  	var rc int32
 11708  
 11709  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 11710  		rc = (*struct {
 11711  			f func(*libc.TLS, uintptr, uintptr) int32
 11712  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 11713  	} else {
 11714  		rc = (*struct {
 11715  			f func(*libc.TLS, uintptr, uintptr) int32
 11716  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 11717  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 11718  	}
 11719  	return rc
 11720  }
 11721  
 11722  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 11723  	return (*struct {
 11724  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 11725  	})(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)
 11726  }
 11727  
 11728  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 11729  	return (*struct {
 11730  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 11731  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11732  }
 11733  
 11734  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 11735  	return (*struct {
 11736  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11737  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11738  }
 11739  
 11740  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11741  	var rc int32
 11742  	if db == uintptr(0) {
 11743  		return SQLITE_OK
 11744  	}
 11745  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 11746  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 11747  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 11748  			f func(*libc.TLS, uintptr, int32, uintptr)
 11749  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 11750  	return rc
 11751  }
 11752  
 11753  func cksmRegisterVfs(tls *libc.TLS) int32 {
 11754  	var rc int32 = SQLITE_OK
 11755  	var pOrig uintptr
 11756  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 11757  		return SQLITE_OK
 11758  	}
 11759  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 11760  	if pOrig == uintptr(0) {
 11761  		return SQLITE_ERROR
 11762  	}
 11763  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 11764  	cksm_vfs.FpAppData = pOrig
 11765  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 11766  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 11767  	if rc == SQLITE_OK {
 11768  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 11769  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 11770  		}{cksmRegisterFunc})))
 11771  	}
 11772  	return rc
 11773  }
 11774  
 11775  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 11776  	_ = NotUsed
 11777  	return cksmRegisterVfs(tls)
 11778  }
 11779  
 11780  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 11781  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 11782  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 11783  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 11784  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 11785  		}{cksmRegisterFunc})))
 11786  	}
 11787  	return SQLITE_OK
 11788  }
 11789  
 11790  type closure_vtab1 = struct {
 11791  	Fbase          sqlite3_vtab
 11792  	FzDb           uintptr
 11793  	FzSelf         uintptr
 11794  	FzTableName    uintptr
 11795  	FzIdColumn     uintptr
 11796  	FzParentColumn uintptr
 11797  	Fdb            uintptr
 11798  	FnCursor       int32
 11799  	F__ccgo_pad1   [4]byte
 11800  }
 11801  
 11802  type closure_vtab = closure_vtab1
 11803  type closure_cursor1 = struct {
 11804  	Fbase          sqlite3_vtab_cursor
 11805  	FpVtab         uintptr
 11806  	FzTableName    uintptr
 11807  	FzIdColumn     uintptr
 11808  	FzParentColumn uintptr
 11809  	FpCurrent      uintptr
 11810  	FpClosure      uintptr
 11811  }
 11812  
 11813  type closure_cursor = closure_cursor1
 11814  type closure_queue1 = struct {
 11815  	FpFirst uintptr
 11816  	FpLast  uintptr
 11817  }
 11818  
 11819  type closure_queue = closure_queue1
 11820  type closure_avl1 = struct {
 11821  	Fid          sqlite3_int64
 11822  	FiGeneration int32
 11823  	F__ccgo_pad1 [4]byte
 11824  	FpList       uintptr
 11825  	FpBefore     uintptr
 11826  	FpAfter      uintptr
 11827  	FpUp         uintptr
 11828  	Fheight      int16
 11829  	Fimbalance   int16
 11830  	F__ccgo_pad2 [4]byte
 11831  }
 11832  
 11833  type closure_avl = closure_avl1
 11834  
 11835  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 11836  	var hBefore int16
 11837  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11838  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 11839  	} else {
 11840  		hBefore = int16(0)
 11841  	}
 11842  	var hAfter int16
 11843  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 11844  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 11845  	} else {
 11846  		hAfter = int16(0)
 11847  	}
 11848  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 11849  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 11850  		if int32(hBefore) > int32(hAfter) {
 11851  			return int32(hBefore)
 11852  		}
 11853  		return int32(hAfter)
 11854  	}() + 1)
 11855  }
 11856  
 11857  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 11858  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 11859  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 11860  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 11861  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 11862  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 11863  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 11864  	if pY != 0 {
 11865  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 11866  	}
 11867  	closureAvlRecomputeHeight(tls, pP)
 11868  	closureAvlRecomputeHeight(tls, pB)
 11869  	return pB
 11870  }
 11871  
 11872  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 11873  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 11874  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 11875  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 11876  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 11877  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 11878  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 11879  	if pY != 0 {
 11880  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 11881  	}
 11882  	closureAvlRecomputeHeight(tls, pP)
 11883  	closureAvlRecomputeHeight(tls, pA)
 11884  	return pA
 11885  }
 11886  
 11887  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 11888  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 11889  	if pUp == uintptr(0) {
 11890  		return pp
 11891  	}
 11892  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 11893  		return pUp + 32
 11894  	}
 11895  	return pUp + 24
 11896  }
 11897  
 11898  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 11899  	bp := tls.Alloc(8)
 11900  	defer tls.Free(8)
 11901  	*(*uintptr)(unsafe.Pointer(bp)) = p
 11902  
 11903  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 11904  	var pp uintptr
 11905  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 11906  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 11907  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 11908  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 11909  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 11910  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 11911  			}
 11912  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 11913  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 11914  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 11915  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 11916  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 11917  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 11918  			}
 11919  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 11920  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 11921  		}
 11922  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 11923  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 11924  	}
 11925  	return pTop
 11926  }
 11927  
 11928  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 11929  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 11930  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 11931  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11932  		} else {
 11933  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 11934  		}
 11935  	}
 11936  	return p
 11937  }
 11938  
 11939  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 11940  	if p != 0 {
 11941  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11942  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11943  		}
 11944  	}
 11945  	return p
 11946  }
 11947  
 11948  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 11949  	var pPrev uintptr = uintptr(0)
 11950  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 11951  		pPrev = p
 11952  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 11953  	}
 11954  	if p != 0 && pPrev == uintptr(0) {
 11955  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 11956  	}
 11957  	return p
 11958  }
 11959  
 11960  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 11961  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 11962  	if p == uintptr(0) {
 11963  		p = pNew
 11964  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 11965  	} else {
 11966  		for p != 0 {
 11967  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 11968  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11969  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11970  				} else {
 11971  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 11972  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 11973  					break
 11974  				}
 11975  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 11976  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 11977  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 11978  				} else {
 11979  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 11980  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 11981  					break
 11982  				}
 11983  			} else {
 11984  				return p
 11985  			}
 11986  		}
 11987  	}
 11988  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 11989  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 11990  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 11991  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 11992  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 11993  	return uintptr(0)
 11994  }
 11995  
 11996  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 11997  	if p != 0 {
 11998  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 11999  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12000  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 12001  	}
 12002  }
 12003  
 12004  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 12005  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 12006  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 12007  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 12008  	} else {
 12009  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 12010  	}
 12011  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 12012  }
 12013  
 12014  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 12015  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 12016  	if p != 0 {
 12017  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 12018  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 12019  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 12020  		}
 12021  	}
 12022  	return p
 12023  }
 12024  
 12025  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 12026  	var nIn sqlite3_int64
 12027  	var zOut uintptr
 12028  
 12029  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 12030  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 12031  	if zOut != 0 {
 12032  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 12033  
 12034  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 12035  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 12036  		} else {
 12037  			var iOut int32 = 0
 12038  			var iIn int32
 12039  
 12040  			if int32(q) == '[' {
 12041  				q = int8(']')
 12042  			}
 12043  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 12044  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 12045  					iIn++
 12046  				}
 12047  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 12048  			}
 12049  		}
 12050  
 12051  	}
 12052  	return zOut
 12053  }
 12054  
 12055  func closureFree(tls *libc.TLS, p uintptr) {
 12056  	if p != 0 {
 12057  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 12058  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 12059  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 12060  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 12061  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 12062  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12063  		sqlite3.Xsqlite3_free(tls, p)
 12064  	}
 12065  }
 12066  
 12067  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12068  	var p uintptr = pVtab
 12069  
 12070  	closureFree(tls, p)
 12071  	return SQLITE_OK
 12072  }
 12073  
 12074  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 12075  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 12076  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 12077  	var i int32
 12078  	if nStr < nKey+1 {
 12079  		return uintptr(0)
 12080  	}
 12081  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 12082  		return uintptr(0)
 12083  	}
 12084  	for i = nKey; libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 12085  	}
 12086  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 12087  		return uintptr(0)
 12088  	}
 12089  	i++
 12090  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 12091  		i++
 12092  	}
 12093  	return zStr + uintptr(i)
 12094  }
 12095  
 12096  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12097  	bp := tls.Alloc(24)
 12098  	defer tls.Free(24)
 12099  
 12100  	var rc int32
 12101  	var pNew uintptr
 12102  	var zDb uintptr
 12103  	var zVal uintptr
 12104  	var i int32
 12105  	rc = SQLITE_OK
 12106  	pNew = uintptr(0)
 12107  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 12108  
 12109  	_ = pAux
 12110  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12111  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 12112  	if !(pNew == uintptr(0)) {
 12113  		goto __1
 12114  	}
 12115  	return SQLITE_NOMEM
 12116  __1:
 12117  	;
 12118  	rc = SQLITE_NOMEM
 12119  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12120  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 12121  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 12122  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 12123  		goto __2
 12124  	}
 12125  	goto closureConnectError
 12126  __2:
 12127  	;
 12128  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 12129  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 12130  		goto __3
 12131  	}
 12132  	goto closureConnectError
 12133  __3:
 12134  	;
 12135  	i = 3
 12136  __4:
 12137  	if !(i < argc) {
 12138  		goto __6
 12139  	}
 12140  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12141  	if !(zVal != 0) {
 12142  		goto __7
 12143  	}
 12144  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 12145  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 12146  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 12147  		goto __8
 12148  	}
 12149  	goto closureConnectError
 12150  __8:
 12151  	;
 12152  	goto __5
 12153  __7:
 12154  	;
 12155  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12156  	if !(zVal != 0) {
 12157  		goto __9
 12158  	}
 12159  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 12160  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 12161  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 12162  		goto __10
 12163  	}
 12164  	goto closureConnectError
 12165  __10:
 12166  	;
 12167  	goto __5
 12168  __9:
 12169  	;
 12170  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12171  	if !(zVal != 0) {
 12172  		goto __11
 12173  	}
 12174  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 12175  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 12176  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 12177  		goto __12
 12178  	}
 12179  	goto closureConnectError
 12180  __12:
 12181  	;
 12182  	goto __5
 12183  __11:
 12184  	;
 12185  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 12186  	closureFree(tls, pNew)
 12187  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12188  	return SQLITE_ERROR
 12189  	goto __5
 12190  __5:
 12191  	i++
 12192  	goto __4
 12193  	goto __6
 12194  __6:
 12195  	;
 12196  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 12197  		ts+4247)
 12198  	if !(rc != SQLITE_OK) {
 12199  		goto __13
 12200  	}
 12201  	closureFree(tls, pNew)
 12202  __13:
 12203  	;
 12204  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 12205  	return rc
 12206  
 12207  closureConnectError:
 12208  	closureFree(tls, pNew)
 12209  	return rc
 12210  }
 12211  
 12212  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 12213  	var p uintptr = pVTab
 12214  	var pCur uintptr
 12215  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 12216  	if pCur == uintptr(0) {
 12217  		return SQLITE_NOMEM
 12218  	}
 12219  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})))
 12220  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 12221  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 12222  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 12223  	return SQLITE_OK
 12224  }
 12225  
 12226  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 12227  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 12228  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 12229  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 12230  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 12231  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 12232  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 12233  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 12234  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 12235  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 12236  }
 12237  
 12238  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 12239  	var pCur uintptr = cur
 12240  	closureClearCursor(tls, pCur)
 12241  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 12242  	sqlite3.Xsqlite3_free(tls, pCur)
 12243  	return SQLITE_OK
 12244  }
 12245  
 12246  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 12247  	var pCur uintptr = cur
 12248  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 12249  	return SQLITE_OK
 12250  }
 12251  
 12252  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 12253  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 12254  	if pNew == uintptr(0) {
 12255  		return SQLITE_NOMEM
 12256  	}
 12257  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})))
 12258  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 12259  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 12260  	closureAvlInsert(tls, pCur+48, pNew)
 12261  	queuePush(tls, pQueue, pNew)
 12262  	return SQLITE_OK
 12263  }
 12264  
 12265  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 12266  	bp := tls.Alloc(96)
 12267  	defer tls.Free(96)
 12268  
 12269  	var pCur uintptr = pVtabCursor
 12270  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 12271  	var iRoot sqlite3_int64
 12272  	var mxGen int32 = 999999999
 12273  	var zSql uintptr
 12274  
 12275  	var pAvl uintptr
 12276  	var rc int32 = SQLITE_OK
 12277  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 12278  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 12279  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 12280  
 12281  	_ = idxStr
 12282  	_ = argc
 12283  	closureClearCursor(tls, pCur)
 12284  	libc.Xmemset(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})))
 12285  	if idxNum&1 == 0 {
 12286  		return SQLITE_OK
 12287  	}
 12288  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12289  	if idxNum&0x000f0 != 0 {
 12290  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 12291  		if idxNum&0x00002 != 0 {
 12292  			mxGen--
 12293  		}
 12294  	}
 12295  	if idxNum&0x00f00 != 0 {
 12296  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 12297  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 12298  	}
 12299  	if idxNum&0x0f000 != 0 {
 12300  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 12301  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 12302  	}
 12303  	if idxNum&0x0f0000 != 0 {
 12304  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 12305  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 12306  	}
 12307  
 12308  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 12309  		ts+4337,
 12310  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 12311  	if zSql == uintptr(0) {
 12312  		return SQLITE_NOMEM
 12313  	} else {
 12314  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 12315  		sqlite3.Xsqlite3_free(tls, zSql)
 12316  		if rc != 0 {
 12317  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 12318  			(*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)))
 12319  			return rc
 12320  		}
 12321  	}
 12322  	if rc == SQLITE_OK {
 12323  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 12324  	}
 12325  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 12326  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 12327  			continue
 12328  		}
 12329  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 12330  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 12331  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 12332  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 12333  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 12334  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 12335  				}
 12336  			}
 12337  		}
 12338  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12339  	}
 12340  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12341  	if rc == SQLITE_OK {
 12342  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 12343  	}
 12344  
 12345  	return rc
 12346  }
 12347  
 12348  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 12349  	var pCur uintptr = cur
 12350  	switch i {
 12351  	case CLOSURE_COL_ID:
 12352  		{
 12353  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 12354  			break
 12355  
 12356  		}
 12357  	case CLOSURE_COL_DEPTH:
 12358  		{
 12359  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 12360  			break
 12361  
 12362  		}
 12363  	case CLOSURE_COL_ROOT:
 12364  		{
 12365  			sqlite3.Xsqlite3_result_null(tls, ctx)
 12366  			break
 12367  
 12368  		}
 12369  	case CLOSURE_COL_TABLENAME:
 12370  		{
 12371  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12372  				func() uintptr {
 12373  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 12374  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 12375  					}
 12376  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 12377  				}(),
 12378  				-1, libc.UintptrFromInt32(-1))
 12379  			break
 12380  
 12381  		}
 12382  	case CLOSURE_COL_IDCOLUMN:
 12383  		{
 12384  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12385  				func() uintptr {
 12386  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 12387  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 12388  					}
 12389  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 12390  				}(),
 12391  				-1, libc.UintptrFromInt32(-1))
 12392  			break
 12393  
 12394  		}
 12395  	case CLOSURE_COL_PARENTCOLUMN:
 12396  		{
 12397  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12398  				func() uintptr {
 12399  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 12400  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 12401  					}
 12402  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 12403  				}(),
 12404  				-1, libc.UintptrFromInt32(-1))
 12405  			break
 12406  
 12407  		}
 12408  	}
 12409  	return SQLITE_OK
 12410  }
 12411  
 12412  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 12413  	var pCur uintptr = cur
 12414  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 12415  	return SQLITE_OK
 12416  }
 12417  
 12418  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 12419  	var pCur uintptr = cur
 12420  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 12421  }
 12422  
 12423  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 12424  	var iPlan int32 = 0
 12425  	var i int32
 12426  	var idx int32 = 1
 12427  	var pConstraint uintptr
 12428  	var pVtab uintptr = pTab
 12429  	var rCost float64 = 10000000.0
 12430  
 12431  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 12432  	i = 0
 12433  __1:
 12434  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12435  		goto __3
 12436  	}
 12437  	{
 12438  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 12439  			goto __2
 12440  		}
 12441  		if iPlan&1 == 0 &&
 12442  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 12443  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12444  			iPlan = iPlan | 1
 12445  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 12446  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12447  			rCost = rCost / 100.0
 12448  		}
 12449  		if iPlan&0x0000f0 == 0 &&
 12450  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 12451  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 12452  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 12453  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 12454  			iPlan = iPlan | idx<<4
 12455  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12456  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 12457  				iPlan = iPlan | 0x000002
 12458  			}
 12459  			rCost = rCost / 5.0
 12460  		}
 12461  		if iPlan&0x000f00 == 0 &&
 12462  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 12463  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12464  			iPlan = iPlan | idx<<8
 12465  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12466  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12467  			rCost = rCost / 5.0
 12468  		}
 12469  		if iPlan&0x00f000 == 0 &&
 12470  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 12471  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12472  			iPlan = iPlan | idx<<12
 12473  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12474  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12475  		}
 12476  		if iPlan&0x0f0000 == 0 &&
 12477  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 12478  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12479  			iPlan = iPlan | idx<<16
 12480  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12481  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12482  		}
 12483  
 12484  	}
 12485  	goto __2
 12486  __2:
 12487  	i++
 12488  	pConstraint += 12
 12489  	goto __1
 12490  	goto __3
 12491  __3:
 12492  	;
 12493  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 12494  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 12495  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 12496  		iPlan = 0
 12497  	}
 12498  	if iPlan&1 == 0 {
 12499  		rCost = rCost * 1e30
 12500  		i = 0
 12501  	__4:
 12502  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12503  			goto __6
 12504  		}
 12505  		{
 12506  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 12507  
 12508  		}
 12509  		goto __5
 12510  	__5:
 12511  		i++
 12512  		pConstraint += 12
 12513  		goto __4
 12514  		goto __6
 12515  	__6:
 12516  		;
 12517  		iPlan = 0
 12518  	}
 12519  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 12520  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 12521  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 12522  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 12523  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 12524  	}
 12525  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 12526  
 12527  	return SQLITE_OK
 12528  }
 12529  
 12530  var closureModule = sqlite3_module{
 12531  	FxCreate:     0,
 12532  	FxConnect:    0,
 12533  	FxBestIndex:  0,
 12534  	FxDisconnect: 0,
 12535  	FxDestroy:    0,
 12536  	FxOpen:       0,
 12537  	FxClose:      0,
 12538  	FxFilter:     0,
 12539  	FxNext:       0,
 12540  	FxEof:        0,
 12541  	FxColumn:     0,
 12542  	FxRowid:      0,
 12543  }
 12544  
 12545  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12546  	var rc int32 = SQLITE_OK
 12547  	_ = pApi
 12548  
 12549  	_ = pzErrMsg
 12550  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 12551  	return rc
 12552  }
 12553  
 12554  type CsvReader1 = struct {
 12555  	Fin          uintptr
 12556  	Fz           uintptr
 12557  	Fn           int32
 12558  	FnAlloc      int32
 12559  	FnLine       int32
 12560  	FbNotFirst   int32
 12561  	FcTerm       int32
 12562  	F__ccgo_pad1 [4]byte
 12563  	FiIn         size_t
 12564  	FnIn         size_t
 12565  	FzIn         uintptr
 12566  	FzErr        [200]int8
 12567  }
 12568  
 12569  type CsvReader = CsvReader1
 12570  
 12571  func csv_reader_init(tls *libc.TLS, p uintptr) {
 12572  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 12573  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 12574  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12575  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 12576  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 12577  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 12578  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 12579  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 12580  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 12581  }
 12582  
 12583  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 12584  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 12585  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 12586  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12587  	}
 12588  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 12589  	csv_reader_init(tls, p)
 12590  }
 12591  
 12592  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 12593  	var ap va_list
 12594  	_ = ap
 12595  	ap = va
 12596  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 12597  	_ = ap
 12598  }
 12599  
 12600  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 12601  	bp := tls.Alloc(8)
 12602  	defer tls.Free(8)
 12603  
 12604  	if zFilename != 0 {
 12605  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 12606  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 12607  			csv_errmsg(tls, p, ts+2069, 0)
 12608  			return 1
 12609  		}
 12610  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 12611  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 12612  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12613  			csv_reader_reset(tls, p)
 12614  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 12615  			return 1
 12616  		}
 12617  	} else {
 12618  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 12619  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 12620  	}
 12621  	return 0
 12622  }
 12623  
 12624  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 12625  	var got size_t
 12626  
 12627  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 12628  	if got == uint64(0) {
 12629  		return -1
 12630  	}
 12631  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 12632  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 12633  	return int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 12634  }
 12635  
 12636  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 12637  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 12638  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 12639  			return csv_getc_refill(tls, p)
 12640  		}
 12641  		return -1
 12642  	}
 12643  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 12644  }
 12645  
 12646  func csv_resize_and_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12647  	var zNew uintptr
 12648  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 12649  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 12650  	if zNew != 0 {
 12651  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 12652  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 12653  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12654  		return 0
 12655  	} else {
 12656  		csv_errmsg(tls, p, ts+2069, 0)
 12657  		return 1
 12658  	}
 12659  	return int32(0)
 12660  }
 12661  
 12662  func csv_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12663  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 12664  		return csv_resize_and_append(tls, p, c)
 12665  	}
 12666  	*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12667  	return 0
 12668  }
 12669  
 12670  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 12671  	bp := tls.Alloc(32)
 12672  	defer tls.Free(32)
 12673  
 12674  	var c int32
 12675  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12676  	c = csv_getc(tls, p)
 12677  	if c == -1 {
 12678  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 12679  		return uintptr(0)
 12680  	}
 12681  	if c == '"' {
 12682  		var pc int32
 12683  		var ppc int32
 12684  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 12685  		pc = libc.AssignInt32(&ppc, 0)
 12686  		for 1 != 0 {
 12687  			c = csv_getc(tls, p)
 12688  			if c <= '"' || pc == '"' {
 12689  				if c == '\n' {
 12690  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12691  				}
 12692  				if c == '"' {
 12693  					if pc == '"' {
 12694  						pc = 0
 12695  						continue
 12696  					}
 12697  				}
 12698  				if c == ',' && pc == '"' ||
 12699  					c == '\n' && pc == '"' ||
 12700  					c == '\n' && pc == '\r' && ppc == '"' ||
 12701  					c == -1 && pc == '"' {
 12702  					for __ccgo := true; __ccgo; __ccgo = int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 12703  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 12704  					}
 12705  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12706  					break
 12707  				}
 12708  				if pc == '"' && c != '\r' {
 12709  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 12710  					break
 12711  				}
 12712  				if c == -1 {
 12713  					csv_errmsg(tls, p, ts+4466,
 12714  						libc.VaList(bp+16, startLine, '"'))
 12715  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12716  					break
 12717  				}
 12718  			}
 12719  			if csv_append(tls, p, int8(c)) != 0 {
 12720  				return uintptr(0)
 12721  			}
 12722  			ppc = pc
 12723  			pc = c
 12724  		}
 12725  	} else {
 12726  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 12727  			csv_append(tls, p, int8(c))
 12728  			c = csv_getc(tls, p)
 12729  			if c&0xff == 0xbb {
 12730  				csv_append(tls, p, int8(c))
 12731  				c = csv_getc(tls, p)
 12732  				if c&0xff == 0xbf {
 12733  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12734  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12735  					return csv_read_one_field(tls, p)
 12736  				}
 12737  			}
 12738  		}
 12739  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 12740  			if csv_append(tls, p, int8(c)) != 0 {
 12741  				return uintptr(0)
 12742  			}
 12743  			c = csv_getc(tls, p)
 12744  		}
 12745  		if c == '\n' {
 12746  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12747  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 12748  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 12749  			}
 12750  		}
 12751  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12752  	}
 12753  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 12754  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = int8(0)
 12755  	}
 12756  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12757  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 12758  }
 12759  
 12760  type CsvTable1 = struct {
 12761  	Fbase      sqlite3_vtab
 12762  	FzFilename uintptr
 12763  	FzData     uintptr
 12764  	FiStart    int64
 12765  	FnCol      int32
 12766  	FtstFlags  uint32
 12767  }
 12768  
 12769  type CsvTable = CsvTable1
 12770  
 12771  type CsvCursor1 = struct {
 12772  	Fbase   sqlite3_vtab_cursor
 12773  	Frdr    CsvReader
 12774  	FazVal  uintptr
 12775  	FaLen   uintptr
 12776  	FiRowid sqlite3_int64
 12777  }
 12778  
 12779  type CsvCursor = CsvCursor1
 12780  
 12781  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 12782  	bp := tls.Alloc(8)
 12783  	defer tls.Free(8)
 12784  
 12785  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 12786  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 12787  }
 12788  
 12789  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12790  	var p uintptr = pVtab
 12791  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 12792  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 12793  	sqlite3.Xsqlite3_free(tls, p)
 12794  	return SQLITE_OK
 12795  }
 12796  
 12797  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 12798  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0 {
 12799  		z++
 12800  	}
 12801  	return z
 12802  }
 12803  
 12804  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 12805  	var n size_t = libc.Xstrlen(tls, z)
 12806  	for n > uint64(0) && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n)))))) != 0 {
 12807  		n--
 12808  	}
 12809  	*(*int8)(unsafe.Pointer(z + uintptr(n))) = int8(0)
 12810  }
 12811  
 12812  func csv_dequote(tls *libc.TLS, z uintptr) {
 12813  	var j int32
 12814  	var cQuote int8 = *(*int8)(unsafe.Pointer(z))
 12815  	var i size_t
 12816  	var n size_t
 12817  
 12818  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 12819  		return
 12820  	}
 12821  	n = libc.Xstrlen(tls, z)
 12822  	if n < uint64(2) || int32(*(*int8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*int8)(unsafe.Pointer(z))) {
 12823  		return
 12824  	}
 12825  	i = uint64(1)
 12826  	j = 0
 12827  	for ; i < n-uint64(1); i++ {
 12828  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*int8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 12829  			i++
 12830  		}
 12831  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 12832  	}
 12833  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 12834  }
 12835  
 12836  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 12837  	z = csv_skip_whitespace(tls, z)
 12838  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 12839  		return uintptr(0)
 12840  	}
 12841  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 12842  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 12843  		return uintptr(0)
 12844  	}
 12845  	return csv_skip_whitespace(tls, z+uintptr(1))
 12846  }
 12847  
 12848  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 12849  	bp := tls.Alloc(16)
 12850  	defer tls.Free(16)
 12851  
 12852  	var zValue uintptr
 12853  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 12854  	if zValue == uintptr(0) {
 12855  		return 0
 12856  	}
 12857  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 12858  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 12859  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 12860  		return 1
 12861  	}
 12862  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 12863  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 12864  		csv_errmsg(tls, p, ts+2069, 0)
 12865  		return 1
 12866  	}
 12867  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 12868  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 12869  	return 1
 12870  }
 12871  
 12872  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 12873  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 12874  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 12875  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 12876  		int32(*(*int8)(unsafe.Pointer(z))) == '1' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 12877  		return 1
 12878  	}
 12879  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 12880  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 12881  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 12882  		int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 12883  		return 0
 12884  	}
 12885  	return -1
 12886  }
 12887  
 12888  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 12889  	var b int32
 12890  	z = csv_skip_whitespace(tls, z)
 12891  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 12892  		return 0
 12893  	}
 12894  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 12895  	if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 12896  		*(*int32)(unsafe.Pointer(pValue)) = 1
 12897  		return 1
 12898  	}
 12899  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 12900  		return 0
 12901  	}
 12902  	z = csv_skip_whitespace(tls, z+uintptr(1))
 12903  	b = csv_boolean(tls, z)
 12904  	if b >= 0 {
 12905  		*(*int32)(unsafe.Pointer(pValue)) = b
 12906  		return 1
 12907  	}
 12908  	return 0
 12909  }
 12910  
 12911  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12912  	bp := tls.Alloc(372)
 12913  	defer tls.Free(372)
 12914  
 12915  	var pNew uintptr
 12916  	var bHeader int32
 12917  	var rc int32
 12918  	var i int32
 12919  	var j int32
 12920  	var tstFlags int32
 12921  
 12922  	var nCol int32
 12923  
 12924  	var z uintptr
 12925  	var zValue uintptr
 12926  	var z1 uintptr
 12927  	var pStr uintptr
 12928  	var zSep uintptr
 12929  	var iCol int32
 12930  	pNew = uintptr(0)
 12931  	bHeader = -1
 12932  	rc = SQLITE_OK
 12933  	tstFlags = 0
 12934  	nCol = -99
 12935  
 12936  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})))
 12937  	libc.Xmemset(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})))
 12938  	i = 3
 12939  __1:
 12940  	if !(i < argc) {
 12941  		goto __3
 12942  	}
 12943  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 12944  	j = 0
 12945  __4:
 12946  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 12947  		goto __6
 12948  	}
 12949  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 12950  		goto __7
 12951  	}
 12952  	goto __6
 12953  __7:
 12954  	;
 12955  	goto __5
 12956  __5:
 12957  	j++
 12958  	goto __4
 12959  	goto __6
 12960  __6:
 12961  	;
 12962  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 12963  		goto __8
 12964  	}
 12965  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 12966  		goto __10
 12967  	}
 12968  	goto csvtab_connect_error
 12969  __10:
 12970  	;
 12971  	goto __9
 12972  __8:
 12973  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 12974  		goto __11
 12975  	}
 12976  	if !(bHeader >= 0) {
 12977  		goto __13
 12978  	}
 12979  	csv_errmsg(tls, bp+80, ts+4559, 0)
 12980  	goto csvtab_connect_error
 12981  __13:
 12982  	;
 12983  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 12984  	goto __12
 12985  __11:
 12986  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 12987  		goto __14
 12988  	}
 12989  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 12990  	goto __15
 12991  __14:
 12992  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 12993  		goto __16
 12994  	}
 12995  	if !(nCol > 0) {
 12996  		goto __18
 12997  	}
 12998  	csv_errmsg(tls, bp+80, ts+4610, 0)
 12999  	goto csvtab_connect_error
 13000  __18:
 13001  	;
 13002  	nCol = libc.Xatoi(tls, zValue)
 13003  	if !(nCol <= 0) {
 13004  		goto __19
 13005  	}
 13006  	csv_errmsg(tls, bp+80, ts+4644, 0)
 13007  	goto csvtab_connect_error
 13008  __19:
 13009  	;
 13010  	goto __17
 13011  __16:
 13012  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 13013  	goto csvtab_connect_error
 13014  __17:
 13015  	;
 13016  __15:
 13017  	;
 13018  __12:
 13019  	;
 13020  __9:
 13021  	;
 13022  	goto __2
 13023  __2:
 13024  	i++
 13025  	goto __1
 13026  	goto __3
 13027  __3:
 13028  	;
 13029  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 13030  		goto __20
 13031  	}
 13032  	csv_errmsg(tls, bp+80, ts+4695, 0)
 13033  	goto csvtab_connect_error
 13034  __20:
 13035  	;
 13036  	if !((nCol <= 0 || bHeader == 1) &&
 13037  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 13038  		goto __21
 13039  	}
 13040  	goto csvtab_connect_error
 13041  __21:
 13042  	;
 13043  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 13044  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13045  	if !(pNew == uintptr(0)) {
 13046  		goto __22
 13047  	}
 13048  	goto csvtab_connect_oom
 13049  __22:
 13050  	;
 13051  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})))
 13052  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13053  		goto __23
 13054  	}
 13055  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 13056  	zSep = ts + 584
 13057  	iCol = 0
 13058  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 13059  	if !(nCol < 0 && bHeader < 1) {
 13060  		goto __25
 13061  	}
 13062  	nCol = 0
 13063  __26:
 13064  	csv_read_one_field(tls, bp+80)
 13065  	nCol++
 13066  	goto __27
 13067  __27:
 13068  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13069  		goto __26
 13070  	}
 13071  	goto __28
 13072  __28:
 13073  	;
 13074  __25:
 13075  	;
 13076  	if !(nCol > 0 && bHeader < 1) {
 13077  		goto __29
 13078  	}
 13079  	iCol = 0
 13080  __31:
 13081  	if !(iCol < nCol) {
 13082  		goto __33
 13083  	}
 13084  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 13085  	zSep = ts + 4758
 13086  	goto __32
 13087  __32:
 13088  	iCol++
 13089  	goto __31
 13090  	goto __33
 13091  __33:
 13092  	;
 13093  	goto __30
 13094  __29:
 13095  __34:
 13096  	z1 = csv_read_one_field(tls, bp+80)
 13097  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 13098  		goto __37
 13099  	}
 13100  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 13101  	zSep = ts + 4758
 13102  	iCol++
 13103  __37:
 13104  	;
 13105  	goto __35
 13106  __35:
 13107  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13108  		goto __34
 13109  	}
 13110  	goto __36
 13111  __36:
 13112  	;
 13113  	if !(nCol < 0) {
 13114  		goto __38
 13115  	}
 13116  	nCol = iCol
 13117  	goto __39
 13118  __38:
 13119  __40:
 13120  	if !(iCol < nCol) {
 13121  		goto __41
 13122  	}
 13123  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 13124  	zSep = ts + 4758
 13125  	goto __40
 13126  __41:
 13127  	;
 13128  __39:
 13129  	;
 13130  __30:
 13131  	;
 13132  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13133  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 13134  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 13135  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13136  		goto __42
 13137  	}
 13138  	goto csvtab_connect_oom
 13139  __42:
 13140  	;
 13141  	goto __24
 13142  __23:
 13143  	if !(nCol < 0) {
 13144  		goto __43
 13145  	}
 13146  __45:
 13147  	csv_read_one_field(tls, bp+80)
 13148  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 13149  	goto __46
 13150  __46:
 13151  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13152  		goto __45
 13153  	}
 13154  	goto __47
 13155  __47:
 13156  	;
 13157  	goto __44
 13158  __43:
 13159  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13160  __44:
 13161  	;
 13162  __24:
 13163  	;
 13164  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 13165  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 13166  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 13167  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 13168  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 13169  	if !(bHeader != 1) {
 13170  		goto __48
 13171  	}
 13172  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 13173  	goto __49
 13174  __48:
 13175  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 13176  		goto __50
 13177  	}
 13178  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 13179  	goto __51
 13180  __50:
 13181  	(*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))
 13182  __51:
 13183  	;
 13184  __49:
 13185  	;
 13186  	csv_reader_reset(tls, bp+80)
 13187  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 13188  	if !(rc != 0) {
 13189  		goto __52
 13190  	}
 13191  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 13192  	goto csvtab_connect_error
 13193  __52:
 13194  	;
 13195  	i = 0
 13196  __53:
 13197  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13198  		goto __55
 13199  	}
 13200  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13201  	goto __54
 13202  __54:
 13203  	i++
 13204  	goto __53
 13205  	goto __55
 13206  __55:
 13207  	;
 13208  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 13209  	return SQLITE_OK
 13210  
 13211  csvtab_connect_oom:
 13212  	rc = SQLITE_NOMEM
 13213  	csv_errmsg(tls, bp+80, ts+2069, 0)
 13214  
 13215  csvtab_connect_error:
 13216  	if !(pNew != 0) {
 13217  		goto __56
 13218  	}
 13219  	csvtabDisconnect(tls, pNew)
 13220  __56:
 13221  	;
 13222  	i = 0
 13223  __57:
 13224  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13225  		goto __59
 13226  	}
 13227  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13228  	goto __58
 13229  __58:
 13230  	i++
 13231  	goto __57
 13232  	goto __59
 13233  __59:
 13234  	;
 13235  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13236  		goto __60
 13237  	}
 13238  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 13239  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 13240  __60:
 13241  	;
 13242  	csv_reader_reset(tls, bp+80)
 13243  	if !(rc == SQLITE_OK) {
 13244  		goto __61
 13245  	}
 13246  	rc = SQLITE_ERROR
 13247  __61:
 13248  	;
 13249  	return rc
 13250  }
 13251  
 13252  var azParam = [3]uintptr{
 13253  	ts + 4794, ts + 4803, ts + 4808,
 13254  }
 13255  
 13256  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 13257  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 13258  	var i int32
 13259  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 13260  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13261  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13262  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13263  	}
 13264  }
 13265  
 13266  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13267  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 13268  }
 13269  
 13270  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 13271  	var pCur uintptr = cur
 13272  	csvtabCursorRowReset(tls, pCur)
 13273  	csv_reader_reset(tls, pCur+8)
 13274  	sqlite3.Xsqlite3_free(tls, cur)
 13275  	return SQLITE_OK
 13276  }
 13277  
 13278  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13279  	var pTab uintptr = p
 13280  	var pCur uintptr
 13281  	var nByte size_t
 13282  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 13283  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 13284  	if pCur == uintptr(0) {
 13285  		return SQLITE_NOMEM
 13286  	}
 13287  	libc.Xmemset(tls, pCur, 0, nByte)
 13288  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 13289  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 13290  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13291  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 13292  		csv_xfer_error(tls, pTab, pCur+8)
 13293  		return SQLITE_ERROR
 13294  	}
 13295  	return SQLITE_OK
 13296  }
 13297  
 13298  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 13299  	var pCur uintptr = cur
 13300  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13301  	var i int32 = 0
 13302  	var z uintptr
 13303  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 13304  		z = csv_read_one_field(tls, pCur+8)
 13305  		if z == uintptr(0) {
 13306  			break
 13307  		}
 13308  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13309  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 13310  				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))
 13311  				if zNew == uintptr(0) {
 13312  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 13313  					csv_xfer_error(tls, pTab, pCur+8)
 13314  					break
 13315  				}
 13316  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 13317  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 13318  			}
 13319  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13320  			i++
 13321  		}
 13322  	}
 13323  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13324  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 13325  	} else {
 13326  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 13327  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13328  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13329  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13330  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13331  			i++
 13332  		}
 13333  	}
 13334  	return SQLITE_OK
 13335  }
 13336  
 13337  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13338  	var pCur uintptr = cur
 13339  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13340  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 13341  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 13342  	}
 13343  	return SQLITE_OK
 13344  }
 13345  
 13346  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13347  	var pCur uintptr = cur
 13348  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 13349  	return SQLITE_OK
 13350  }
 13351  
 13352  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 13353  	var pCur uintptr = cur
 13354  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 13355  }
 13356  
 13357  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13358  	var pCur uintptr = pVtabCursor
 13359  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 13360  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 13361  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 13362  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 13363  	} else {
 13364  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 13365  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 13366  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 13367  	}
 13368  	return csvtabNext(tls, pVtabCursor)
 13369  }
 13370  
 13371  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 13372  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 13373  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 13374  		var i int32
 13375  		var nConst int32 = 0
 13376  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 13377  			var op uint8
 13378  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 13379  				continue
 13380  			}
 13381  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 13382  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 13383  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 13384  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 13385  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 13386  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 13387  				nConst++
 13388  			}
 13389  		}
 13390  	}
 13391  	return SQLITE_OK
 13392  }
 13393  
 13394  var CsvModule = sqlite3_module{
 13395  	FxCreate:     0,
 13396  	FxConnect:    0,
 13397  	FxBestIndex:  0,
 13398  	FxDisconnect: 0,
 13399  	FxDestroy:    0,
 13400  	FxOpen:       0,
 13401  	FxClose:      0,
 13402  	FxFilter:     0,
 13403  	FxNext:       0,
 13404  	FxEof:        0,
 13405  	FxColumn:     0,
 13406  	FxRowid:      0,
 13407  }
 13408  
 13409  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 13410  	return SQLITE_READONLY
 13411  }
 13412  
 13413  var CsvModuleFauxWrite = sqlite3_module{
 13414  	FxCreate:     0,
 13415  	FxConnect:    0,
 13416  	FxBestIndex:  0,
 13417  	FxDisconnect: 0,
 13418  	FxDestroy:    0,
 13419  	FxOpen:       0,
 13420  	FxClose:      0,
 13421  	FxFilter:     0,
 13422  	FxNext:       0,
 13423  	FxEof:        0,
 13424  	FxColumn:     0,
 13425  	FxRowid:      0,
 13426  	FxUpdate:     0,
 13427  }
 13428  
 13429  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13430  	var rc int32
 13431  	_ = pApi
 13432  
 13433  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 13434  	if rc == SQLITE_OK {
 13435  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 13436  	}
 13437  	return rc
 13438  }
 13439  
 13440  type Decimal1 = struct {
 13441  	Fsign        int8
 13442  	Foom         int8
 13443  	FisNull      int8
 13444  	FisInit      int8
 13445  	FnDigit      int32
 13446  	FnFrac       int32
 13447  	F__ccgo_pad1 [4]byte
 13448  	Fa           uintptr
 13449  }
 13450  
 13451  type Decimal = Decimal1
 13452  
 13453  func decimal_clear(tls *libc.TLS, p uintptr) {
 13454  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 13455  }
 13456  
 13457  func decimal_free(tls *libc.TLS, p uintptr) {
 13458  	if p != 0 {
 13459  		decimal_clear(tls, p)
 13460  		sqlite3.Xsqlite3_free(tls, p)
 13461  	}
 13462  }
 13463  
 13464  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 13465  	var p uintptr
 13466  	var n int32
 13467  	var i int32
 13468  	var zIn uintptr
 13469  	var iExp int32
 13470  	var j int32
 13471  	var neg int32
 13472  	var c int8
 13473  	var nExtra int32
 13474  	iExp = 0
 13475  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 13476  	if !(p == uintptr(0)) {
 13477  		goto __1
 13478  	}
 13479  	goto new_no_mem
 13480  __1:
 13481  	;
 13482  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13483  	(*Decimal)(unsafe.Pointer(p)).Foom = int8(0)
 13484  	(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 13485  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(0)
 13486  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 13487  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13488  	if !(zAlt != 0) {
 13489  		goto __2
 13490  	}
 13491  	n = nAlt
 13492  	zIn = zAlt
 13493  	goto __3
 13494  __2:
 13495  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 13496  		goto __4
 13497  	}
 13498  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 13499  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(1)
 13500  	return p
 13501  __4:
 13502  	;
 13503  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 13504  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 13505  __3:
 13506  	;
 13507  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 13508  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13509  		goto __5
 13510  	}
 13511  	goto new_no_mem
 13512  __5:
 13513  	;
 13514  	i = 0
 13515  __6:
 13516  	if !(libc.Xisspace(tls, int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))) != 0) {
 13517  		goto __8
 13518  	}
 13519  	goto __7
 13520  __7:
 13521  	i++
 13522  	goto __6
 13523  	goto __8
 13524  __8:
 13525  	;
 13526  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 13527  		goto __9
 13528  	}
 13529  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(1)
 13530  	i++
 13531  	goto __10
 13532  __9:
 13533  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 13534  		goto __11
 13535  	}
 13536  	i++
 13537  __11:
 13538  	;
 13539  __10:
 13540  	;
 13541  __12:
 13542  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 13543  		goto __13
 13544  	}
 13545  	i++
 13546  	goto __12
 13547  __13:
 13548  	;
 13549  __14:
 13550  	if !(i < n) {
 13551  		goto __15
 13552  	}
 13553  	c = int8(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))
 13554  	if !(int32(c) >= '0' && int32(c) <= '9') {
 13555  		goto __16
 13556  	}
 13557  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 13558  	goto __17
 13559  __16:
 13560  	if !(int32(c) == '.') {
 13561  		goto __18
 13562  	}
 13563  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 13564  	goto __19
 13565  __18:
 13566  	if !(int32(c) == 'e' || int32(c) == 'E') {
 13567  		goto __20
 13568  	}
 13569  	j = i + 1
 13570  	neg = 0
 13571  	if !(j >= n) {
 13572  		goto __21
 13573  	}
 13574  	goto __15
 13575  __21:
 13576  	;
 13577  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 13578  		goto __22
 13579  	}
 13580  	neg = 1
 13581  	j++
 13582  	goto __23
 13583  __22:
 13584  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 13585  		goto __24
 13586  	}
 13587  	j++
 13588  __24:
 13589  	;
 13590  __23:
 13591  	;
 13592  __25:
 13593  	if !(j < n && iExp < 1000000) {
 13594  		goto __26
 13595  	}
 13596  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 13597  		goto __27
 13598  	}
 13599  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 13600  __27:
 13601  	;
 13602  	j++
 13603  	goto __25
 13604  __26:
 13605  	;
 13606  	if !(neg != 0) {
 13607  		goto __28
 13608  	}
 13609  	iExp = -iExp
 13610  __28:
 13611  	;
 13612  	goto __15
 13613  __20:
 13614  	;
 13615  __19:
 13616  	;
 13617  __17:
 13618  	;
 13619  	i++
 13620  	goto __14
 13621  __15:
 13622  	;
 13623  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 13624  		goto __29
 13625  	}
 13626  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 13627  __29:
 13628  	;
 13629  	if !(iExp > 0) {
 13630  		goto __30
 13631  	}
 13632  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 13633  		goto __32
 13634  	}
 13635  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 13636  		goto __33
 13637  	}
 13638  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 13639  	iExp = 0
 13640  	goto __34
 13641  __33:
 13642  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13643  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13644  __34:
 13645  	;
 13646  __32:
 13647  	;
 13648  	if !(iExp > 0) {
 13649  		goto __35
 13650  	}
 13651  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13652  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13653  		goto __36
 13654  	}
 13655  	goto new_no_mem
 13656  __36:
 13657  	;
 13658  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp))
 13659  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13660  __35:
 13661  	;
 13662  	goto __31
 13663  __30:
 13664  	if !(iExp < 0) {
 13665  		goto __37
 13666  	}
 13667  	iExp = -iExp
 13668  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 13669  	if !(nExtra != 0) {
 13670  		goto __38
 13671  	}
 13672  	if !(nExtra >= iExp) {
 13673  		goto __39
 13674  	}
 13675  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13676  	iExp = 0
 13677  	goto __40
 13678  __39:
 13679  	iExp = iExp - nExtra
 13680  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 13681  __40:
 13682  	;
 13683  __38:
 13684  	;
 13685  	if !(iExp > 0) {
 13686  		goto __41
 13687  	}
 13688  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13689  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13690  		goto __42
 13691  	}
 13692  	goto new_no_mem
 13693  __42:
 13694  	;
 13695  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 13696  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp))
 13697  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13698  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13699  __41:
 13700  	;
 13701  __37:
 13702  	;
 13703  __31:
 13704  	;
 13705  	return p
 13706  
 13707  new_no_mem:
 13708  	if !(pCtx != 0) {
 13709  		goto __43
 13710  	}
 13711  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13712  __43:
 13713  	;
 13714  	sqlite3.Xsqlite3_free(tls, p)
 13715  	return uintptr(0)
 13716  }
 13717  
 13718  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 13719  	var z uintptr
 13720  	var i int32
 13721  	var j int32
 13722  	var n int32
 13723  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 13724  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13725  		return
 13726  	}
 13727  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 13728  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 13729  		return
 13730  	}
 13731  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 13732  	if z == uintptr(0) {
 13733  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13734  		return
 13735  	}
 13736  	i = 0
 13737  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 13738  		(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13739  	}
 13740  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 13741  		*(*int8)(unsafe.Pointer(z)) = int8('-')
 13742  		i = 1
 13743  	}
 13744  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13745  	if n <= 0 {
 13746  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('0')
 13747  	}
 13748  	j = 0
 13749  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 13750  		j++
 13751  		n--
 13752  	}
 13753  	for n > 0 {
 13754  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13755  		j++
 13756  		n--
 13757  	}
 13758  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 13759  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('.')
 13760  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 13761  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13762  			j++
 13763  		}
 13764  	}
 13765  	*(*int8)(unsafe.Pointer(z + uintptr(i))) = int8(0)
 13766  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 13767  }
 13768  
 13769  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13770  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13771  	_ = argc
 13772  	decimal_result(tls, context, p)
 13773  	decimal_free(tls, p)
 13774  }
 13775  
 13776  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 13777  	var nASig int32
 13778  	var nBSig int32
 13779  	var rc int32
 13780  	var n int32
 13781  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 13782  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 13783  			return -1
 13784  		}
 13785  		return +1
 13786  	}
 13787  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 13788  		var pTemp uintptr = pA
 13789  		pA = pB
 13790  		pB = pTemp
 13791  	}
 13792  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13793  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13794  	if nASig != nBSig {
 13795  		return nASig - nBSig
 13796  	}
 13797  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 13798  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 13799  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 13800  	}
 13801  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 13802  	if rc == 0 {
 13803  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 13804  	}
 13805  	return rc
 13806  }
 13807  
 13808  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13809  	var pA uintptr
 13810  	var pB uintptr
 13811  	var rc int32
 13812  	pA = uintptr(0)
 13813  	pB = uintptr(0)
 13814  
 13815  	_ = argc
 13816  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13817  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 13818  		goto __1
 13819  	}
 13820  	goto cmp_done
 13821  __1:
 13822  	;
 13823  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13824  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 13825  		goto __2
 13826  	}
 13827  	goto cmp_done
 13828  __2:
 13829  	;
 13830  	rc = decimal_cmp(tls, pA, pB)
 13831  	if !(rc < 0) {
 13832  		goto __3
 13833  	}
 13834  	rc = -1
 13835  	goto __4
 13836  __3:
 13837  	if !(rc > 0) {
 13838  		goto __5
 13839  	}
 13840  	rc = +1
 13841  __5:
 13842  	;
 13843  __4:
 13844  	;
 13845  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 13846  cmp_done:
 13847  	decimal_free(tls, pA)
 13848  	decimal_free(tls, pB)
 13849  }
 13850  
 13851  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 13852  	var nAddSig int32
 13853  	var nAddFrac int32
 13854  	if p == uintptr(0) {
 13855  		return
 13856  	}
 13857  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13858  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 13859  	if nAddFrac == 0 && nAddSig == 0 {
 13860  		return
 13861  	}
 13862  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 13863  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 13864  		(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 13865  		return
 13866  	}
 13867  	if nAddSig != 0 {
 13868  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 13869  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig))
 13870  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 13871  	}
 13872  	if nAddFrac != 0 {
 13873  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac))
 13874  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 13875  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 13876  	}
 13877  }
 13878  
 13879  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 13880  	var nSig int32
 13881  	var nFrac int32
 13882  	var nDigit int32
 13883  	var i int32
 13884  	var rc int32
 13885  	if pA == uintptr(0) {
 13886  		return
 13887  	}
 13888  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 13889  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 13890  		return
 13891  	}
 13892  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 13893  		(*Decimal)(unsafe.Pointer(pA)).FisNull = int8(1)
 13894  		return
 13895  	}
 13896  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13897  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 13898  		nSig--
 13899  	}
 13900  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 13901  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13902  	}
 13903  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13904  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 13905  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13906  	}
 13907  	nDigit = nSig + nFrac + 1
 13908  	decimal_expand(tls, pA, nDigit, nFrac)
 13909  	decimal_expand(tls, pB, nDigit, nFrac)
 13910  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 13911  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 13912  	} else {
 13913  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 13914  			var carry int32 = 0
 13915  			for i = nDigit - 1; i >= 0; i-- {
 13916  				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
 13917  				if x >= 10 {
 13918  					carry = 1
 13919  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 13920  				} else {
 13921  					carry = 0
 13922  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 13923  				}
 13924  			}
 13925  		} else {
 13926  			var aA uintptr
 13927  			var aB uintptr
 13928  			var borrow int32 = 0
 13929  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 13930  			if rc < 0 {
 13931  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 13932  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 13933  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 13934  			} else {
 13935  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 13936  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 13937  			}
 13938  			for i = nDigit - 1; i >= 0; i-- {
 13939  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 13940  				if x < 0 {
 13941  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 13942  					borrow = 1
 13943  				} else {
 13944  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 13945  					borrow = 0
 13946  				}
 13947  			}
 13948  		}
 13949  	}
 13950  }
 13951  
 13952  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 13953  	var zA uintptr = pKey1
 13954  	var zB uintptr = pKey2
 13955  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 13956  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 13957  	var rc int32
 13958  	_ = notUsed
 13959  	if pA == uintptr(0) || pB == uintptr(0) {
 13960  		rc = 0
 13961  	} else {
 13962  		rc = decimal_cmp(tls, pA, pB)
 13963  	}
 13964  	decimal_free(tls, pA)
 13965  	decimal_free(tls, pB)
 13966  	return rc
 13967  }
 13968  
 13969  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13970  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13971  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13972  	_ = argc
 13973  	decimal_add(tls, pA, pB)
 13974  	decimal_result(tls, context, pA)
 13975  	decimal_free(tls, pA)
 13976  	decimal_free(tls, pB)
 13977  }
 13978  
 13979  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13980  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13981  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13982  	_ = argc
 13983  	if pB != 0 {
 13984  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 13985  		decimal_add(tls, pA, pB)
 13986  		decimal_result(tls, context, pA)
 13987  	}
 13988  	decimal_free(tls, pA)
 13989  	decimal_free(tls, pB)
 13990  }
 13991  
 13992  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13993  	var p uintptr
 13994  	var pArg uintptr
 13995  	_ = argc
 13996  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 13997  	if p == uintptr(0) {
 13998  		return
 13999  	}
 14000  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 14001  		(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 14002  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 14003  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14004  			(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14005  		} else {
 14006  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 14007  		}
 14008  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 14009  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14010  	}
 14011  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14012  		return
 14013  	}
 14014  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14015  	decimal_add(tls, p, pArg)
 14016  	decimal_free(tls, pArg)
 14017  }
 14018  
 14019  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14020  	var p uintptr
 14021  	var pArg uintptr
 14022  	_ = argc
 14023  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14024  	if p == uintptr(0) {
 14025  		return
 14026  	}
 14027  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14028  		return
 14029  	}
 14030  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14031  	if pArg != 0 {
 14032  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 14033  	}
 14034  	decimal_add(tls, p, pArg)
 14035  	decimal_free(tls, pArg)
 14036  }
 14037  
 14038  func decimalSumValue(tls *libc.TLS, context uintptr) {
 14039  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14040  	if p == uintptr(0) {
 14041  		return
 14042  	}
 14043  	decimal_result(tls, context, p)
 14044  }
 14045  
 14046  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 14047  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14048  	if p == uintptr(0) {
 14049  		return
 14050  	}
 14051  	decimal_result(tls, context, p)
 14052  	decimal_clear(tls, p)
 14053  }
 14054  
 14055  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14056  	var pA uintptr
 14057  	var pB uintptr
 14058  	var acc uintptr
 14059  	var i int32
 14060  	var j int32
 14061  	var k int32
 14062  	var minFrac int32
 14063  	var f int8
 14064  	var carry int32
 14065  	var x int32
 14066  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14067  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14068  	acc = uintptr(0)
 14069  	_ = argc
 14070  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 14071  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14072  		goto __1
 14073  	}
 14074  	goto mul_end
 14075  __1:
 14076  	;
 14077  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14078  	if !(acc == uintptr(0)) {
 14079  		goto __2
 14080  	}
 14081  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14082  	goto mul_end
 14083  __2:
 14084  	;
 14085  	libc.Xmemset(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14086  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14087  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 14088  		goto __3
 14089  	}
 14090  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14091  __3:
 14092  	;
 14093  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 14094  __4:
 14095  	if !(i >= 0) {
 14096  		goto __6
 14097  	}
 14098  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 14099  	carry = 0
 14100  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 14101  	k = i + j + 3
 14102  __7:
 14103  	if !(j >= 0) {
 14104  		goto __9
 14105  	}
 14106  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 14107  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14108  	carry = x / 10
 14109  	goto __8
 14110  __8:
 14111  	j--
 14112  	k--
 14113  	goto __7
 14114  	goto __9
 14115  __9:
 14116  	;
 14117  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 14118  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14119  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 14120  	goto __5
 14121  __5:
 14122  	i--
 14123  	goto __4
 14124  	goto __6
 14125  __6:
 14126  	;
 14127  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 14128  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 14129  	acc = uintptr(0)
 14130  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 14131  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14132  	*(*int8)(unsafe.Pointer(pA)) ^= int8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 14133  __10:
 14134  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 14135  		goto __11
 14136  	}
 14137  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 14138  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 14139  	goto __10
 14140  __11:
 14141  	;
 14142  	decimal_result(tls, context, pA)
 14143  
 14144  mul_end:
 14145  	sqlite3.Xsqlite3_free(tls, acc)
 14146  	decimal_free(tls, pA)
 14147  	decimal_free(tls, pB)
 14148  }
 14149  
 14150  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14151  	var rc int32 = SQLITE_OK
 14152  	var i uint32
 14153  	_ = pzErrMsg
 14154  
 14155  	_ = pApi
 14156  
 14157  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 14158  		FzFuncName   uintptr
 14159  		FnArg        int32
 14160  		F__ccgo_pad1 [4]byte
 14161  		FxFunc       uintptr
 14162  	}{})) && rc == SQLITE_OK; i++ {
 14163  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 14164  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14165  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 14166  	}
 14167  	if rc == SQLITE_OK {
 14168  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 14169  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 14170  			*(*uintptr)(unsafe.Pointer(&struct {
 14171  				f func(*libc.TLS, uintptr, int32, uintptr)
 14172  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 14173  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 14174  				f func(*libc.TLS, uintptr, int32, uintptr)
 14175  			}{decimalSumInverse})), uintptr(0))
 14176  	}
 14177  	if rc == SQLITE_OK {
 14178  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 14179  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14180  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 14181  			}{decimalCollFunc})))
 14182  	}
 14183  	return rc
 14184  }
 14185  
 14186  var aFunc = [5]struct {
 14187  	FzFuncName   uintptr
 14188  	FnArg        int32
 14189  	F__ccgo_pad1 [4]byte
 14190  	FxFunc       uintptr
 14191  }{
 14192  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 14193  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 14194  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 14195  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 14196  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 14197  }
 14198  
 14199  type EvalResult = struct {
 14200  	Fz           uintptr
 14201  	FzSep        uintptr
 14202  	FszSep       int32
 14203  	F__ccgo_pad1 [4]byte
 14204  	FnAlloc      sqlite3_int64
 14205  	FnUsed       sqlite3_int64
 14206  }
 14207  
 14208  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 14209  	var p uintptr = pCtx
 14210  	var i int32
 14211  	if argv == uintptr(0) {
 14212  		return 0
 14213  	}
 14214  	for i = 0; i < argc; i++ {
 14215  		var z uintptr
 14216  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 14217  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 14218  		} else {
 14219  			z = ts + 584
 14220  		}
 14221  		var sz size_t = libc.Xstrlen(tls, z)
 14222  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 14223  			var zNew uintptr
 14224  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 14225  
 14226  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 14227  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 14228  			} else {
 14229  				zNew = uintptr(0)
 14230  			}
 14231  			if zNew == uintptr(0) {
 14232  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 14233  				libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14234  				return 1
 14235  			}
 14236  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 14237  		}
 14238  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 14239  			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))
 14240  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 14241  		}
 14242  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 14243  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 14244  	}
 14245  	return 0
 14246  }
 14247  
 14248  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14249  	bp := tls.Alloc(48)
 14250  	defer tls.Free(48)
 14251  
 14252  	var zSql uintptr
 14253  	var db uintptr
 14254  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 14255  	var rc int32
 14256  
 14257  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14258  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 14259  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14260  	if zSql == uintptr(0) {
 14261  		return
 14262  	}
 14263  	if argc > 1 {
 14264  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 14265  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14266  			return
 14267  		}
 14268  	}
 14269  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 14270  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 14271  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 14272  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 14273  	}{callback})), bp, bp+40)
 14274  	if rc != SQLITE_OK {
 14275  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 14276  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 14277  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14278  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14279  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 14280  	} else {
 14281  		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})))
 14282  	}
 14283  }
 14284  
 14285  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14286  	var rc int32 = SQLITE_OK
 14287  	_ = pApi
 14288  
 14289  	_ = pzErrMsg
 14290  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 14291  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14292  		*(*uintptr)(unsafe.Pointer(&struct {
 14293  			f func(*libc.TLS, uintptr, int32, uintptr)
 14294  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14295  	if rc == SQLITE_OK {
 14296  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 14297  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14298  			*(*uintptr)(unsafe.Pointer(&struct {
 14299  				f func(*libc.TLS, uintptr, int32, uintptr)
 14300  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14301  	}
 14302  	return rc
 14303  }
 14304  
 14305  type explain_vtab1 = struct {
 14306  	Fbase sqlite3_vtab
 14307  	Fdb   uintptr
 14308  }
 14309  
 14310  type explain_vtab = explain_vtab1
 14311  
 14312  type explain_cursor1 = struct {
 14313  	Fbase        sqlite3_vtab_cursor
 14314  	Fdb          uintptr
 14315  	FzSql        uintptr
 14316  	FpExplain    uintptr
 14317  	Frc          int32
 14318  	F__ccgo_pad1 [4]byte
 14319  }
 14320  
 14321  type explain_cursor = explain_cursor1
 14322  
 14323  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14324  	var pNew uintptr
 14325  	var rc int32
 14326  
 14327  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 14328  		ts+4901)
 14329  	if rc == SQLITE_OK {
 14330  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 14331  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14332  		if pNew == uintptr(0) {
 14333  			return SQLITE_NOMEM
 14334  		}
 14335  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})))
 14336  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 14337  	}
 14338  	return rc
 14339  }
 14340  
 14341  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14342  	sqlite3.Xsqlite3_free(tls, pVtab)
 14343  	return SQLITE_OK
 14344  }
 14345  
 14346  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14347  	var pCur uintptr
 14348  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 14349  	if pCur == uintptr(0) {
 14350  		return SQLITE_NOMEM
 14351  	}
 14352  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})))
 14353  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 14354  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14355  	return SQLITE_OK
 14356  }
 14357  
 14358  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 14359  	var pCur uintptr = cur
 14360  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14361  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14362  	sqlite3.Xsqlite3_free(tls, pCur)
 14363  	return SQLITE_OK
 14364  }
 14365  
 14366  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 14367  	var pCur uintptr = cur
 14368  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14369  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 14370  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14371  	}
 14372  	return SQLITE_OK
 14373  }
 14374  
 14375  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 14376  	var pCur uintptr = cur
 14377  	if i == EXPLN_COLUMN_SQL {
 14378  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 14379  	} else {
 14380  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 14381  	}
 14382  	return SQLITE_OK
 14383  }
 14384  
 14385  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 14386  	var pCur uintptr = cur
 14387  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 14388  	return SQLITE_OK
 14389  }
 14390  
 14391  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 14392  	var pCur uintptr = cur
 14393  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 14394  }
 14395  
 14396  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14397  	bp := tls.Alloc(16)
 14398  	defer tls.Free(16)
 14399  
 14400  	var pCur uintptr = pVtabCursor
 14401  	var zSql uintptr = uintptr(0)
 14402  	var rc int32
 14403  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14404  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14405  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 14406  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 14407  		return SQLITE_OK
 14408  	}
 14409  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14410  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 14411  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 14412  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 14413  	}
 14414  	if zSql == uintptr(0) {
 14415  		rc = SQLITE_NOMEM
 14416  	} else {
 14417  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 14418  		sqlite3.Xsqlite3_free(tls, zSql)
 14419  	}
 14420  	if rc != 0 {
 14421  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14422  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14423  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14424  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 14425  	} else {
 14426  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14427  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 14428  			rc = SQLITE_OK
 14429  		} else {
 14430  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14431  		}
 14432  	}
 14433  	return rc
 14434  }
 14435  
 14436  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14437  	var i int32
 14438  	var idx int32 = -1
 14439  	var unusable int32 = 0
 14440  
 14441  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 14442  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 14443  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 14444  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 14445  			continue
 14446  		}
 14447  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 14448  			unusable = 1
 14449  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 14450  			idx = i
 14451  		}
 14452  	}
 14453  	if idx >= 0 {
 14454  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 14455  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 14456  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 14457  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 14458  	} else if unusable != 0 {
 14459  		return SQLITE_CONSTRAINT
 14460  	}
 14461  	return SQLITE_OK
 14462  }
 14463  
 14464  var explainModule = sqlite3_module{
 14465  	FxConnect:    0,
 14466  	FxBestIndex:  0,
 14467  	FxDisconnect: 0,
 14468  	FxOpen:       0,
 14469  	FxClose:      0,
 14470  	FxFilter:     0,
 14471  	FxNext:       0,
 14472  	FxEof:        0,
 14473  	FxColumn:     0,
 14474  	FxRowid:      0,
 14475  }
 14476  
 14477  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 14478  	var rc int32 = SQLITE_OK
 14479  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 14480  	return rc
 14481  }
 14482  
 14483  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14484  	var rc int32 = SQLITE_OK
 14485  	_ = pApi
 14486  
 14487  	rc = sqlite3ExplainVtabInit(tls, db)
 14488  	return rc
 14489  }
 14490  
 14491  type timeval = struct {
 14492  	Ftv_sec  time_t
 14493  	Ftv_usec suseconds_t
 14494  }
 14495  
 14496  type timespec = struct {
 14497  	Ftv_sec  time_t
 14498  	Ftv_nsec int64
 14499  }
 14500  
 14501  type fd_set1 = struct{ Ffds_bits [32]uint32 }
 14502  
 14503  type fd_set = fd_set1
 14504  
 14505  type sigset_t = uint32
 14506  
 14507  type timezone = struct {
 14508  	Ftz_minuteswest int32
 14509  	Ftz_dsttime     int32
 14510  }
 14511  
 14512  type itimerval = struct {
 14513  	Fit_interval struct {
 14514  		Ftv_sec  time_t
 14515  		Ftv_usec suseconds_t
 14516  	}
 14517  	Fit_value struct {
 14518  		Ftv_sec  time_t
 14519  		Ftv_usec suseconds_t
 14520  	}
 14521  }
 14522  
 14523  type clockinfo = struct {
 14524  	Fhz     int32
 14525  	Ftick   int32
 14526  	Fstathz int32
 14527  	Fprofhz int32
 14528  }
 14529  
 14530  type itimerspec = struct {
 14531  	Fit_interval struct {
 14532  		Ftv_sec  time_t
 14533  		Ftv_nsec int64
 14534  	}
 14535  	Fit_value struct {
 14536  		Ftv_sec  time_t
 14537  		Ftv_nsec int64
 14538  	}
 14539  }
 14540  
 14541  type tm = struct {
 14542  	Ftm_sec      int32
 14543  	Ftm_min      int32
 14544  	Ftm_hour     int32
 14545  	Ftm_mday     int32
 14546  	Ftm_mon      int32
 14547  	Ftm_year     int32
 14548  	Ftm_wday     int32
 14549  	Ftm_yday     int32
 14550  	Ftm_isdst    int32
 14551  	F__ccgo_pad1 [4]byte
 14552  	Ftm_gmtoff   int64
 14553  	Ftm_zone     uintptr
 14554  }
 14555  
 14556  type flock = struct {
 14557  	Fl_start  off_t
 14558  	Fl_len    off_t
 14559  	Fl_pid    pid_t
 14560  	Fl_type   int16
 14561  	Fl_whence int16
 14562  }
 14563  
 14564  type __tfork = struct {
 14565  	Ftf_tcb   uintptr
 14566  	Ftf_tid   uintptr
 14567  	Ftf_stack uintptr
 14568  }
 14569  
 14570  type __kbind = struct {
 14571  	Fkb_addr uintptr
 14572  	Fkb_size size_t
 14573  }
 14574  
 14575  type intptr_t = int64
 14576  
 14577  type dirent = struct {
 14578  	Fd_fileno    uint64
 14579  	Fd_off       int64
 14580  	Fd_reclen    uint16
 14581  	Fd_type      uint8
 14582  	Fd_namlen    uint8
 14583  	F__d_padding [4]uint8
 14584  	Fd_name      [256]int8
 14585  }
 14586  
 14587  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 14588  	var in uintptr
 14589  	var nIn sqlite3_int64
 14590  	var pBuf uintptr
 14591  	var db uintptr
 14592  	var mxBlob int32
 14593  
 14594  	in = libc.Xfopen(tls, zName, ts+4402)
 14595  	if in == uintptr(0) {
 14596  		return
 14597  	}
 14598  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 14599  	nIn = libc.Xftell(tls, in)
 14600  	libc.Xrewind(tls, in)
 14601  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 14602  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 14603  	if nIn > sqlite3_int64(mxBlob) {
 14604  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 14605  		libc.Xfclose(tls, in)
 14606  		return
 14607  	}
 14608  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 14609  		if nIn != 0 {
 14610  			return uint64(nIn)
 14611  		}
 14612  		return uint64(1)
 14613  	}())
 14614  	if pBuf == uintptr(0) {
 14615  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 14616  		libc.Xfclose(tls, in)
 14617  		return
 14618  	}
 14619  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 14620  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14621  	} else {
 14622  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 14623  		sqlite3.Xsqlite3_free(tls, pBuf)
 14624  	}
 14625  	libc.Xfclose(tls, in)
 14626  }
 14627  
 14628  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14629  	var zName uintptr
 14630  	_ = argc
 14631  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14632  	if zName == uintptr(0) {
 14633  		return
 14634  	}
 14635  	readFileContents(tls, context, zName)
 14636  }
 14637  
 14638  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 14639  	var zMsg uintptr = uintptr(0)
 14640  	var ap va_list
 14641  	_ = ap
 14642  	ap = va
 14643  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 14644  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 14645  	sqlite3.Xsqlite3_free(tls, zMsg)
 14646  	_ = ap
 14647  }
 14648  
 14649  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 14650  	return libc.Xstat(tls, zPath, pStatBuf)
 14651  }
 14652  
 14653  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 14654  	return libc.Xlstat(tls, zPath, pStatBuf)
 14655  }
 14656  
 14657  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 14658  	bp := tls.Alloc(136)
 14659  	defer tls.Free(136)
 14660  
 14661  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 14662  	var rc int32 = SQLITE_OK
 14663  
 14664  	if zCopy == uintptr(0) {
 14665  		rc = SQLITE_NOMEM
 14666  	} else {
 14667  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 14668  		var i int32 = 1
 14669  
 14670  		for rc == SQLITE_OK {
 14671  			var rc2 int32
 14672  
 14673  			for ; int32(*(*int8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 14674  			}
 14675  			if i == nCopy {
 14676  				break
 14677  			}
 14678  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8(0)
 14679  
 14680  			rc2 = fileStat(tls, zCopy, bp+8)
 14681  			if rc2 != 0 {
 14682  				if libc.Xmkdir(tls, zCopy, uint32(0777)) != 0 {
 14683  					rc = SQLITE_ERROR
 14684  				}
 14685  			} else {
 14686  				if !((*stat)(unsafe.Pointer(bp+8)).Fst_mode&mode_t(0170000) == mode_t(0040000)) {
 14687  					rc = SQLITE_ERROR
 14688  				}
 14689  			}
 14690  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8('/')
 14691  			i++
 14692  		}
 14693  
 14694  		sqlite3.Xsqlite3_free(tls, zCopy)
 14695  	}
 14696  
 14697  	return rc
 14698  }
 14699  
 14700  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 14701  	bp := tls.Alloc(160)
 14702  	defer tls.Free(160)
 14703  
 14704  	if zFile == uintptr(0) {
 14705  		return 1
 14706  	}
 14707  	if mode&mode_t(0170000) == mode_t(0120000) {
 14708  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 14709  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 14710  			return 1
 14711  		}
 14712  	} else {
 14713  		if mode&mode_t(0170000) == mode_t(0040000) {
 14714  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 14715  				if *(*int32)(unsafe.Pointer(libc.X__errno(tls))) != EEXIST ||
 14716  					0 != fileStat(tls, zFile, bp) ||
 14717  					!((*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0170000) == mode_t(0040000)) ||
 14718  					(*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0777) != mode&mode_t(0777) && 0 != libc.Xchmod(tls, zFile, mode&mode_t(0777)) {
 14719  					return 1
 14720  				}
 14721  			}
 14722  		} else {
 14723  			var nWrite sqlite3_int64 = int64(0)
 14724  			var z uintptr
 14725  			var rc int32 = 0
 14726  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 14727  			if out == uintptr(0) {
 14728  				return 1
 14729  			}
 14730  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 14731  			if z != 0 {
 14732  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 14733  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 14734  				if nWrite != n {
 14735  					rc = 1
 14736  				}
 14737  			}
 14738  			libc.Xfclose(tls, out)
 14739  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, mode&mode_t(0777)) != 0 {
 14740  				rc = 1
 14741  			}
 14742  			if rc != 0 {
 14743  				return 2
 14744  			}
 14745  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 14746  		}
 14747  	}
 14748  
 14749  	if mtime >= int64(0) {
 14750  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_usec = libc.AssignPtrInt64(bp+128+1*16+8, int64(0))
 14751  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 14752  		(*timeval)(unsafe.Pointer(bp + 128 + 1*16)).Ftv_sec = mtime
 14753  		if libc.Xutimes(tls, zFile, bp+128) != 0 {
 14754  			return 1
 14755  		}
 14756  	}
 14757  
 14758  	return 0
 14759  }
 14760  
 14761  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14762  	bp := tls.Alloc(24)
 14763  	defer tls.Free(24)
 14764  
 14765  	var zFile uintptr
 14766  	var mode mode_t = mode_t(0)
 14767  	var res int32
 14768  	var mtime sqlite3_int64 = int64(-1)
 14769  
 14770  	if argc < 2 || argc > 4 {
 14771  		sqlite3.Xsqlite3_result_error(tls, context,
 14772  			ts+4985, -1)
 14773  		return
 14774  	}
 14775  
 14776  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14777  	if zFile == uintptr(0) {
 14778  		return
 14779  	}
 14780  	if argc >= 3 {
 14781  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 14782  	}
 14783  	if argc == 4 {
 14784  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 14785  	}
 14786  
 14787  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 14788  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__errno(tls))) == ENOENT {
 14789  		if makeDirectory(tls, zFile) == SQLITE_OK {
 14790  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 14791  		}
 14792  	}
 14793  
 14794  	if argc > 2 && res != 0 {
 14795  		if mode&mode_t(0170000) == mode_t(0120000) {
 14796  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 14797  		} else if mode&mode_t(0170000) == mode_t(0040000) {
 14798  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 14799  		} else {
 14800  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 14801  		}
 14802  	}
 14803  }
 14804  
 14805  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14806  	bp := tls.Alloc(16)
 14807  	defer tls.Free(16)
 14808  
 14809  	var i int32
 14810  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14811  
 14812  	_ = argc
 14813  	if iMode&0170000 == 0120000 {
 14814  		*(*int8)(unsafe.Pointer(bp)) = int8('l')
 14815  	} else if iMode&0170000 == 0100000 {
 14816  		*(*int8)(unsafe.Pointer(bp)) = int8('-')
 14817  	} else if iMode&0170000 == 0040000 {
 14818  		*(*int8)(unsafe.Pointer(bp)) = int8('d')
 14819  	} else {
 14820  		*(*int8)(unsafe.Pointer(bp)) = int8('?')
 14821  	}
 14822  	for i = 0; i < 3; i++ {
 14823  		var m int32 = iMode >> ((2 - i) * 3)
 14824  		var a uintptr = bp + uintptr(1+i*3)
 14825  		*(*int8)(unsafe.Pointer(a)) = func() int8 {
 14826  			if m&0x4 != 0 {
 14827  				return int8('r')
 14828  			}
 14829  			return int8('-')
 14830  		}()
 14831  		*(*int8)(unsafe.Pointer(a + 1)) = func() int8 {
 14832  			if m&0x2 != 0 {
 14833  				return int8('w')
 14834  			}
 14835  			return int8('-')
 14836  		}()
 14837  		*(*int8)(unsafe.Pointer(a + 2)) = func() int8 {
 14838  			if m&0x1 != 0 {
 14839  				return int8('x')
 14840  			}
 14841  			return int8('-')
 14842  		}()
 14843  	}
 14844  	*(*int8)(unsafe.Pointer(bp + 10)) = int8(0)
 14845  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 14846  }
 14847  
 14848  type fsdir_cursor1 = struct {
 14849  	Fbase        sqlite3_vtab_cursor
 14850  	FnLvl        int32
 14851  	FiLvl        int32
 14852  	FaLvl        uintptr
 14853  	FzBase       uintptr
 14854  	FnBase       int32
 14855  	F__ccgo_pad1 [4]byte
 14856  	FsStat       struct {
 14857  		Fst_mode  mode_t
 14858  		Fst_dev   dev_t
 14859  		Fst_ino   ino_t
 14860  		Fst_nlink nlink_t
 14861  		Fst_uid   uid_t
 14862  		Fst_gid   gid_t
 14863  		Fst_rdev  dev_t
 14864  		Fst_atim  struct {
 14865  			Ftv_sec  time_t
 14866  			Ftv_nsec int64
 14867  		}
 14868  		Fst_mtim struct {
 14869  			Ftv_sec  time_t
 14870  			Ftv_nsec int64
 14871  		}
 14872  		Fst_ctim struct {
 14873  			Ftv_sec  time_t
 14874  			Ftv_nsec int64
 14875  		}
 14876  		Fst_size       off_t
 14877  		Fst_blocks     blkcnt_t
 14878  		Fst_blksize    blksize_t
 14879  		Fst_flags      u_int32_t
 14880  		Fst_gen        u_int32_t
 14881  		F__ccgo_pad1   [4]byte
 14882  		F__st_birthtim struct {
 14883  			Ftv_sec  time_t
 14884  			Ftv_nsec int64
 14885  		}
 14886  	}
 14887  	FzPath  uintptr
 14888  	FiRowid sqlite3_int64
 14889  }
 14890  
 14891  type fsdir_cursor = fsdir_cursor1
 14892  type FsdirLevel1 = struct {
 14893  	FpDir uintptr
 14894  	FzDir uintptr
 14895  }
 14896  
 14897  type FsdirLevel = FsdirLevel1
 14898  
 14899  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 14900  
 14901  type fsdir_tab = fsdir_tab1
 14902  
 14903  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14904  	var pNew uintptr = uintptr(0)
 14905  	var rc int32
 14906  	_ = pAux
 14907  	_ = argc
 14908  	_ = argv
 14909  	_ = pzErr
 14910  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 14911  	if rc == SQLITE_OK {
 14912  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 14913  		if pNew == uintptr(0) {
 14914  			return SQLITE_NOMEM
 14915  		}
 14916  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})))
 14917  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 14918  	}
 14919  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14920  	return rc
 14921  }
 14922  
 14923  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14924  	sqlite3.Xsqlite3_free(tls, pVtab)
 14925  	return SQLITE_OK
 14926  }
 14927  
 14928  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14929  	var pCur uintptr
 14930  	_ = p
 14931  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 14932  	if pCur == uintptr(0) {
 14933  		return SQLITE_NOMEM
 14934  	}
 14935  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})))
 14936  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 14937  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14938  	return SQLITE_OK
 14939  }
 14940  
 14941  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 14942  	var i int32
 14943  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 14944  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 14945  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 14946  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 14947  		}
 14948  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 14949  	}
 14950  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 14951  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 14952  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 14953  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 14954  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 14955  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 14956  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 14957  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 14958  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 14959  }
 14960  
 14961  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 14962  	var pCur uintptr = cur
 14963  
 14964  	fsdirResetCursor(tls, pCur)
 14965  	sqlite3.Xsqlite3_free(tls, pCur)
 14966  	return SQLITE_OK
 14967  }
 14968  
 14969  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 14970  	var ap va_list
 14971  	_ = ap
 14972  	ap = va
 14973  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 14974  	_ = ap
 14975  }
 14976  
 14977  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 14978  	bp := tls.Alloc(32)
 14979  	defer tls.Free(32)
 14980  
 14981  	var pCur uintptr = cur
 14982  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 14983  
 14984  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 14985  	if m&mode_t(0170000) == mode_t(0040000) {
 14986  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 14987  		var pLvl uintptr
 14988  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 14989  			var nNew int32 = iNew + 1
 14990  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 14991  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 14992  			if aNew == uintptr(0) {
 14993  				return SQLITE_NOMEM
 14994  			}
 14995  			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))
 14996  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 14997  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 14998  		}
 14999  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15000  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 15001  
 15002  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15003  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15004  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15005  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15006  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15007  			return SQLITE_ERROR
 15008  		}
 15009  	}
 15010  
 15011  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15012  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 15013  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15014  		if pEntry != 0 {
 15015  			if int32(*(*int8)(unsafe.Pointer(pEntry + 24))) == '.' {
 15016  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == '.' && int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 2))) == 0 {
 15017  					continue
 15018  				}
 15019  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == 0 {
 15020  					continue
 15021  				}
 15022  			}
 15023  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15024  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+24))
 15025  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15026  				return SQLITE_NOMEM
 15027  			}
 15028  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15029  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15030  				return SQLITE_ERROR
 15031  			}
 15032  			return SQLITE_OK
 15033  		}
 15034  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15035  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15036  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 15037  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 15038  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 15039  	}
 15040  
 15041  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15042  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15043  	return SQLITE_OK
 15044  }
 15045  
 15046  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15047  	bp := tls.Alloc(64)
 15048  	defer tls.Free(64)
 15049  
 15050  	var pCur uintptr = cur
 15051  	switch i {
 15052  	case FSDIR_COLUMN_NAME:
 15053  		{
 15054  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 15055  			break
 15056  
 15057  		}
 15058  
 15059  	case FSDIR_COLUMN_MODE:
 15060  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 15061  		break
 15062  
 15063  	case FSDIR_COLUMN_MTIME:
 15064  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec)
 15065  		break
 15066  
 15067  	case FSDIR_COLUMN_DATA:
 15068  		{
 15069  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15070  			if m&mode_t(0170000) == mode_t(0040000) {
 15071  				sqlite3.Xsqlite3_result_null(tls, ctx)
 15072  			} else if m&mode_t(0170000) == mode_t(0120000) {
 15073  				var aBuf uintptr = bp
 15074  				var nBuf sqlite3_int64 = int64(64)
 15075  				var n int32
 15076  
 15077  				for 1 != 0 {
 15078  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 15079  					if sqlite3_int64(n) < nBuf {
 15080  						break
 15081  					}
 15082  					if aBuf != bp {
 15083  						sqlite3.Xsqlite3_free(tls, aBuf)
 15084  					}
 15085  					nBuf = nBuf * int64(2)
 15086  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 15087  					if aBuf == uintptr(0) {
 15088  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15089  						return SQLITE_NOMEM
 15090  					}
 15091  				}
 15092  
 15093  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 15094  				if aBuf != bp {
 15095  					sqlite3.Xsqlite3_free(tls, aBuf)
 15096  				}
 15097  			} else {
 15098  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15099  			}
 15100  
 15101  		}
 15102  		fallthrough
 15103  	case FSDIR_COLUMN_PATH:
 15104  		fallthrough
 15105  	default:
 15106  		{
 15107  			break
 15108  
 15109  		}
 15110  	}
 15111  	return SQLITE_OK
 15112  }
 15113  
 15114  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15115  	var pCur uintptr = cur
 15116  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 15117  	return SQLITE_OK
 15118  }
 15119  
 15120  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 15121  	var pCur uintptr = cur
 15122  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 15123  }
 15124  
 15125  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15126  	bp := tls.Alloc(32)
 15127  	defer tls.Free(32)
 15128  
 15129  	var zDir uintptr = uintptr(0)
 15130  	var pCur uintptr = cur
 15131  	_ = idxStr
 15132  	fsdirResetCursor(tls, pCur)
 15133  
 15134  	if idxNum == 0 {
 15135  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 15136  		return SQLITE_ERROR
 15137  	}
 15138  
 15139  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15140  	if zDir == uintptr(0) {
 15141  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 15142  		return SQLITE_ERROR
 15143  	}
 15144  	if argc == 2 {
 15145  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 15146  	}
 15147  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 15148  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 15149  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 15150  	} else {
 15151  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 15152  	}
 15153  
 15154  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15155  		return SQLITE_NOMEM
 15156  	}
 15157  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15158  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15159  		return SQLITE_ERROR
 15160  	}
 15161  
 15162  	return SQLITE_OK
 15163  }
 15164  
 15165  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15166  	var i int32
 15167  	var idxPath int32 = -1
 15168  	var idxDir int32 = -1
 15169  	var seenPath int32 = 0
 15170  	var seenDir int32 = 0
 15171  	var pConstraint uintptr
 15172  
 15173  	_ = tab
 15174  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15175  	i = 0
 15176  __1:
 15177  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15178  		goto __3
 15179  	}
 15180  	{
 15181  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 15182  			goto __2
 15183  		}
 15184  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 15185  		case FSDIR_COLUMN_PATH:
 15186  			{
 15187  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15188  					idxPath = i
 15189  					seenPath = 0
 15190  				} else if idxPath < 0 {
 15191  					seenPath = 1
 15192  				}
 15193  				break
 15194  
 15195  			}
 15196  		case FSDIR_COLUMN_DIR:
 15197  			{
 15198  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15199  					idxDir = i
 15200  					seenDir = 0
 15201  				} else if idxDir < 0 {
 15202  					seenDir = 1
 15203  				}
 15204  				break
 15205  
 15206  			}
 15207  		}
 15208  
 15209  	}
 15210  	goto __2
 15211  __2:
 15212  	i++
 15213  	pConstraint += 12
 15214  	goto __1
 15215  	goto __3
 15216  __3:
 15217  	;
 15218  	if seenPath != 0 || seenDir != 0 {
 15219  		return SQLITE_CONSTRAINT
 15220  	}
 15221  
 15222  	if idxPath < 0 {
 15223  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 15224  
 15225  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 15226  	} else {
 15227  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 15228  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 15229  		if idxDir >= 0 {
 15230  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 15231  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 15232  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 15233  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15234  		} else {
 15235  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15236  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 15237  		}
 15238  	}
 15239  
 15240  	return SQLITE_OK
 15241  }
 15242  
 15243  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 15244  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 15245  	return rc
 15246  }
 15247  
 15248  var fsdirModule1 = sqlite3_module{
 15249  	FxConnect:    0,
 15250  	FxBestIndex:  0,
 15251  	FxDisconnect: 0,
 15252  	FxOpen:       0,
 15253  	FxClose:      0,
 15254  	FxFilter:     0,
 15255  	FxNext:       0,
 15256  	FxEof:        0,
 15257  	FxColumn:     0,
 15258  	FxRowid:      0,
 15259  }
 15260  
 15261  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15262  	var rc int32 = SQLITE_OK
 15263  	_ = pApi
 15264  
 15265  	_ = pzErrMsg
 15266  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 15267  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15268  		*(*uintptr)(unsafe.Pointer(&struct {
 15269  			f func(*libc.TLS, uintptr, int32, uintptr)
 15270  		}{readfileFunc})), uintptr(0), uintptr(0))
 15271  	if rc == SQLITE_OK {
 15272  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 15273  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15274  			*(*uintptr)(unsafe.Pointer(&struct {
 15275  				f func(*libc.TLS, uintptr, int32, uintptr)
 15276  			}{writefileFunc})), uintptr(0), uintptr(0))
 15277  	}
 15278  	if rc == SQLITE_OK {
 15279  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 15280  			*(*uintptr)(unsafe.Pointer(&struct {
 15281  				f func(*libc.TLS, uintptr, int32, uintptr)
 15282  			}{lsModeFunc})), uintptr(0), uintptr(0))
 15283  	}
 15284  	if rc == SQLITE_OK {
 15285  		rc = fsdirRegister(tls, db)
 15286  	}
 15287  	return rc
 15288  }
 15289  
 15290  type fuzzer_vtab1 = struct {
 15291  	Fbase        sqlite3_vtab
 15292  	FzClassName  uintptr
 15293  	FpRule       uintptr
 15294  	FnCursor     int32
 15295  	F__ccgo_pad1 [4]byte
 15296  }
 15297  
 15298  type fuzzer_vtab = fuzzer_vtab1
 15299  type fuzzer_cursor1 = struct {
 15300  	Fbase        sqlite3_vtab_cursor
 15301  	FiRowid      sqlite3_int64
 15302  	FpVtab       uintptr
 15303  	FrLimit      fuzzer_cost
 15304  	F__ccgo_pad1 [4]byte
 15305  	FpStem       uintptr
 15306  	FpDone       uintptr
 15307  	FaQueue      [20]uintptr
 15308  	FmxQueue     int32
 15309  	F__ccgo_pad2 [4]byte
 15310  	FzBuf        uintptr
 15311  	FnBuf        int32
 15312  	FnStem       int32
 15313  	FiRuleset    int32
 15314  	F__ccgo_pad3 [4]byte
 15315  	FnullRule    fuzzer_rule
 15316  	FapHash      [4001]uintptr
 15317  }
 15318  
 15319  type fuzzer_cursor = fuzzer_cursor1
 15320  type fuzzer_rule1 = struct {
 15321  	FpNext       uintptr
 15322  	FzFrom       uintptr
 15323  	FrCost       fuzzer_cost
 15324  	FnFrom       fuzzer_len
 15325  	FnTo         fuzzer_len
 15326  	F__ccgo_pad1 [2]byte
 15327  	FiRuleset    fuzzer_ruleid
 15328  	FzTo         [4]int8
 15329  }
 15330  
 15331  type fuzzer_rule = fuzzer_rule1
 15332  type fuzzer_stem1 = struct {
 15333  	FzBasis      uintptr
 15334  	FpRule       uintptr
 15335  	FpNext       uintptr
 15336  	FpHash       uintptr
 15337  	FrBaseCost   fuzzer_cost
 15338  	FrCostX      fuzzer_cost
 15339  	FnBasis      fuzzer_len
 15340  	Fn           fuzzer_len
 15341  	F__ccgo_pad1 [6]byte
 15342  }
 15343  
 15344  type fuzzer_stem = fuzzer_stem1
 15345  
 15346  type fuzzer_cost = int32
 15347  type fuzzer_len = int8
 15348  type fuzzer_ruleid = int32
 15349  
 15350  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15351  	bp := tls.Alloc(32)
 15352  	defer tls.Free(32)
 15353  
 15354  	var pTail uintptr
 15355  
 15356  	pTail = bp
 15357  	for pA != 0 && pB != 0 {
 15358  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 15359  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15360  			pTail = pA
 15361  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 15362  		} else {
 15363  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15364  			pTail = pB
 15365  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 15366  		}
 15367  	}
 15368  	if pA == uintptr(0) {
 15369  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15370  	} else {
 15371  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15372  	}
 15373  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 15374  }
 15375  
 15376  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 15377  	bp := tls.Alloc(48)
 15378  	defer tls.Free(48)
 15379  
 15380  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 15381  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 15382  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 15383  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 15384  
 15385  	var rc int32 = SQLITE_OK
 15386  	var nFrom int32
 15387  	var nTo int32
 15388  	var pRule uintptr = uintptr(0)
 15389  
 15390  	if zFrom == uintptr(0) {
 15391  		zFrom = ts + 584
 15392  	}
 15393  	if zTo == uintptr(0) {
 15394  		zTo = ts + 584
 15395  	}
 15396  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 15397  	nTo = int32(libc.Xstrlen(tls, zTo))
 15398  
 15399  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 15400  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 15401  		return SQLITE_OK
 15402  	}
 15403  
 15404  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 15405  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 15406  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 15407  		rc = SQLITE_ERROR
 15408  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 15409  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 15410  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 15411  		rc = SQLITE_ERROR
 15412  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 15413  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 15414  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 15415  		rc = SQLITE_ERROR
 15416  	} else {
 15417  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 15418  		if pRule == uintptr(0) {
 15419  			rc = SQLITE_NOMEM
 15420  		} else {
 15421  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})))
 15422  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 15423  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 15424  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 15425  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 15426  			libc.Xmemcpy(tls, pRule+28, zTo, uint64(nTo+1))
 15427  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 15428  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 15429  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 15430  		}
 15431  	}
 15432  
 15433  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 15434  	return rc
 15435  }
 15436  
 15437  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 15438  	bp := tls.Alloc(192)
 15439  	defer tls.Free(192)
 15440  
 15441  	var rc int32 = SQLITE_OK
 15442  	var zSql uintptr
 15443  	var pHead uintptr = uintptr(0)
 15444  
 15445  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 15446  	if zSql == uintptr(0) {
 15447  		rc = SQLITE_NOMEM
 15448  	} else {
 15449  		var rc2 int32
 15450  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 15451  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 15452  		if rc != SQLITE_OK {
 15453  			*(*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)))
 15454  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 15455  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 15456  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 15457  			rc = SQLITE_ERROR
 15458  		} else {
 15459  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 15460  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 15461  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 15462  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 15463  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 15464  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 15465  				}
 15466  			}
 15467  		}
 15468  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 15469  		if rc == SQLITE_OK {
 15470  			rc = rc2
 15471  		}
 15472  	}
 15473  	sqlite3.Xsqlite3_free(tls, zSql)
 15474  
 15475  	if rc == SQLITE_OK {
 15476  		var i uint32
 15477  		var pX uintptr
 15478  
 15479  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15480  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15481  		}
 15482  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 15483  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 15484  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 15485  			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++ {
 15486  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15487  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15488  			}
 15489  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15490  		}
 15491  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 15492  		i = uint32(1)
 15493  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15494  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15495  		}
 15496  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 15497  	} else {
 15498  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 15499  	}
 15500  
 15501  	return rc
 15502  }
 15503  
 15504  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 15505  	var nIn sqlite3_int64
 15506  	var zOut uintptr
 15507  
 15508  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 15509  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 15510  	if zOut != 0 {
 15511  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 15512  
 15513  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 15514  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 15515  		} else {
 15516  			var iOut int32 = 0
 15517  			var iIn int32
 15518  
 15519  			if int32(q) == '[' {
 15520  				q = int8(']')
 15521  			}
 15522  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 15523  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 15524  					iIn++
 15525  				}
 15526  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 15527  			}
 15528  		}
 15529  
 15530  	}
 15531  	return zOut
 15532  }
 15533  
 15534  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15535  	var p uintptr = pVtab
 15536  
 15537  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 15538  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 15539  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15540  		sqlite3.Xsqlite3_free(tls, pRule)
 15541  	}
 15542  	sqlite3.Xsqlite3_free(tls, p)
 15543  	return SQLITE_OK
 15544  }
 15545  
 15546  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15547  	bp := tls.Alloc(8)
 15548  	defer tls.Free(8)
 15549  
 15550  	var rc int32 = SQLITE_OK
 15551  	var pNew uintptr = uintptr(0)
 15552  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 15553  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 15554  
 15555  	if argc != 4 {
 15556  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 15557  			ts+5394, libc.VaList(bp, zModule))
 15558  		rc = SQLITE_ERROR
 15559  	} else {
 15560  		var nModule sqlite3_int64
 15561  
 15562  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 15563  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 15564  		if pNew == uintptr(0) {
 15565  			rc = SQLITE_NOMEM
 15566  		} else {
 15567  			var zTab uintptr
 15568  
 15569  			libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})))
 15570  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 15571  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 15572  
 15573  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 15574  			if zTab == uintptr(0) {
 15575  				rc = SQLITE_NOMEM
 15576  			} else {
 15577  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 15578  				sqlite3.Xsqlite3_free(tls, zTab)
 15579  			}
 15580  
 15581  			if rc == SQLITE_OK {
 15582  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 15583  			}
 15584  			if rc != SQLITE_OK {
 15585  				fuzzerDisconnect(tls, pNew)
 15586  				pNew = uintptr(0)
 15587  			} else {
 15588  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 15589  			}
 15590  		}
 15591  	}
 15592  
 15593  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15594  	return rc
 15595  }
 15596  
 15597  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 15598  	var p uintptr = pVTab
 15599  	var pCur uintptr
 15600  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 15601  	if pCur == uintptr(0) {
 15602  		return SQLITE_NOMEM
 15603  	}
 15604  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})))
 15605  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 15606  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15607  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 15608  	return SQLITE_OK
 15609  }
 15610  
 15611  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 15612  	for pStem != 0 {
 15613  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 15614  		sqlite3.Xsqlite3_free(tls, pStem)
 15615  		pStem = pNext
 15616  	}
 15617  }
 15618  
 15619  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 15620  	var i int32
 15621  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 15622  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 15623  	for i = 0; i < FUZZER_NQUEUE; i++ {
 15624  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 15625  	}
 15626  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15627  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 15628  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 15629  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15630  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 15631  		libc.Xmemset(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})))
 15632  		libc.Xmemset(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})))
 15633  	}
 15634  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 15635  }
 15636  
 15637  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 15638  	var pCur uintptr = cur
 15639  	fuzzerClearCursor(tls, pCur, 0)
 15640  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 15641  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 15642  	sqlite3.Xsqlite3_free(tls, pCur)
 15643  	return SQLITE_OK
 15644  }
 15645  
 15646  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 15647  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 15648  	var n int32
 15649  	var z uintptr
 15650  
 15651  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 15652  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 15653  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 15654  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 15655  			return SQLITE_NOMEM
 15656  		}
 15657  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 15658  	}
 15659  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 15660  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 15661  	if n < 0 {
 15662  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 15663  	} else {
 15664  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n))
 15665  		libc.Xmemcpy(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 15666  		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)),
 15667  			uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 15668  	}
 15669  
 15670  	return SQLITE_OK
 15671  }
 15672  
 15673  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 15674  	var h uint32 = uint32(0)
 15675  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 15676  		h = h<<3 ^ h>>29 ^ uint32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 15677  	}
 15678  	return h % uint32(FUZZER_HASH)
 15679  }
 15680  
 15681  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 15682  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 15683  }
 15684  
 15685  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 15686  	var h uint32
 15687  	var pLookup uintptr
 15688  
 15689  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 15690  		return -1
 15691  	}
 15692  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 15693  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 15694  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 15695  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 15696  	}
 15697  	return libc.Bool32(pLookup != uintptr(0))
 15698  }
 15699  
 15700  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 15701  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 15702  		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))
 15703  }
 15704  
 15705  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 15706  	var pRule uintptr
 15707  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 15708  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 15709  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 15710  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 15711  				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 {
 15712  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 15713  				if rc < 0 {
 15714  					return -1
 15715  				}
 15716  				if rc == 0 {
 15717  					fuzzerCost(tls, pStem)
 15718  					return 1
 15719  				}
 15720  			}
 15721  		}
 15722  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 15723  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 15724  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15725  		}
 15726  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 15727  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 15728  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 15729  		}
 15730  	}
 15731  	return 0
 15732  }
 15733  
 15734  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15735  	bp := tls.Alloc(48)
 15736  	defer tls.Free(48)
 15737  
 15738  	var pTail uintptr
 15739  
 15740  	pTail = bp
 15741  	for pA != 0 && pB != 0 {
 15742  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 15743  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 15744  			pTail = pA
 15745  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 15746  		} else {
 15747  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 15748  			pTail = pB
 15749  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 15750  		}
 15751  	}
 15752  	if pA == uintptr(0) {
 15753  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 15754  	} else {
 15755  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 15756  	}
 15757  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 15758  }
 15759  
 15760  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 15761  	var pBest uintptr
 15762  	var pX uintptr
 15763  	var iBest int32
 15764  	var i int32
 15765  
 15766  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 15767  		iBest = -1
 15768  		pBest = uintptr(0)
 15769  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 15770  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 15771  			if pX == uintptr(0) {
 15772  				continue
 15773  			}
 15774  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 15775  				pBest = pX
 15776  				iBest = i
 15777  			}
 15778  		}
 15779  		if pBest != 0 {
 15780  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 15781  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 15782  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 15783  		}
 15784  	}
 15785  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 15786  }
 15787  
 15788  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 15789  	var pX uintptr
 15790  	var i int32
 15791  
 15792  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 15793  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 15794  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 15795  		pNew = pX
 15796  	}
 15797  
 15798  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 15799  	pX = pNew
 15800  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 15801  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 15802  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 15803  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 15804  		} else {
 15805  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 15806  			break
 15807  		}
 15808  	}
 15809  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 15810  		if i < FUZZER_NQUEUE {
 15811  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 15812  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 15813  		} else {
 15814  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 15815  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 15816  		}
 15817  	}
 15818  
 15819  	return fuzzerLowestCostStem(tls, pCur)
 15820  }
 15821  
 15822  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 15823  	var pNew uintptr
 15824  	var pRule uintptr
 15825  	var h uint32
 15826  
 15827  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 15828  	if pNew == uintptr(0) {
 15829  		return uintptr(0)
 15830  	}
 15831  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})))
 15832  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 15833  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 15834  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 15835  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 15836  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 15837  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15838  	}
 15839  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 15840  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 15841  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 15842  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 15843  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 15844  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 15845  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 15846  	return pNew
 15847  }
 15848  
 15849  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 15850  	var pCur uintptr = cur
 15851  	var rc int32
 15852  	var pStem uintptr
 15853  	var pNew uintptr
 15854  
 15855  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15856  
 15857  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 15858  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 15859  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 15860  		if rc == SQLITE_NOMEM {
 15861  			return SQLITE_NOMEM
 15862  		}
 15863  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 15864  		if pNew != 0 {
 15865  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 15866  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 15867  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 15868  			} else {
 15869  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 15870  					return SQLITE_OK
 15871  				}
 15872  			}
 15873  		} else {
 15874  			return SQLITE_NOMEM
 15875  		}
 15876  	}
 15877  
 15878  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 15879  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 15880  		if res < 0 {
 15881  			return SQLITE_NOMEM
 15882  		} else if res > 0 {
 15883  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15884  			pStem = fuzzerInsert(tls, pCur, pStem)
 15885  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 15886  				if rc < 0 {
 15887  					return SQLITE_NOMEM
 15888  				}
 15889  				continue
 15890  			}
 15891  			return SQLITE_OK
 15892  		}
 15893  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15894  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 15895  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 15896  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 15897  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 15898  			if rc < 0 {
 15899  				return SQLITE_NOMEM
 15900  			}
 15901  			if rc == 0 {
 15902  				return SQLITE_OK
 15903  			}
 15904  		}
 15905  	}
 15906  
 15907  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15908  	return SQLITE_OK
 15909  }
 15910  
 15911  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15912  	var pCur uintptr = pVtabCursor
 15913  	var zWord uintptr = ts + 584
 15914  	var pStem uintptr
 15915  	var idx int32
 15916  
 15917  	fuzzerClearCursor(tls, pCur, 1)
 15918  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 15919  	idx = 0
 15920  	if idxNum&1 != 0 {
 15921  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15922  		idx++
 15923  	}
 15924  	if idxNum&2 != 0 {
 15925  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 15926  		idx++
 15927  	}
 15928  	if idxNum&4 != 0 {
 15929  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 15930  		idx++
 15931  	}
 15932  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 15933  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 15934  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 15935  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 15936  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 15937  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15938  
 15939  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 15940  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 15941  		if pStem == uintptr(0) {
 15942  			return SQLITE_NOMEM
 15943  		}
 15944  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 15945  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 15946  	} else {
 15947  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15948  	}
 15949  
 15950  	return SQLITE_OK
 15951  }
 15952  
 15953  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15954  	var pCur uintptr = cur
 15955  	if i == 0 {
 15956  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 15957  			return SQLITE_NOMEM
 15958  		}
 15959  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 15960  	} else if i == 1 {
 15961  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 15962  	} else {
 15963  		sqlite3.Xsqlite3_result_null(tls, ctx)
 15964  	}
 15965  	return SQLITE_OK
 15966  }
 15967  
 15968  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15969  	var pCur uintptr = cur
 15970  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 15971  	return SQLITE_OK
 15972  }
 15973  
 15974  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 15975  	var pCur uintptr = cur
 15976  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 15977  }
 15978  
 15979  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15980  	var iPlan int32 = 0
 15981  	var iDistTerm int32 = -1
 15982  	var iRulesetTerm int32 = -1
 15983  	var i int32
 15984  	var seenMatch int32 = 0
 15985  	var pConstraint uintptr
 15986  	var rCost float64 = 1e12
 15987  
 15988  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15989  	i = 0
 15990  __1:
 15991  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15992  		goto __3
 15993  	}
 15994  	{
 15995  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 15996  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 15997  			seenMatch = 1
 15998  		}
 15999  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16000  			goto __2
 16001  		}
 16002  		if iPlan&1 == 0 &&
 16003  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16004  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16005  			iPlan = iPlan | 1
 16006  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16007  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16008  			rCost = rCost / 1e6
 16009  		}
 16010  		if iPlan&2 == 0 &&
 16011  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16012  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16013  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16014  			iPlan = iPlan | 2
 16015  			iDistTerm = i
 16016  			rCost = rCost / 10.0
 16017  		}
 16018  		if iPlan&4 == 0 &&
 16019  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 16020  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 16021  			iPlan = iPlan | 4
 16022  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16023  			iRulesetTerm = i
 16024  			rCost = rCost / 10.0
 16025  		}
 16026  
 16027  	}
 16028  	goto __2
 16029  __2:
 16030  	i++
 16031  	pConstraint += 12
 16032  	goto __1
 16033  	goto __3
 16034  __3:
 16035  	;
 16036  	if iPlan&2 != 0 {
 16037  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 16038  	}
 16039  	if iPlan&4 != 0 {
 16040  		var idx int32 = 1
 16041  		if iPlan&1 != 0 {
 16042  			idx++
 16043  		}
 16044  		if iPlan&2 != 0 {
 16045  			idx++
 16046  		}
 16047  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 16048  	}
 16049  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 16050  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 16051  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 16052  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 16053  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 16054  	}
 16055  	if seenMatch != 0 && iPlan&1 == 0 {
 16056  		rCost = 1e99
 16057  	}
 16058  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 16059  
 16060  	return SQLITE_OK
 16061  }
 16062  
 16063  var fuzzerModule = sqlite3_module{
 16064  	FxCreate:     0,
 16065  	FxConnect:    0,
 16066  	FxBestIndex:  0,
 16067  	FxDisconnect: 0,
 16068  	FxDestroy:    0,
 16069  	FxOpen:       0,
 16070  	FxClose:      0,
 16071  	FxFilter:     0,
 16072  	FxNext:       0,
 16073  	FxEof:        0,
 16074  	FxColumn:     0,
 16075  	FxRowid:      0,
 16076  }
 16077  
 16078  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16079  	var rc int32 = SQLITE_OK
 16080  	_ = pApi
 16081  
 16082  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 16083  	return rc
 16084  }
 16085  
 16086  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16087  	bp := tls.Alloc(160)
 16088  	defer tls.Free(160)
 16089  
 16090  	if argc == 1 {
 16091  		var m sqlite3_int64
 16092  
 16093  		var e int32
 16094  		var isNeg int32
 16095  
 16096  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16097  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16098  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16099  			var i uint32
 16100  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 16101  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16102  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16103  			}
 16104  			libc.Xmemcpy(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))))
 16105  		} else {
 16106  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16107  		}
 16108  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 16109  			isNeg = 1
 16110  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 16111  		} else {
 16112  			isNeg = 0
 16113  		}
 16114  		libc.Xmemcpy(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 16115  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 16116  			e = 0
 16117  			m = int64(0)
 16118  		} else {
 16119  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 16120  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 16121  			if e == 0 {
 16122  				m <<= 1
 16123  			} else {
 16124  				m = m | int64(1)<<52
 16125  			}
 16126  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 16127  				m >>= 1
 16128  				e++
 16129  			}
 16130  			if isNeg != 0 {
 16131  				m = -m
 16132  			}
 16133  		}
 16134  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 16135  		case 0:
 16136  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+5490,
 16137  				libc.VaList(bp, m, e-1075))
 16138  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 16139  			break
 16140  			fallthrough
 16141  		case 1:
 16142  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 16143  			break
 16144  			fallthrough
 16145  		case 2:
 16146  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 16147  			break
 16148  		}
 16149  	} else {
 16150  		var m sqlite3_int64
 16151  		var e sqlite3_int64
 16152  
 16153  		var isNeg int32 = 0
 16154  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16155  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16156  
 16157  		if e > int64(10000) {
 16158  			e = int64(10000)
 16159  		} else if e < int64(-10000) {
 16160  			e = int64(-10000)
 16161  		}
 16162  
 16163  		if m < int64(0) {
 16164  			isNeg = 1
 16165  			m = -m
 16166  			if m < int64(0) {
 16167  				return
 16168  			}
 16169  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 16170  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 16171  			return
 16172  		}
 16173  		for m>>32&int64(0xffe00000) != 0 {
 16174  			m >>= 1
 16175  			e++
 16176  		}
 16177  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 16178  			m <<= 1
 16179  			e--
 16180  		}
 16181  		e = e + int64(1075)
 16182  		if e <= int64(0) {
 16183  			if int64(1)-e >= int64(64) {
 16184  				m = int64(0)
 16185  			} else {
 16186  				m >>= int64(1) - e
 16187  			}
 16188  			e = int64(0)
 16189  		} else if e > int64(0x7ff) {
 16190  			e = int64(0x7ff)
 16191  		}
 16192  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 16193  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 16194  		if isNeg != 0 {
 16195  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 16196  		}
 16197  		libc.Xmemcpy(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))))
 16198  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 16199  	}
 16200  }
 16201  
 16202  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16203  	bp := tls.Alloc(16)
 16204  	defer tls.Free(16)
 16205  
 16206  	_ = argc
 16207  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16208  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16209  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16210  		var i uint32
 16211  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 16212  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16213  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16214  		}
 16215  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16216  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 16217  	}
 16218  }
 16219  
 16220  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16221  	bp := tls.Alloc(24)
 16222  	defer tls.Free(24)
 16223  
 16224  	_ = argc
 16225  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 16226  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 16227  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16228  
 16229  		var i uint32
 16230  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16231  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 16232  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 16233  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 16234  		}
 16235  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 16236  	}
 16237  }
 16238  
 16239  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16240  	var i uint32
 16241  	var rc int32 = SQLITE_OK
 16242  	_ = pApi
 16243  
 16244  	_ = pzErrMsg
 16245  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 16246  		FzFName uintptr
 16247  		FnArg   int32
 16248  		FiAux   int32
 16249  		FxFunc  uintptr
 16250  	}{})) && rc == SQLITE_OK; i++ {
 16251  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 16252  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 16253  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 16254  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 16255  	}
 16256  	return rc
 16257  }
 16258  
 16259  var aFunc1 = [6]struct {
 16260  	FzFName uintptr
 16261  	FnArg   int32
 16262  	FiAux   int32
 16263  	FxFunc  uintptr
 16264  }{
 16265  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 16266  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 16267  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 16268  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 16269  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 16270  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 16271  }
 16272  
 16273  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 16274  	bp := tls.Alloc(88)
 16275  	defer tls.Free(88)
 16276  
 16277  	var rc int32 = SQLITE_OK
 16278  	var zSql uintptr = uintptr(0)
 16279  	var pgsz int32 = 0
 16280  	var nTotal int32 = 0
 16281  
 16282  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 16283  		return SQLITE_MISUSE
 16284  	}
 16285  
 16286  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 16287  		libc.VaList(bp, func() uintptr {
 16288  			if zDb != 0 {
 16289  				return ts + 5624
 16290  			}
 16291  			return ts + 584
 16292  		}(), func() uintptr {
 16293  			if zDb != 0 {
 16294  				return zDb
 16295  			}
 16296  			return ts + 584
 16297  		}(), func() uintptr {
 16298  			if zDb != 0 {
 16299  				return ts + 5626
 16300  			}
 16301  			return ts + 584
 16302  		}()))
 16303  	if zSql == uintptr(0) {
 16304  		return SQLITE_NOMEM
 16305  	}
 16306  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 16307  	sqlite3.Xsqlite3_free(tls, zSql)
 16308  
 16309  	if rc == SQLITE_OK {
 16310  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 16311  			libc.VaList(bp+24, func() uintptr {
 16312  				if zDb != 0 {
 16313  					return ts + 5624
 16314  				}
 16315  				return ts + 584
 16316  			}(), func() uintptr {
 16317  				if zDb != 0 {
 16318  					return zDb
 16319  				}
 16320  				return ts + 584
 16321  			}(), func() uintptr {
 16322  				if zDb != 0 {
 16323  					return ts + 5626
 16324  				}
 16325  				return ts + 584
 16326  			}()))
 16327  		if zSql == uintptr(0) {
 16328  			rc = SQLITE_NOMEM
 16329  		} else {
 16330  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16331  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 16332  			sqlite3.Xsqlite3_free(tls, zSql)
 16333  			if rc == SQLITE_OK {
 16334  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 16335  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 16336  				}
 16337  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 16338  			}
 16339  			if rc == SQLITE_OK && pgsz == 0 {
 16340  				rc = SQLITE_ERROR
 16341  			}
 16342  		}
 16343  	}
 16344  
 16345  	if rc == SQLITE_OK {
 16346  		var rc2 int32
 16347  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 16348  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 16349  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 16350  			var iPg sqlite3_int64 = int64(1)
 16351  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 16352  			for 1 != 0 {
 16353  				rc = (*struct {
 16354  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 16355  				})(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)
 16356  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 16357  					break
 16358  				}
 16359  
 16360  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 16361  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 16362  
 16363  				rc = (*struct {
 16364  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 16365  				})(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)))
 16366  				if rc != SQLITE_OK {
 16367  					break
 16368  				}
 16369  				iPg++
 16370  			}
 16371  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 16372  				ts+5652, libc.VaList(bp+48, func() int64 {
 16373  					if iPg == int64(1) {
 16374  						return int64(0)
 16375  					}
 16376  					return iPg
 16377  				}(),
 16378  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 16379  		}
 16380  
 16381  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 16382  		if rc == SQLITE_OK {
 16383  			rc = rc2
 16384  		}
 16385  	}
 16386  
 16387  	return rc
 16388  }
 16389  
 16390  type nextCharContext1 = struct {
 16391  	Fdb           uintptr
 16392  	FpStmt        uintptr
 16393  	FzPrefix      uintptr
 16394  	FnPrefix      int32
 16395  	FnAlloc       int32
 16396  	FnUsed        int32
 16397  	F__ccgo_pad1  [4]byte
 16398  	FaResult      uintptr
 16399  	FmallocFailed int32
 16400  	FotherError   int32
 16401  }
 16402  
 16403  type nextCharContext = nextCharContext1
 16404  
 16405  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 16406  	var i int32
 16407  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 16408  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 16409  			return
 16410  		}
 16411  	}
 16412  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 16413  		var aNew uintptr
 16414  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 16415  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 16416  		if aNew == uintptr(0) {
 16417  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 16418  			return
 16419  		} else {
 16420  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 16421  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 16422  		}
 16423  	}
 16424  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 16425  }
 16426  
 16427  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 16428  	if c < uint32(0x00080) {
 16429  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 16430  		return 1
 16431  	}
 16432  	if c < uint32(0x00800) {
 16433  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 16434  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16435  		return 2
 16436  	}
 16437  	if c < uint32(0x10000) {
 16438  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 16439  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16440  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16441  		return 3
 16442  	}
 16443  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 16444  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 16445  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16446  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16447  	return 4
 16448  }
 16449  
 16450  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 16451  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 16452  	if c < uint32(0xc0) {
 16453  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16454  		return 1
 16455  	} else {
 16456  		var n int32 = 1
 16457  		c = uint32(validBits[c-uint32(0xc0)])
 16458  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 16459  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 16460  		}
 16461  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 16462  			c = uint32(0xFFFD)
 16463  		}
 16464  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16465  		return n
 16466  	}
 16467  	return int32(0)
 16468  }
 16469  
 16470  var validBits = [64]uint8{
 16471  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16472  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16473  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 16474  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 16475  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16476  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16477  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16478  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 16479  }
 16480  
 16481  func findNextChars(tls *libc.TLS, p uintptr) {
 16482  	bp := tls.Alloc(12)
 16483  	defer tls.Free(12)
 16484  
 16485  	var cPrev uint32 = uint32(0)
 16486  
 16487  	var n int32
 16488  	var rc int32
 16489  
 16490  	for {
 16491  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 16492  			uintptr(0))
 16493  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 16494  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 16495  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16496  		if rc == SQLITE_DONE {
 16497  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16498  			return
 16499  		} else if rc != SQLITE_ROW {
 16500  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 16501  			return
 16502  		} else {
 16503  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 16504  
 16505  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 16506  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16507  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 16508  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 16509  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 16510  				return
 16511  			}
 16512  		}
 16513  	}
 16514  }
 16515  
 16516  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16517  	bp := tls.Alloc(136)
 16518  	defer tls.Free(136)
 16519  
 16520  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16521  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 16522  	var zWhere uintptr
 16523  	var zCollName uintptr
 16524  	var zWhereClause uintptr = uintptr(0)
 16525  	var zColl uintptr = uintptr(0)
 16526  	var zSql uintptr
 16527  	var rc int32
 16528  
 16529  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})))
 16530  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 16531  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16532  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16533  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 16534  		return
 16535  	}
 16536  	if argc >= 4 &&
 16537  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 16538  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 16539  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 16540  		if zWhereClause == uintptr(0) {
 16541  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16542  			return
 16543  		}
 16544  	} else {
 16545  		zWhereClause = ts + 584
 16546  	}
 16547  	if argc >= 5 &&
 16548  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 16549  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 16550  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 16551  		if zColl == uintptr(0) {
 16552  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16553  			if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 16554  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 16555  			}
 16556  			return
 16557  		}
 16558  	} else {
 16559  		zColl = ts + 584
 16560  	}
 16561  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 16562  		ts+5728,
 16563  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 16564  	if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 16565  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 16566  	}
 16567  	if *(*int8)(unsafe.Pointer(zColl)) != 0 {
 16568  		sqlite3.Xsqlite3_free(tls, zColl)
 16569  	}
 16570  	if zSql == uintptr(0) {
 16571  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16572  		return
 16573  	}
 16574  
 16575  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 16576  	sqlite3.Xsqlite3_free(tls, zSql)
 16577  	if rc != 0 {
 16578  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 16579  		return
 16580  	}
 16581  	findNextChars(tls, bp+80)
 16582  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 16583  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16584  	} else {
 16585  		var pRes uintptr
 16586  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 16587  		if pRes == uintptr(0) {
 16588  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16589  		} else {
 16590  			var i int32
 16591  			var n int32 = 0
 16592  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 16593  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 16594  			}
 16595  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 16596  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 16597  		}
 16598  	}
 16599  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 16600  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 16601  }
 16602  
 16603  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16604  	var rc int32 = SQLITE_OK
 16605  	_ = pApi
 16606  
 16607  	_ = pzErrMsg
 16608  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 16609  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16610  		*(*uintptr)(unsafe.Pointer(&struct {
 16611  			f func(*libc.TLS, uintptr, int32, uintptr)
 16612  		}{nextCharFunc})), uintptr(0), uintptr(0))
 16613  	if rc == SQLITE_OK {
 16614  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 16615  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16616  			*(*uintptr)(unsafe.Pointer(&struct {
 16617  				f func(*libc.TLS, uintptr, int32, uintptr)
 16618  			}{nextCharFunc})), uintptr(0), uintptr(0))
 16619  	}
 16620  	if rc == SQLITE_OK {
 16621  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 16622  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16623  			*(*uintptr)(unsafe.Pointer(&struct {
 16624  				f func(*libc.TLS, uintptr, int32, uintptr)
 16625  			}{nextCharFunc})), uintptr(0), uintptr(0))
 16626  	}
 16627  	return rc
 16628  }
 16629  
 16630  var aiClass = [256]uint8{
 16631  	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),
 16632  	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),
 16633  	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),
 16634  	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),
 16635  	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),
 16636  	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),
 16637  	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),
 16638  	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),
 16639  	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),
 16640  	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),
 16641  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16642  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16643  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16644  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16645  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16646  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 16647  }
 16648  
 16649  var sqlite3UpperToLower = [256]uint8{
 16650  	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),
 16651  	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),
 16652  	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),
 16653  	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),
 16654  	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),
 16655  	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),
 16656  	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),
 16657  	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),
 16658  	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),
 16659  	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),
 16660  	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),
 16661  	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),
 16662  	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),
 16663  	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),
 16664  	uint8(252), uint8(253), uint8(254), uint8(255),
 16665  }
 16666  
 16667  var sqlite3CtypeMap = [256]uint8{
 16668  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16669  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 16670  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16671  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16672  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 16673  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16674  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 16675  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16676  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 16677  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 16678  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 16679  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 16680  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 16681  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 16682  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 16683  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16684  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16685  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16686  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16687  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16688  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16689  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16690  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16691  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16692  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16693  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16694  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16695  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16696  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16697  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16698  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16699  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16700  }
 16701  
 16702  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 16703  	var i int32
 16704  	var c int32
 16705  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 16706  	case CC_SPACE:
 16707  		{
 16708  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 16709  			}
 16710  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16711  			return i
 16712  
 16713  		}
 16714  	case CC_MINUS:
 16715  		{
 16716  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 16717  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 16718  				}
 16719  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16720  				return i
 16721  			}
 16722  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16723  			return 1
 16724  
 16725  		}
 16726  	case CC_LP:
 16727  		{
 16728  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16729  			return 1
 16730  
 16731  		}
 16732  	case CC_RP:
 16733  		{
 16734  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16735  			return 1
 16736  
 16737  		}
 16738  	case CC_SEMI:
 16739  		{
 16740  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16741  			return 1
 16742  
 16743  		}
 16744  	case CC_PLUS:
 16745  		{
 16746  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16747  			return 1
 16748  
 16749  		}
 16750  	case CC_STAR:
 16751  		{
 16752  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16753  			return 1
 16754  
 16755  		}
 16756  	case CC_SLASH:
 16757  		{
 16758  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 16759  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16760  				return 1
 16761  			}
 16762  			i = 3
 16763  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 16764  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16765  			}
 16766  			if c != 0 {
 16767  				i++
 16768  			}
 16769  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16770  			return i
 16771  
 16772  		}
 16773  	case CC_PERCENT:
 16774  		{
 16775  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16776  			return 1
 16777  
 16778  		}
 16779  	case CC_EQ:
 16780  		{
 16781  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16782  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 16783  
 16784  		}
 16785  	case CC_LT:
 16786  		{
 16787  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 16788  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16789  				return 2
 16790  			} else if c == '>' {
 16791  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16792  				return 2
 16793  			} else if c == '<' {
 16794  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16795  				return 2
 16796  			} else {
 16797  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16798  				return 1
 16799  			}
 16800  
 16801  		}
 16802  		fallthrough
 16803  	case CC_GT:
 16804  		{
 16805  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 16806  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16807  				return 2
 16808  			} else if c == '>' {
 16809  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16810  				return 2
 16811  			} else {
 16812  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16813  				return 1
 16814  			}
 16815  
 16816  		}
 16817  		fallthrough
 16818  	case CC_BANG:
 16819  		{
 16820  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 16821  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16822  				return 1
 16823  			} else {
 16824  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16825  				return 2
 16826  			}
 16827  
 16828  		}
 16829  		fallthrough
 16830  	case CC_PIPE:
 16831  		{
 16832  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 16833  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16834  				return 1
 16835  			} else {
 16836  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16837  				return 2
 16838  			}
 16839  
 16840  		}
 16841  		fallthrough
 16842  	case CC_COMMA:
 16843  		{
 16844  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16845  			return 1
 16846  
 16847  		}
 16848  	case CC_AND:
 16849  		{
 16850  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16851  			return 1
 16852  
 16853  		}
 16854  	case CC_TILDA:
 16855  		{
 16856  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16857  			return 1
 16858  
 16859  		}
 16860  	case CC_QUOTE:
 16861  		{
 16862  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 16863  
 16864  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16865  				if c == delim {
 16866  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 16867  						i++
 16868  					} else {
 16869  						break
 16870  					}
 16871  				}
 16872  			}
 16873  			if c == '\'' {
 16874  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16875  				return i + 1
 16876  			} else if c != 0 {
 16877  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 16878  				return i + 1
 16879  			} else {
 16880  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16881  				return i
 16882  			}
 16883  
 16884  		}
 16885  		fallthrough
 16886  	case CC_DOT:
 16887  		{
 16888  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 16889  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16890  				return 1
 16891  			}
 16892  
 16893  		}
 16894  		fallthrough
 16895  	case CC_DIGIT:
 16896  		{
 16897  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16898  			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 {
 16899  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 16900  				}
 16901  				return i
 16902  			}
 16903  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 16904  			}
 16905  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 16906  				i++
 16907  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 16908  					i++
 16909  				}
 16910  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16911  			}
 16912  			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 ||
 16913  				(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) {
 16914  				i = i + 2
 16915  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 16916  					i++
 16917  				}
 16918  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16919  			}
 16920  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 16921  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16922  				i++
 16923  			}
 16924  			return i
 16925  
 16926  		}
 16927  	case CC_QUOTE2:
 16928  		{
 16929  			i = 1
 16930  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 16931  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16932  			}
 16933  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 16934  				if c == ']' {
 16935  					return TK_NAME
 16936  				}
 16937  				return TK_ERROR
 16938  			}()
 16939  			return i
 16940  
 16941  		}
 16942  	case CC_VARNUM:
 16943  		{
 16944  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16945  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 16946  			}
 16947  			return i
 16948  
 16949  		}
 16950  	case CC_DOLLAR:
 16951  		fallthrough
 16952  	case CC_VARALPHA:
 16953  		{
 16954  			var n int32 = 0
 16955  
 16956  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16957  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16958  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 16959  					n++
 16960  				} else if c == '(' && n > 0 {
 16961  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 16962  						i++
 16963  					}
 16964  					if c == ')' {
 16965  						i++
 16966  					} else {
 16967  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16968  					}
 16969  					break
 16970  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 16971  					i++
 16972  				} else {
 16973  					break
 16974  				}
 16975  			}
 16976  			if n == 0 {
 16977  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16978  			}
 16979  			return i
 16980  
 16981  		}
 16982  	case CC_KYWD:
 16983  		{
 16984  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 16985  			}
 16986  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 16987  				i++
 16988  				break
 16989  			}
 16990  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 16991  			return i
 16992  
 16993  		}
 16994  	case CC_X:
 16995  		{
 16996  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 16997  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16998  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 16999  				}
 17000  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17001  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17002  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17003  						i++
 17004  					}
 17005  				}
 17006  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17007  					i++
 17008  				}
 17009  				return i
 17010  			}
 17011  
 17012  		}
 17013  		fallthrough
 17014  	case CC_ID:
 17015  		{
 17016  			i = 1
 17017  			break
 17018  
 17019  		}
 17020  	default:
 17021  		{
 17022  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17023  			return 1
 17024  
 17025  		}
 17026  	}
 17027  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17028  		i++
 17029  	}
 17030  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17031  	return i
 17032  }
 17033  
 17034  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 17035  	bp := tls.Alloc(4)
 17036  	defer tls.Free(4)
 17037  
 17038  	var z uintptr
 17039  	var nZ sqlite3_int64
 17040  	var nSql sqlite3_int64
 17041  	var i int32
 17042  	var j int32
 17043  
 17044  	var n int32
 17045  	var k int32
 17046  
 17047  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 17048  	nZ = nSql
 17049  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 17050  	if z == uintptr(0) {
 17051  		return uintptr(0)
 17052  	}
 17053  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 17054  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 17055  		switch *(*int32)(unsafe.Pointer(bp)) {
 17056  		case TK_SPACE:
 17057  			{
 17058  				break
 17059  
 17060  			}
 17061  		case TK_ERROR:
 17062  			{
 17063  				sqlite3.Xsqlite3_free(tls, z)
 17064  				return uintptr(0)
 17065  
 17066  			}
 17067  		case TK_LITERAL:
 17068  			{
 17069  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17070  				break
 17071  
 17072  			}
 17073  		case TK_PUNCT:
 17074  			fallthrough
 17075  		case TK_NAME:
 17076  			{
 17077  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 17078  					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) ||
 17079  						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) {
 17080  					} else {
 17081  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17082  						break
 17083  					}
 17084  				}
 17085  				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 {
 17086  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(' ')
 17087  				}
 17088  				for k = 0; k < n; k++ {
 17089  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(sqlite3UpperToLower[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i+k))))])
 17090  				}
 17091  				break
 17092  
 17093  			}
 17094  		}
 17095  	}
 17096  	for j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 17097  		j--
 17098  	}
 17099  	if j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 17100  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(';')
 17101  	}
 17102  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17103  
 17104  	for i = 0; i < j; i = n {
 17105  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 17106  		var nParen int32
 17107  		if zIn == uintptr(0) {
 17108  			break
 17109  		}
 17110  		n = int32((int64(zIn)-int64(z))/1) + 3
 17111  		if n != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1))))])&0x46 != 0 {
 17112  			continue
 17113  		}
 17114  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 9)))])&0x46 != 0) {
 17115  			continue
 17116  		}
 17117  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 7)))])&0x46 != 0) {
 17118  			continue
 17119  		}
 17120  		nParen = 1
 17121  		k = 0
 17122  		for ; *(*int8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 17123  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 17124  				nParen++
 17125  			}
 17126  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 17127  				nParen--
 17128  				if nParen == 0 {
 17129  					break
 17130  				}
 17131  			}
 17132  		}
 17133  
 17134  		if k < 5 {
 17135  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 17136  			if z == uintptr(0) {
 17137  				return uintptr(0)
 17138  			}
 17139  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17140  		} else if k > 5 {
 17141  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17142  		}
 17143  		j = j - k + 5
 17144  		*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17145  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint64(5))
 17146  	}
 17147  	return z
 17148  }
 17149  
 17150  type Percentile1 = struct {
 17151  	FnAlloc uint32
 17152  	FnUsed  uint32
 17153  	FrPct   float64
 17154  	Fa      uintptr
 17155  }
 17156  
 17157  type Percentile = Percentile1
 17158  
 17159  func isInfinity(tls *libc.TLS, r float64) int32 {
 17160  	bp := tls.Alloc(16)
 17161  	defer tls.Free(16)
 17162  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 17163  
 17164  	libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 17165  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 17166  }
 17167  
 17168  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 17169  	a = a - b
 17170  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 17171  }
 17172  
 17173  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 17174  	var p uintptr
 17175  	var rPct float64
 17176  	var eType int32
 17177  	var y float64
 17178  
 17179  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17180  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17181  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 17182  		rPct < 0.0 || rPct > 100.0 {
 17183  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17184  			ts+5886, -1)
 17185  		return
 17186  	}
 17187  
 17188  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 17189  	if p == uintptr(0) {
 17190  		return
 17191  	}
 17192  
 17193  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 17194  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 17195  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 17196  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17197  			ts+5953, -1)
 17198  		return
 17199  	}
 17200  
 17201  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17202  	if eType == SQLITE_NULL {
 17203  		return
 17204  	}
 17205  
 17206  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 17207  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17208  			ts+6017, -1)
 17209  		return
 17210  	}
 17211  
 17212  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17213  	if isInfinity(tls, y) != 0 {
 17214  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 17215  		return
 17216  	}
 17217  
 17218  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 17219  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 17220  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 17221  		if a == uintptr(0) {
 17222  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17223  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17224  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 17225  			return
 17226  		}
 17227  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 17228  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 17229  	}
 17230  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 17231  }
 17232  
 17233  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 17234  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 17235  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 17236  	if a == b {
 17237  		return 0
 17238  	}
 17239  	if a < b {
 17240  		return -1
 17241  	}
 17242  	return +1
 17243  }
 17244  
 17245  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 17246  	var p uintptr
 17247  	var i1 uint32
 17248  	var i2 uint32
 17249  	var v1 float64
 17250  	var v2 float64
 17251  	var ix float64
 17252  	var vx float64
 17253  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 17254  	if p == uintptr(0) {
 17255  		return
 17256  	}
 17257  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 17258  		return
 17259  	}
 17260  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 17261  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 17262  			f func(*libc.TLS, uintptr, uintptr) int32
 17263  		}{doubleCmp})))
 17264  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 17265  		i1 = uint32(ix)
 17266  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 17267  			i2 = i1
 17268  		} else {
 17269  			i2 = i1 + uint32(1)
 17270  		}
 17271  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 17272  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 17273  		vx = v1 + (v2-v1)*(ix-float64(i1))
 17274  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 17275  	}
 17276  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17277  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17278  }
 17279  
 17280  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17281  	var rc int32 = SQLITE_OK
 17282  	_ = pApi
 17283  
 17284  	_ = pzErrMsg
 17285  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 17286  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17287  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17288  			f func(*libc.TLS, uintptr, int32, uintptr)
 17289  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 17290  	return rc
 17291  }
 17292  
 17293  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 17294  
 17295  type prefixes_vtab = prefixes_vtab1
 17296  
 17297  type prefixes_cursor1 = struct {
 17298  	Fbase        sqlite3_vtab_cursor
 17299  	FiRowid      sqlite3_int64
 17300  	FzStr        uintptr
 17301  	FnStr        int32
 17302  	F__ccgo_pad1 [4]byte
 17303  }
 17304  
 17305  type prefixes_cursor = prefixes_cursor1
 17306  
 17307  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17308  	var pNew uintptr
 17309  	var rc int32
 17310  
 17311  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17312  		ts+6098)
 17313  	if rc == SQLITE_OK {
 17314  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 17315  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17316  		if pNew == uintptr(0) {
 17317  			return SQLITE_NOMEM
 17318  		}
 17319  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})))
 17320  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 17321  	}
 17322  	return rc
 17323  }
 17324  
 17325  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17326  	var p uintptr = pVtab
 17327  	sqlite3.Xsqlite3_free(tls, p)
 17328  	return SQLITE_OK
 17329  }
 17330  
 17331  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17332  	var pCur uintptr
 17333  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 17334  	if pCur == uintptr(0) {
 17335  		return SQLITE_NOMEM
 17336  	}
 17337  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})))
 17338  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17339  	return SQLITE_OK
 17340  }
 17341  
 17342  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 17343  	var pCur uintptr = cur
 17344  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17345  	sqlite3.Xsqlite3_free(tls, pCur)
 17346  	return SQLITE_OK
 17347  }
 17348  
 17349  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 17350  	var pCur uintptr = cur
 17351  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 17352  	return SQLITE_OK
 17353  }
 17354  
 17355  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17356  	var pCur uintptr = cur
 17357  	switch i {
 17358  	case 0:
 17359  		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),
 17360  			uintptr(0))
 17361  		break
 17362  	default:
 17363  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 17364  		break
 17365  	}
 17366  	return SQLITE_OK
 17367  }
 17368  
 17369  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17370  	var pCur uintptr = cur
 17371  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 17372  	return SQLITE_OK
 17373  }
 17374  
 17375  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 17376  	var pCur uintptr = cur
 17377  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 17378  }
 17379  
 17380  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17381  	bp := tls.Alloc(8)
 17382  	defer tls.Free(8)
 17383  
 17384  	var pCur uintptr = pVtabCursor
 17385  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17386  	if argc > 0 {
 17387  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 17388  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 17389  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 17390  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 17391  			}
 17392  			return 0
 17393  		}()
 17394  	} else {
 17395  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 17396  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 17397  	}
 17398  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17399  	return SQLITE_OK
 17400  }
 17401  
 17402  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17403  	var i int32
 17404  	var p uintptr
 17405  
 17406  	i = 0
 17407  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 17408  __1:
 17409  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 17410  		goto __3
 17411  	}
 17412  	{
 17413  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 17414  			goto __2
 17415  		}
 17416  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 17417  			goto __2
 17418  		}
 17419  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 17420  			goto __2
 17421  		}
 17422  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 17423  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17424  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17425  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17426  		return SQLITE_OK
 17427  
 17428  	}
 17429  	goto __2
 17430  __2:
 17431  	i++
 17432  	p += 12
 17433  	goto __1
 17434  	goto __3
 17435  __3:
 17436  	;
 17437  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 17438  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 17439  	return SQLITE_OK
 17440  }
 17441  
 17442  var prefixesModule = sqlite3_module{
 17443  	FxConnect:    0,
 17444  	FxBestIndex:  0,
 17445  	FxDisconnect: 0,
 17446  	FxOpen:       0,
 17447  	FxClose:      0,
 17448  	FxFilter:     0,
 17449  	FxNext:       0,
 17450  	FxEof:        0,
 17451  	FxColumn:     0,
 17452  	FxRowid:      0,
 17453  }
 17454  
 17455  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 17456  	var nByte int32
 17457  	var nRet int32 = 0
 17458  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17459  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17460  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17461  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17462  	var i int32
 17463  
 17464  	nByte = func() int32 {
 17465  		if nL > nR {
 17466  			return nL
 17467  		}
 17468  		return nR
 17469  	}()
 17470  	for i = 0; i < nByte; i++ {
 17471  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 17472  			break
 17473  		}
 17474  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 17475  			nRet++
 17476  		}
 17477  	}
 17478  
 17479  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 17480  		nRet--
 17481  	}
 17482  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 17483  }
 17484  
 17485  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17486  	var rc int32 = SQLITE_OK
 17487  	_ = pApi
 17488  
 17489  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 17490  	if rc == SQLITE_OK {
 17491  		rc = sqlite3.Xsqlite3_create_function(tls,
 17492  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17493  				f func(*libc.TLS, uintptr, int32, uintptr)
 17494  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 17495  	}
 17496  	return rc
 17497  }
 17498  
 17499  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 17500  
 17501  type qpvtab_vtab = qpvtab_vtab1
 17502  
 17503  type qpvtab_cursor1 = struct {
 17504  	Fbase   sqlite3_vtab_cursor
 17505  	FiRowid sqlite3_int64
 17506  	FzData  uintptr
 17507  	FnData  int32
 17508  	Fflags  int32
 17509  }
 17510  
 17511  type qpvtab_cursor = qpvtab_cursor1
 17512  
 17513  var azColname = [13]uintptr{
 17514  	ts + 6185,
 17515  	ts + 6188,
 17516  	ts + 6191,
 17517  	ts + 6194,
 17518  	ts + 6197,
 17519  	ts + 6200,
 17520  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 17521  	ts + 6214,
 17522  	ts + 584,
 17523  }
 17524  
 17525  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17526  	var pNew uintptr
 17527  	var rc int32
 17528  
 17529  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17530  		ts+6220)
 17531  	if rc == SQLITE_OK {
 17532  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 17533  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17534  		if pNew == uintptr(0) {
 17535  			return SQLITE_NOMEM
 17536  		}
 17537  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})))
 17538  	}
 17539  	return rc
 17540  }
 17541  
 17542  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17543  	var p uintptr = pVtab
 17544  	sqlite3.Xsqlite3_free(tls, p)
 17545  	return SQLITE_OK
 17546  }
 17547  
 17548  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17549  	var pCur uintptr
 17550  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 17551  	if pCur == uintptr(0) {
 17552  		return SQLITE_NOMEM
 17553  	}
 17554  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})))
 17555  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17556  	return SQLITE_OK
 17557  }
 17558  
 17559  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 17560  	var pCur uintptr = cur
 17561  	sqlite3.Xsqlite3_free(tls, pCur)
 17562  	return SQLITE_OK
 17563  }
 17564  
 17565  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 17566  	var pCur uintptr = cur
 17567  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 17568  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 17569  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 17570  		if zEnd != 0 {
 17571  			zEnd++
 17572  		}
 17573  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 17574  	}
 17575  	return SQLITE_OK
 17576  }
 17577  
 17578  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17579  	bp := tls.Alloc(1)
 17580  	defer tls.Free(1)
 17581  
 17582  	var pCur uintptr = cur
 17583  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 17584  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 17585  		var zEnd uintptr
 17586  		var j int32
 17587  		j = QPVTAB_VN
 17588  		for 1 != 0 {
 17589  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 17590  				if j == QPVTAB_RHS {
 17591  					return '\n'
 17592  				}
 17593  				return ','
 17594  			}())
 17595  			if j == i || zEnd == uintptr(0) {
 17596  				break
 17597  			}
 17598  			z = zEnd + uintptr(1)
 17599  			j++
 17600  		}
 17601  		if zEnd == z {
 17602  			sqlite3.Xsqlite3_result_null(tls, ctx)
 17603  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 17604  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 17605  		} else {
 17606  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 17607  		}
 17608  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 17609  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 17610  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 17611  		} else {
 17612  			*(*int8)(unsafe.Pointer(bp)) = int8('a' + i - QPVTAB_A)
 17613  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 17614  		}
 17615  	} else if i == QPVTAB_FLAGS {
 17616  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 17617  	}
 17618  	return SQLITE_OK
 17619  }
 17620  
 17621  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17622  	var pCur uintptr = cur
 17623  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 17624  	return SQLITE_OK
 17625  }
 17626  
 17627  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 17628  	var pCur uintptr = cur
 17629  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 17630  }
 17631  
 17632  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17633  	var pCur uintptr = pVtabCursor
 17634  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17635  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 17636  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 17637  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 17638  	return SQLITE_OK
 17639  }
 17640  
 17641  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 17642  	bp := tls.Alloc(25)
 17643  	defer tls.Free(25)
 17644  
 17645  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 17646  	case SQLITE_NULL:
 17647  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 17648  		break
 17649  	case SQLITE_INTEGER:
 17650  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 17651  		break
 17652  	case SQLITE_FLOAT:
 17653  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 17654  		break
 17655  	case SQLITE_TEXT:
 17656  		{
 17657  			var i int32
 17658  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 17659  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 17660  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17661  			for i = 0; i < n; i++ {
 17662  				*(*int8)(unsafe.Pointer(bp + 24)) = *(*int8)(unsafe.Pointer(a + uintptr(i)))
 17663  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\n' {
 17664  					*(*int8)(unsafe.Pointer(bp + 24)) = int8(' ')
 17665  				}
 17666  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 17667  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\'' {
 17668  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 17669  				}
 17670  			}
 17671  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17672  			break
 17673  
 17674  		}
 17675  	case SQLITE_BLOB:
 17676  		{
 17677  			var i int32
 17678  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 17679  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 17680  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 17681  			for i = 0; i < n; i++ {
 17682  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 17683  			}
 17684  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17685  			break
 17686  
 17687  		}
 17688  	}
 17689  }
 17690  
 17691  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17692  	bp := tls.Alloc(120)
 17693  	defer tls.Free(120)
 17694  
 17695  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 17696  	var i int32
 17697  	var k int32 = 0
 17698  	var rc int32
 17699  	_ = rc
 17700  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 17701  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 17702  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 17703  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 17704  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 17705  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 17706  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 17707  
 17708  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 17709  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 17710  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 17711  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 17712  				}
 17713  			}
 17714  		}
 17715  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 17716  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 17717  			iCol = QPVTAB_NONE
 17718  		}
 17719  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 17720  			libc.VaList(bp+8, i,
 17721  				azColname[iCol],
 17722  				op,
 17723  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 17724  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 17725  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 17726  
 17727  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 17728  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 17729  		}
 17730  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 17731  	}
 17732  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 17733  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 17734  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 17735  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 17736  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 17737  			iCol = QPVTAB_NONE
 17738  		}
 17739  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 17740  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 17741  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 17742  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17743  			}
 17744  		}
 17745  	}
 17746  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 17747  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 17748  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 17749  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 17750  			func() uintptr {
 17751  				if iCol >= 0 {
 17752  					return azColname[iCol]
 17753  				}
 17754  				return ts + 6427
 17755  			}(),
 17756  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 17757  	}
 17758  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 17759  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 17760  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 17761  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 17762  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17763  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17764  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 17765  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 17766  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 17767  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 17768  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 17769  	return SQLITE_OK
 17770  }
 17771  
 17772  var qpvtabModule = sqlite3_module{
 17773  	FxConnect:    0,
 17774  	FxBestIndex:  0,
 17775  	FxDisconnect: 0,
 17776  	FxOpen:       0,
 17777  	FxClose:      0,
 17778  	FxFilter:     0,
 17779  	FxNext:       0,
 17780  	FxEof:        0,
 17781  	FxColumn:     0,
 17782  	FxRowid:      0,
 17783  }
 17784  
 17785  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17786  	var rc int32 = SQLITE_OK
 17787  	_ = pApi
 17788  
 17789  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 17790  	return rc
 17791  }
 17792  
 17793  type ReStateNumber = uint16
 17794  
 17795  type ReStateSet1 = struct {
 17796  	FnState      uint32
 17797  	F__ccgo_pad1 [4]byte
 17798  	FaState      uintptr
 17799  }
 17800  
 17801  type ReStateSet = ReStateSet1
 17802  
 17803  type ReInput1 = struct {
 17804  	Fz  uintptr
 17805  	Fi  int32
 17806  	Fmx int32
 17807  }
 17808  
 17809  type ReInput = ReInput1
 17810  
 17811  type ReCompiled1 = struct {
 17812  	FsIn       ReInput
 17813  	FzErr      uintptr
 17814  	FaOp       uintptr
 17815  	FaArg      uintptr
 17816  	FxNextChar uintptr
 17817  	FzInit     [12]uint8
 17818  	FnInit     int32
 17819  	FnState    uint32
 17820  	FnAlloc    uint32
 17821  }
 17822  
 17823  type ReCompiled = ReCompiled1
 17824  
 17825  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 17826  	var i uint32
 17827  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 17828  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 17829  			return
 17830  		}
 17831  	}
 17832  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 17833  }
 17834  
 17835  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 17836  	var c uint32
 17837  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 17838  		return uint32(0)
 17839  	}
 17840  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 17841  	if c >= uint32(0x80) {
 17842  		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 {
 17843  			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)
 17844  			if c < uint32(0x80) {
 17845  				c = uint32(0xfffd)
 17846  			}
 17847  		} 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 &&
 17848  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 17849  			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)
 17850  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 17851  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 17852  				c = uint32(0xfffd)
 17853  			}
 17854  		} 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 &&
 17855  			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 {
 17856  			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) |
 17857  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 17858  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 17859  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 17860  				c = uint32(0xfffd)
 17861  			}
 17862  		} else {
 17863  			c = uint32(0xfffd)
 17864  		}
 17865  	}
 17866  	return c
 17867  }
 17868  
 17869  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 17870  	var c uint32 = re_next_char(tls, p)
 17871  	if c >= uint32('A') && c <= uint32('Z') {
 17872  		c = c + uint32('a'-'A')
 17873  	}
 17874  	return c
 17875  }
 17876  
 17877  func re_word_char(tls *libc.TLS, c int32) int32 {
 17878  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 17879  		c >= 'A' && c <= 'Z' || c == '_')
 17880  }
 17881  
 17882  func re_digit_char(tls *libc.TLS, c int32) int32 {
 17883  	return libc.Bool32(c >= '0' && c <= '9')
 17884  }
 17885  
 17886  func re_space_char(tls *libc.TLS, c int32) int32 {
 17887  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 17888  }
 17889  
 17890  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 17891  	bp := tls.Alloc(248)
 17892  	defer tls.Free(248)
 17893  
 17894  	var pThis uintptr
 17895  	var pNext uintptr
 17896  
 17897  	var pToFree uintptr
 17898  	var i uint32
 17899  	var iSwap uint32
 17900  	var c int32
 17901  	var cPrev int32
 17902  	var rc int32
 17903  
 17904  	var x uint8
 17905  	var j int32
 17906  	var n int32
 17907  	var hit int32
 17908  	var x1 int32
 17909  	i = uint32(0)
 17910  	iSwap = uint32(0)
 17911  	c = RE_EOF + 1
 17912  	cPrev = 0
 17913  	rc = 0
 17914  
 17915  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 17916  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 17917  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 17918  		if nIn >= 0 {
 17919  			return nIn
 17920  		}
 17921  		return int32(libc.Xstrlen(tls, zIn))
 17922  	}()
 17923  
 17924  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 17925  		goto __1
 17926  	}
 17927  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 17928  __2:
 17929  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 17930  		(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)) {
 17931  		goto __3
 17932  	}
 17933  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 17934  	goto __2
 17935  __3:
 17936  	;
 17937  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 17938  		goto __4
 17939  	}
 17940  	return 0
 17941  __4:
 17942  	;
 17943  __1:
 17944  	;
 17945  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 17946  		goto __5
 17947  	}
 17948  	pToFree = uintptr(0)
 17949  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 17950  	goto __6
 17951  __5:
 17952  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 17953  	if !(pToFree == uintptr(0)) {
 17954  		goto __7
 17955  	}
 17956  	return -1
 17957  __7:
 17958  	;
 17959  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 17960  __6:
 17961  	;
 17962  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 17963  	pNext = bp + 1*16
 17964  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 17965  	re_add_state(tls, pNext, 0)
 17966  __8:
 17967  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 17968  		goto __9
 17969  	}
 17970  	cPrev = c
 17971  	c = int32((*struct {
 17972  		f func(*libc.TLS, uintptr) uint32
 17973  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 17974  	pThis = pNext
 17975  	pNext = bp + uintptr(iSwap)*16
 17976  	iSwap = uint32(1) - iSwap
 17977  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 17978  	i = uint32(0)
 17979  __10:
 17980  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 17981  		goto __12
 17982  	}
 17983  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 17984  	switch int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 17985  	case RE_OP_MATCH:
 17986  		goto __14
 17987  	case RE_OP_ANY:
 17988  		goto __15
 17989  	case RE_OP_WORD:
 17990  		goto __16
 17991  	case RE_OP_NOTWORD:
 17992  		goto __17
 17993  	case RE_OP_DIGIT:
 17994  		goto __18
 17995  	case RE_OP_NOTDIGIT:
 17996  		goto __19
 17997  	case RE_OP_SPACE:
 17998  		goto __20
 17999  	case RE_OP_NOTSPACE:
 18000  		goto __21
 18001  	case RE_OP_BOUNDARY:
 18002  		goto __22
 18003  	case RE_OP_ANYSTAR:
 18004  		goto __23
 18005  	case RE_OP_FORK:
 18006  		goto __24
 18007  	case RE_OP_GOTO:
 18008  		goto __25
 18009  	case RE_OP_ACCEPT:
 18010  		goto __26
 18011  	case RE_OP_CC_EXC:
 18012  		goto __27
 18013  	case RE_OP_CC_INC:
 18014  		goto __28
 18015  	}
 18016  	goto __13
 18017  __14:
 18018  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 18019  		goto __29
 18020  	}
 18021  	re_add_state(tls, pNext, x1+1)
 18022  __29:
 18023  	;
 18024  	goto __13
 18025  
 18026  __15:
 18027  	if !(c != 0) {
 18028  		goto __30
 18029  	}
 18030  	re_add_state(tls, pNext, x1+1)
 18031  __30:
 18032  	;
 18033  	goto __13
 18034  
 18035  __16:
 18036  	if !(re_word_char(tls, c) != 0) {
 18037  		goto __31
 18038  	}
 18039  	re_add_state(tls, pNext, x1+1)
 18040  __31:
 18041  	;
 18042  	goto __13
 18043  
 18044  __17:
 18045  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 18046  		goto __32
 18047  	}
 18048  	re_add_state(tls, pNext, x1+1)
 18049  __32:
 18050  	;
 18051  	goto __13
 18052  
 18053  __18:
 18054  	if !(re_digit_char(tls, c) != 0) {
 18055  		goto __33
 18056  	}
 18057  	re_add_state(tls, pNext, x1+1)
 18058  __33:
 18059  	;
 18060  	goto __13
 18061  
 18062  __19:
 18063  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 18064  		goto __34
 18065  	}
 18066  	re_add_state(tls, pNext, x1+1)
 18067  __34:
 18068  	;
 18069  	goto __13
 18070  
 18071  __20:
 18072  	if !(re_space_char(tls, c) != 0) {
 18073  		goto __35
 18074  	}
 18075  	re_add_state(tls, pNext, x1+1)
 18076  __35:
 18077  	;
 18078  	goto __13
 18079  
 18080  __21:
 18081  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 18082  		goto __36
 18083  	}
 18084  	re_add_state(tls, pNext, x1+1)
 18085  __36:
 18086  	;
 18087  	goto __13
 18088  
 18089  __22:
 18090  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 18091  		goto __37
 18092  	}
 18093  	re_add_state(tls, pThis, x1+1)
 18094  __37:
 18095  	;
 18096  	goto __13
 18097  
 18098  __23:
 18099  	re_add_state(tls, pNext, x1)
 18100  	re_add_state(tls, pThis, x1+1)
 18101  	goto __13
 18102  
 18103  __24:
 18104  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18105  	re_add_state(tls, pThis, x1+1)
 18106  	goto __13
 18107  
 18108  __25:
 18109  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18110  	goto __13
 18111  
 18112  __26:
 18113  	rc = 1
 18114  	goto re_match_end
 18115  
 18116  __27:
 18117  	if !(c == 0) {
 18118  		goto __38
 18119  	}
 18120  	goto __13
 18121  __38:
 18122  	;
 18123  	goto re_op_cc_inc
 18124  
 18125  __28:
 18126  re_op_cc_inc:
 18127  	j = 1
 18128  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 18129  	hit = 0
 18130  	j = 1
 18131  __39:
 18132  	if !(j > 0 && j < n) {
 18133  		goto __41
 18134  	}
 18135  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 18136  		goto __42
 18137  	}
 18138  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 18139  		goto __44
 18140  	}
 18141  	hit = 1
 18142  	j = -1
 18143  __44:
 18144  	;
 18145  	goto __43
 18146  __42:
 18147  	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) {
 18148  		goto __45
 18149  	}
 18150  	hit = 1
 18151  	j = -1
 18152  	goto __46
 18153  __45:
 18154  	j++
 18155  __46:
 18156  	;
 18157  __43:
 18158  	;
 18159  	goto __40
 18160  __40:
 18161  	j++
 18162  	goto __39
 18163  	goto __41
 18164  __41:
 18165  	;
 18166  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 18167  		goto __47
 18168  	}
 18169  	hit = libc.BoolInt32(!(hit != 0))
 18170  __47:
 18171  	;
 18172  	if !(hit != 0) {
 18173  		goto __48
 18174  	}
 18175  	re_add_state(tls, pNext, x1+n)
 18176  __48:
 18177  	;
 18178  	goto __13
 18179  
 18180  __13:
 18181  	;
 18182  	goto __11
 18183  __11:
 18184  	i++
 18185  	goto __10
 18186  	goto __12
 18187  __12:
 18188  	;
 18189  	goto __8
 18190  __9:
 18191  	;
 18192  	i = uint32(0)
 18193  __49:
 18194  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 18195  		goto __51
 18196  	}
 18197  	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) {
 18198  		goto __52
 18199  	}
 18200  	rc = 1
 18201  	goto __51
 18202  __52:
 18203  	;
 18204  	goto __50
 18205  __50:
 18206  	i++
 18207  	goto __49
 18208  	goto __51
 18209  __51:
 18210  	;
 18211  re_match_end:
 18212  	sqlite3.Xsqlite3_free(tls, pToFree)
 18213  	return rc
 18214  }
 18215  
 18216  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 18217  	var aOp uintptr
 18218  	var aArg uintptr
 18219  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(int8(0))))
 18220  	if aOp == uintptr(0) {
 18221  		return 1
 18222  	}
 18223  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 18224  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 18225  	if aArg == uintptr(0) {
 18226  		return 1
 18227  	}
 18228  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 18229  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 18230  	return 0
 18231  }
 18232  
 18233  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 18234  	var i int32
 18235  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 18236  		return 0
 18237  	}
 18238  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 18239  		*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 18240  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 18241  	}
 18242  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 18243  	*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = int8(op)
 18244  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 18245  	return iBefore
 18246  }
 18247  
 18248  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 18249  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 18250  }
 18251  
 18252  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 18253  	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 {
 18254  		return
 18255  	}
 18256  	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))))
 18257  	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))))
 18258  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 18259  }
 18260  
 18261  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 18262  	if c >= '0' && c <= '9' {
 18263  		c = c - '0'
 18264  	} else if c >= 'a' && c <= 'f' {
 18265  		c = c - ('a' - 10)
 18266  	} else if c >= 'A' && c <= 'F' {
 18267  		c = c - ('A' - 10)
 18268  	} else {
 18269  		return 0
 18270  	}
 18271  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 18272  	return 1
 18273  }
 18274  
 18275  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 18276  	bp := tls.Alloc(4)
 18277  	defer tls.Free(4)
 18278  
 18279  	var i int32
 18280  	*(*int32)(unsafe.Pointer(bp)) = 0
 18281  	var c int8
 18282  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18283  		return uint32(0)
 18284  	}
 18285  	c = int8(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi))))
 18286  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18287  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18288  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18289  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 18290  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 18291  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 18292  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 18293  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18294  		}
 18295  	}
 18296  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18297  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18298  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18299  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 18300  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18301  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18302  		}
 18303  	}
 18304  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 18305  	}
 18306  	if zEsc[i] != 0 {
 18307  		if i < 6 {
 18308  			c = zTrans[i]
 18309  		}
 18310  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18311  	} else {
 18312  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 18313  	}
 18314  	return uint32(c)
 18315  }
 18316  
 18317  var zEsc = *(*[21]int8)(unsafe.Pointer(ts + 6559))
 18318  var zTrans = *(*[7]int8)(unsafe.Pointer(ts + 6580))
 18319  
 18320  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 18321  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18322  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18323  	}
 18324  	return uint8(0)
 18325  }
 18326  
 18327  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 18328  	var zErr uintptr
 18329  	var iStart int32
 18330  	var iEnd int32
 18331  	var iGoto int32
 18332  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18333  	zErr = re_subcompile_string(tls, p)
 18334  	if zErr != 0 {
 18335  		return zErr
 18336  	}
 18337  	for int32(rePeek(tls, p)) == '|' {
 18338  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18339  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 18340  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 18341  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18342  		zErr = re_subcompile_string(tls, p)
 18343  		if zErr != 0 {
 18344  			return zErr
 18345  		}
 18346  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 18347  	}
 18348  	return uintptr(0)
 18349  }
 18350  
 18351  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 18352  	var iPrev int32 = -1
 18353  	var iStart int32
 18354  	var c uint32
 18355  	var zErr uintptr
 18356  	for libc.AssignUint32(&c, (*struct {
 18357  		f func(*libc.TLS, uintptr) uint32
 18358  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18359  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18360  		switch c {
 18361  		case uint32('|'):
 18362  			fallthrough
 18363  		case uint32('$'):
 18364  			fallthrough
 18365  		case uint32(')'):
 18366  			{
 18367  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 18368  				return uintptr(0)
 18369  
 18370  			}
 18371  		case uint32('('):
 18372  			{
 18373  				zErr = re_subcompile_re(tls, p)
 18374  				if zErr != 0 {
 18375  					return zErr
 18376  				}
 18377  				if int32(rePeek(tls, p)) != ')' {
 18378  					return ts + 6587
 18379  				}
 18380  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18381  				break
 18382  
 18383  			}
 18384  		case uint32('.'):
 18385  			{
 18386  				if int32(rePeek(tls, p)) == '*' {
 18387  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 18388  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18389  				} else {
 18390  					re_append(tls, p, RE_OP_ANY, 0)
 18391  				}
 18392  				break
 18393  
 18394  			}
 18395  		case uint32('*'):
 18396  			{
 18397  				if iPrev < 0 {
 18398  					return ts + 6601
 18399  				}
 18400  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18401  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 18402  				break
 18403  
 18404  			}
 18405  		case uint32('+'):
 18406  			{
 18407  				if iPrev < 0 {
 18408  					return ts + 6621
 18409  				}
 18410  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 18411  				break
 18412  
 18413  			}
 18414  		case uint32('?'):
 18415  			{
 18416  				if iPrev < 0 {
 18417  					return ts + 6641
 18418  				}
 18419  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18420  				break
 18421  
 18422  			}
 18423  		case uint32('{'):
 18424  			{
 18425  				var m int32 = 0
 18426  				var n int32 = 0
 18427  				var sz int32
 18428  				var j int32
 18429  				if iPrev < 0 {
 18430  					return ts + 6661
 18431  				}
 18432  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18433  					m = int32(uint32(m*10) + c - uint32('0'))
 18434  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18435  				}
 18436  				n = m
 18437  				if c == uint32(',') {
 18438  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18439  					n = 0
 18440  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18441  						n = int32(uint32(n*10) + c - uint32('0'))
 18442  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18443  					}
 18444  				}
 18445  				if c != uint32('}') {
 18446  					return ts + 6685
 18447  				}
 18448  				if n > 0 && n < m {
 18449  					return ts + 6699
 18450  				}
 18451  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18452  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 18453  				if m == 0 {
 18454  					if n == 0 {
 18455  						return ts + 6724
 18456  					}
 18457  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 18458  					n--
 18459  				} else {
 18460  					for j = 1; j < m; j++ {
 18461  						re_copy(tls, p, iPrev, sz)
 18462  					}
 18463  				}
 18464  				for j = m; j < n; j++ {
 18465  					re_append(tls, p, RE_OP_FORK, sz+1)
 18466  					re_copy(tls, p, iPrev, sz)
 18467  				}
 18468  				if n == 0 && m > 0 {
 18469  					re_append(tls, p, RE_OP_FORK, -sz)
 18470  				}
 18471  				break
 18472  
 18473  			}
 18474  		case uint32('['):
 18475  			{
 18476  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18477  				if int32(rePeek(tls, p)) == '^' {
 18478  					re_append(tls, p, RE_OP_CC_EXC, 0)
 18479  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18480  				} else {
 18481  					re_append(tls, p, RE_OP_CC_INC, 0)
 18482  				}
 18483  				for libc.AssignUint32(&c, (*struct {
 18484  					f func(*libc.TLS, uintptr) uint32
 18485  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18486  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 18487  						return ts + 6757
 18488  					}
 18489  					if c == uint32('\\') {
 18490  						c = re_esc_char(tls, p)
 18491  					}
 18492  					if int32(rePeek(tls, p)) == '-' {
 18493  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18494  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18495  						c = (*struct {
 18496  							f func(*libc.TLS, uintptr) uint32
 18497  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 18498  						if c == uint32('\\') {
 18499  							c = re_esc_char(tls, p)
 18500  						}
 18501  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18502  					} else {
 18503  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 18504  					}
 18505  					if int32(rePeek(tls, p)) == ']' {
 18506  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18507  						break
 18508  					}
 18509  				}
 18510  				if c == uint32(0) {
 18511  					return ts + 6795
 18512  				}
 18513  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 18514  				break
 18515  
 18516  			}
 18517  		case uint32('\\'):
 18518  			{
 18519  				var specialOp int32 = 0
 18520  				switch int32(rePeek(tls, p)) {
 18521  				case 'b':
 18522  					specialOp = RE_OP_BOUNDARY
 18523  					break
 18524  				case 'd':
 18525  					specialOp = RE_OP_DIGIT
 18526  					break
 18527  				case 'D':
 18528  					specialOp = RE_OP_NOTDIGIT
 18529  					break
 18530  				case 's':
 18531  					specialOp = RE_OP_SPACE
 18532  					break
 18533  				case 'S':
 18534  					specialOp = RE_OP_NOTSPACE
 18535  					break
 18536  				case 'w':
 18537  					specialOp = RE_OP_WORD
 18538  					break
 18539  				case 'W':
 18540  					specialOp = RE_OP_NOTWORD
 18541  					break
 18542  				}
 18543  				if specialOp != 0 {
 18544  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18545  					re_append(tls, p, specialOp, 0)
 18546  				} else {
 18547  					c = re_esc_char(tls, p)
 18548  					re_append(tls, p, RE_OP_MATCH, int32(c))
 18549  				}
 18550  				break
 18551  
 18552  			}
 18553  		default:
 18554  			{
 18555  				re_append(tls, p, RE_OP_MATCH, int32(c))
 18556  				break
 18557  
 18558  			}
 18559  		}
 18560  		iPrev = iStart
 18561  	}
 18562  	return uintptr(0)
 18563  }
 18564  
 18565  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 18566  	if pRe != 0 {
 18567  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 18568  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 18569  		sqlite3.Xsqlite3_free(tls, pRe)
 18570  	}
 18571  }
 18572  
 18573  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 18574  	var pRe uintptr
 18575  	var zErr uintptr
 18576  	var i int32
 18577  	var j int32
 18578  
 18579  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 18580  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 18581  	if pRe == uintptr(0) {
 18582  		return ts + 2069
 18583  	}
 18584  	libc.Xmemset(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})))
 18585  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 18586  		if noCase != 0 {
 18587  			return *(*uintptr)(unsafe.Pointer(&struct {
 18588  				f func(*libc.TLS, uintptr) uint32
 18589  			}{re_next_char_nocase}))
 18590  		}
 18591  		return *(*uintptr)(unsafe.Pointer(&struct {
 18592  			f func(*libc.TLS, uintptr) uint32
 18593  		}{re_next_char}))
 18594  	}()
 18595  	if re_resize(tls, pRe, 30) != 0 {
 18596  		sqlite3re_free(tls, pRe)
 18597  		return ts + 2069
 18598  	}
 18599  	if int32(*(*int8)(unsafe.Pointer(zIn))) == '^' {
 18600  		zIn++
 18601  	} else {
 18602  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 18603  	}
 18604  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 18605  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 18606  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 18607  	zErr = re_subcompile_re(tls, pRe)
 18608  	if zErr != 0 {
 18609  		sqlite3re_free(tls, pRe)
 18610  		return zErr
 18611  	}
 18612  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 18613  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 18614  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 18615  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 18616  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 18617  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 18618  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 18619  	} else {
 18620  		sqlite3re_free(tls, pRe)
 18621  		return ts + 6808
 18622  	}
 18623  
 18624  	if int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 18625  		j = 0
 18626  		i = 1
 18627  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 18628  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 18629  			if x <= uint32(127) {
 18630  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 18631  			} else if x <= uint32(0xfff) {
 18632  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 18633  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 18634  			} else if x <= uint32(0xffff) {
 18635  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 18636  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 18637  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 18638  			} else {
 18639  				break
 18640  			}
 18641  		}
 18642  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 18643  			j--
 18644  		}
 18645  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 18646  	}
 18647  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 18648  }
 18649  
 18650  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 18651  	bp := tls.Alloc(8)
 18652  	defer tls.Free(8)
 18653  
 18654  	var zPattern uintptr
 18655  	var zStr uintptr
 18656  	var zErr uintptr
 18657  	var setAux int32 = 0
 18658  
 18659  	_ = argc
 18660  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 18661  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 18662  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18663  		if zPattern == uintptr(0) {
 18664  			return
 18665  		}
 18666  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 18667  		if zErr != 0 {
 18668  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 18669  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 18670  			return
 18671  		}
 18672  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 18673  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 18674  			return
 18675  		}
 18676  		setAux = 1
 18677  	}
 18678  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 18679  	if zStr != uintptr(0) {
 18680  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 18681  	}
 18682  	if setAux != 0 {
 18683  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 18684  	}
 18685  }
 18686  
 18687  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18688  	var rc int32 = SQLITE_OK
 18689  	_ = pApi
 18690  
 18691  	_ = pzErrMsg
 18692  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 18693  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 18694  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18695  			f func(*libc.TLS, uintptr, int32, uintptr)
 18696  		}{re_sql_func})), uintptr(0), uintptr(0))
 18697  	if rc == SQLITE_OK {
 18698  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 18699  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 18700  			db, *(*uintptr)(unsafe.Pointer(&struct {
 18701  				f func(*libc.TLS, uintptr, int32, uintptr)
 18702  			}{re_sql_func})), uintptr(0), uintptr(0))
 18703  	}
 18704  	return rc
 18705  }
 18706  
 18707  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 18708  	var v sqlite3_int64
 18709  	var ptr uintptr
 18710  
 18711  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18712  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 18713  	if ptr != 0 {
 18714  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 18715  	}
 18716  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 18717  }
 18718  
 18719  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18720  	var rc int32 = SQLITE_OK
 18721  	_ = pApi
 18722  
 18723  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 18724  		*(*uintptr)(unsafe.Pointer(&struct {
 18725  			f func(*libc.TLS, uintptr, int32, uintptr)
 18726  		}{rememberFunc})), uintptr(0), uintptr(0))
 18727  	return rc
 18728  }
 18729  
 18730  type series_cursor1 = struct {
 18731  	Fbase        sqlite3_vtab_cursor
 18732  	FisDesc      int32
 18733  	F__ccgo_pad1 [4]byte
 18734  	FiRowid      sqlite3_int64
 18735  	FiValue      sqlite3_int64
 18736  	FmnValue     sqlite3_int64
 18737  	FmxValue     sqlite3_int64
 18738  	FiStep       sqlite3_int64
 18739  }
 18740  
 18741  type series_cursor = series_cursor1
 18742  
 18743  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 18744  	var pNew uintptr
 18745  	var rc int32
 18746  
 18747  	_ = pUnused
 18748  	_ = argcUnused
 18749  	_ = argvUnused
 18750  	_ = pzErrUnused
 18751  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18752  		ts+6855)
 18753  	if rc == SQLITE_OK {
 18754  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 18755  		if pNew == uintptr(0) {
 18756  			return SQLITE_NOMEM
 18757  		}
 18758  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 18759  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 18760  	}
 18761  	return rc
 18762  }
 18763  
 18764  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18765  	sqlite3.Xsqlite3_free(tls, pVtab)
 18766  	return SQLITE_OK
 18767  }
 18768  
 18769  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 18770  	var pCur uintptr
 18771  	_ = pUnused
 18772  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 18773  	if pCur == uintptr(0) {
 18774  		return SQLITE_NOMEM
 18775  	}
 18776  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})))
 18777  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18778  	return SQLITE_OK
 18779  }
 18780  
 18781  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 18782  	sqlite3.Xsqlite3_free(tls, cur)
 18783  	return SQLITE_OK
 18784  }
 18785  
 18786  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 18787  	var pCur uintptr = cur
 18788  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 18789  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18790  	} else {
 18791  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18792  	}
 18793  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 18794  	return SQLITE_OK
 18795  }
 18796  
 18797  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18798  	var pCur uintptr = cur
 18799  	var x sqlite3_int64 = int64(0)
 18800  	switch i {
 18801  	case SERIES_COLUMN_START:
 18802  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 18803  		break
 18804  	case SERIES_COLUMN_STOP:
 18805  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 18806  		break
 18807  	case SERIES_COLUMN_STEP:
 18808  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18809  		break
 18810  	default:
 18811  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 18812  		break
 18813  	}
 18814  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 18815  	return SQLITE_OK
 18816  }
 18817  
 18818  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18819  	var pCur uintptr = cur
 18820  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 18821  	return SQLITE_OK
 18822  }
 18823  
 18824  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 18825  	var pCur uintptr = cur
 18826  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 18827  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 18828  	} else {
 18829  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 18830  	}
 18831  	return int32(0)
 18832  }
 18833  
 18834  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 18835  	var pCur uintptr = pVtabCursor
 18836  	var i int32 = 0
 18837  	_ = idxStrUnused
 18838  	if idxNum&1 != 0 {
 18839  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18840  	} else {
 18841  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 18842  	}
 18843  	if idxNum&2 != 0 {
 18844  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18845  	} else {
 18846  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 18847  	}
 18848  	if idxNum&4 != 0 {
 18849  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18850  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 18851  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 18852  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 18853  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18854  			if idxNum&16 == 0 {
 18855  				idxNum = idxNum | 8
 18856  			}
 18857  		}
 18858  	} else {
 18859  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 18860  	}
 18861  	for i = 0; i < argc; i++ {
 18862  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 18863  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 18864  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 18865  			break
 18866  		}
 18867  	}
 18868  	if idxNum&8 != 0 {
 18869  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 18870  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 18871  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 18872  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18873  		}
 18874  	} else {
 18875  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 18876  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 18877  	}
 18878  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 18879  	return SQLITE_OK
 18880  }
 18881  
 18882  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 18883  	bp := tls.Alloc(12)
 18884  	defer tls.Free(12)
 18885  
 18886  	var i int32
 18887  	var j int32
 18888  	var idxNum int32 = 0
 18889  	var bStartSeen int32 = 0
 18890  	var unusableMask int32 = 0
 18891  	var nArg int32 = 0
 18892  
 18893  	var pConstraint uintptr
 18894  
 18895  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 18896  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 18897  	i = 0
 18898  __1:
 18899  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 18900  		goto __3
 18901  	}
 18902  	{
 18903  		var iCol int32
 18904  		var iMask int32
 18905  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 18906  			goto __2
 18907  		}
 18908  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 18909  
 18910  		iMask = int32(1) << iCol
 18911  		if iCol == 0 {
 18912  			bStartSeen = 1
 18913  		}
 18914  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 18915  			unusableMask = unusableMask | iMask
 18916  			goto __2
 18917  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 18918  			idxNum = idxNum | iMask
 18919  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 18920  		}
 18921  
 18922  	}
 18923  	goto __2
 18924  __2:
 18925  	i++
 18926  	pConstraint += 12
 18927  	goto __1
 18928  	goto __3
 18929  __3:
 18930  	;
 18931  	for i = 0; i < 3; i++ {
 18932  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 18933  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 18934  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 18935  		}
 18936  	}
 18937  
 18938  	if !(bStartSeen != 0) {
 18939  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 18940  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 18941  			ts+6914, 0)
 18942  		return SQLITE_ERROR
 18943  	}
 18944  	if unusableMask & ^idxNum != 0 {
 18945  		return SQLITE_CONSTRAINT
 18946  	}
 18947  	if idxNum&3 == 3 {
 18948  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 18949  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 18950  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 18951  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 18952  				idxNum = idxNum | 8
 18953  			} else {
 18954  				idxNum = idxNum | 16
 18955  			}
 18956  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18957  		}
 18958  	} else {
 18959  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 18960  	}
 18961  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 18962  	return SQLITE_OK
 18963  }
 18964  
 18965  var seriesModule = sqlite3_module{
 18966  	FxConnect:    0,
 18967  	FxBestIndex:  0,
 18968  	FxDisconnect: 0,
 18969  	FxOpen:       0,
 18970  	FxClose:      0,
 18971  	FxFilter:     0,
 18972  	FxNext:       0,
 18973  	FxEof:        0,
 18974  	FxColumn:     0,
 18975  	FxRowid:      0,
 18976  }
 18977  
 18978  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18979  	var rc int32 = SQLITE_OK
 18980  	_ = pApi
 18981  
 18982  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 18983  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 18984  			ts+6972, 0)
 18985  		return SQLITE_ERROR
 18986  	}
 18987  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 18988  	return rc
 18989  }
 18990  
 18991  type u16 = uint16
 18992  
 18993  var midClass = [128]uint8{
 18994  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18995  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18996  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18997  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18998  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 18999  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19000  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19001  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19002  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19003  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19004  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19005  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19006  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19007  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19008  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19009  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19010  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19011  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19012  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19013  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19014  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19015  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19016  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19017  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19018  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19019  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19020  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19021  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19022  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19023  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 19024  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19025  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19026  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19027  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19028  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19029  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19030  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19031  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19032  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19033  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19034  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19035  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19036  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19037  }
 19038  
 19039  var initClass = [128]uint8{
 19040  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19041  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19042  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19043  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19044  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19045  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19046  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19047  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19048  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19049  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19050  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19051  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19052  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19053  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19054  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19055  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19056  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19057  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19058  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19059  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19060  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19061  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19062  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19063  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19064  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19065  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19066  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19067  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19068  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19069  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 19070  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19071  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19072  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19073  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19074  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19075  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19076  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19077  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19078  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19079  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19080  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 19081  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19082  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19083  }
 19084  
 19085  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 19086  
 19087  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 19088  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 19089  	var i int32
 19090  	var nOut int32 = 0
 19091  	var cPrev int8 = int8(0x77)
 19092  	var cPrevX int8 = int8(0x77)
 19093  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 19094  
 19095  	if zOut == uintptr(0) {
 19096  		return uintptr(0)
 19097  	}
 19098  	if nIn > 2 {
 19099  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 19100  		case 'g':
 19101  			fallthrough
 19102  		case 'k':
 19103  			{
 19104  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 19105  					zIn++
 19106  					nIn--
 19107  				}
 19108  				break
 19109  
 19110  			}
 19111  		}
 19112  	}
 19113  	for i = 0; i < nIn; i++ {
 19114  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 19115  		if i+1 < nIn {
 19116  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 19117  				continue
 19118  			}
 19119  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 19120  				continue
 19121  			}
 19122  			if i+2 < nIn {
 19123  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 19124  					continue
 19125  				}
 19126  			}
 19127  		}
 19128  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 19129  		if int32(c) == CCLASS_SPACE {
 19130  			continue
 19131  		}
 19132  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 19133  			continue
 19134  		}
 19135  		aClass = uintptr(unsafe.Pointer(&midClass))
 19136  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 19137  			continue
 19138  		}
 19139  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 19140  			nOut--
 19141  		}
 19142  		cPrev = int8(c)
 19143  		if int32(c) == CCLASS_SILENT {
 19144  			continue
 19145  		}
 19146  		cPrevX = int8(c)
 19147  		c = className[c]
 19148  
 19149  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 19150  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 19151  		}
 19152  	}
 19153  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 19154  	return zOut
 19155  }
 19156  
 19157  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19158  	var zIn uintptr
 19159  	var zOut uintptr
 19160  
 19161  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19162  	if zIn == uintptr(0) {
 19163  		return
 19164  	}
 19165  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 19166  	if zOut == uintptr(0) {
 19167  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19168  	} else {
 19169  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19170  	}
 19171  }
 19172  
 19173  func characterClass(tls *libc.TLS, cPrev int8, c int8) int8 {
 19174  	if int32(cPrev) == 0 {
 19175  		return int8(initClass[int32(c)&0x7f])
 19176  	}
 19177  	return int8(midClass[int32(c)&0x7f])
 19178  }
 19179  
 19180  func insertOrDeleteCost(tls *libc.TLS, cPrev int8, c int8, cNext int8) int32 {
 19181  	var classC int8 = characterClass(tls, cPrev, c)
 19182  	var classCprev int8
 19183  
 19184  	if int32(classC) == CCLASS_SILENT {
 19185  		return 1
 19186  	}
 19187  	if int32(cPrev) == int32(c) {
 19188  		return 10
 19189  	}
 19190  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 19191  		return 20
 19192  	}
 19193  	classCprev = characterClass(tls, cPrev, cPrev)
 19194  	if int32(classC) == int32(classCprev) {
 19195  		if int32(classC) == CCLASS_VOWEL {
 19196  			return 15
 19197  		} else {
 19198  			return 50
 19199  		}
 19200  	}
 19201  
 19202  	return 100
 19203  }
 19204  
 19205  func substituteCost(tls *libc.TLS, cPrev int8, cFrom int8, cTo int8) int32 {
 19206  	var classFrom int8
 19207  	var classTo int8
 19208  	if int32(cFrom) == int32(cTo) {
 19209  		return 0
 19210  	}
 19211  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 19212  		return 0
 19213  	}
 19214  	classFrom = characterClass(tls, cPrev, cFrom)
 19215  	classTo = characterClass(tls, cPrev, cTo)
 19216  	if int32(classFrom) == int32(classTo) {
 19217  		return 40
 19218  	}
 19219  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 19220  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 19221  		return 75
 19222  	}
 19223  
 19224  	return 100
 19225  }
 19226  
 19227  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 19228  	bp := tls.Alloc(300)
 19229  	defer tls.Free(300)
 19230  
 19231  	var nA int32
 19232  	var nB int32
 19233  	var xA int32
 19234  	var xB int32
 19235  	var cA int8 = int8(0)
 19236  	var cB int8
 19237  	var cAprev int8
 19238  	var cBprev int8
 19239  	var cAnext int8
 19240  	var cBnext int8
 19241  	var d int32
 19242  	var dc int32 = 0
 19243  	var res int32
 19244  	var m uintptr
 19245  	var cx uintptr
 19246  	var toFree uintptr = uintptr(0)
 19247  	var nMatch int32 = 0
 19248  
 19249  	if zA == uintptr(0) || zB == uintptr(0) {
 19250  		return -1
 19251  	}
 19252  
 19253  	for *(*int8)(unsafe.Pointer(zA)) != 0 && int32(*(*int8)(unsafe.Pointer(zA))) == int32(*(*int8)(unsafe.Pointer(zB))) {
 19254  		dc = int32(*(*int8)(unsafe.Pointer(zA)))
 19255  		zA++
 19256  		zB++
 19257  		nMatch++
 19258  	}
 19259  	if pnMatch != 0 {
 19260  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 19261  	}
 19262  	if int32(*(*int8)(unsafe.Pointer(zA))) == 0 && int32(*(*int8)(unsafe.Pointer(zB))) == 0 {
 19263  		return 0
 19264  	}
 19265  
 19266  	for nA = 0; *(*int8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 19267  		if int32(*(*int8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 19268  			return -2
 19269  		}
 19270  	}
 19271  	for nB = 0; *(*int8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 19272  		if int32(*(*int8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 19273  			return -2
 19274  		}
 19275  	}
 19276  
 19277  	if nA == 0 {
 19278  		cBprev = int8(dc)
 19279  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 19280  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 19281  			cBprev = cB
 19282  		}
 19283  		return res
 19284  	}
 19285  	if nB == 0 {
 19286  		cAprev = int8(dc)
 19287  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 19288  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA+1))))
 19289  			cAprev = cA
 19290  		}
 19291  		return res
 19292  	}
 19293  
 19294  	if int32(*(*int8)(unsafe.Pointer(zA))) == '*' && int32(*(*int8)(unsafe.Pointer(zA + 1))) == 0 {
 19295  		return 0
 19296  	}
 19297  
 19298  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 19299  		m = bp
 19300  	} else {
 19301  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 19302  		if m == uintptr(0) {
 19303  			return -3
 19304  		}
 19305  	}
 19306  	cx = m + uintptr(nB+1)*4
 19307  
 19308  	*(*int32)(unsafe.Pointer(m)) = 0
 19309  	*(*int8)(unsafe.Pointer(cx)) = int8(dc)
 19310  	cBprev = int8(dc)
 19311  	for xB = 1; xB <= nB; xB++ {
 19312  		cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19313  		cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19314  		*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 19315  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 19316  		cBprev = cB
 19317  	}
 19318  	cAprev = int8(dc)
 19319  	for xA = 1; xA <= nA; xA++ {
 19320  		var lastA int32 = libc.Bool32(xA == nA)
 19321  		cA = *(*int8)(unsafe.Pointer(zA + uintptr(xA-1)))
 19322  		cAnext = *(*int8)(unsafe.Pointer(zA + uintptr(xA)))
 19323  		if int32(cA) == '*' && lastA != 0 {
 19324  			break
 19325  		}
 19326  		d = *(*int32)(unsafe.Pointer(m))
 19327  		dc = int32(*(*int8)(unsafe.Pointer(cx)))
 19328  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 19329  		cBprev = int8(0)
 19330  		for xB = 1; xB <= nB; xB++ {
 19331  			var totalCost int32
 19332  			var insCost int32
 19333  			var delCost int32
 19334  			var subCost int32
 19335  			var ncx int32
 19336  			cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19337  			cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19338  
 19339  			insCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 19340  			if lastA != 0 {
 19341  				insCost = insCost / FINAL_INS_COST_DIV
 19342  			}
 19343  
 19344  			delCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 19345  
 19346  			subCost = substituteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 19347  
 19348  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 19349  			ncx = int32(cB)
 19350  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 19351  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19352  				ncx = int32(cA)
 19353  			}
 19354  			if subCost+d < totalCost {
 19355  				totalCost = subCost + d
 19356  			}
 19357  
 19358  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19359  			dc = int32(*(*int8)(unsafe.Pointer(cx + uintptr(xB))))
 19360  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 19361  			*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = int8(ncx)
 19362  			cBprev = cB
 19363  		}
 19364  		cAprev = cA
 19365  	}
 19366  
 19367  	if int32(cA) == '*' {
 19368  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 19369  		for xB = 1; xB <= nB; xB++ {
 19370  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 19371  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19372  				if pnMatch != 0 {
 19373  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 19374  				}
 19375  			}
 19376  		}
 19377  	} else {
 19378  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 19379  
 19380  	}
 19381  	sqlite3.Xsqlite3_free(tls, toFree)
 19382  	return res
 19383  }
 19384  
 19385  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19386  	var res int32 = editdist1(tls,
 19387  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 19388  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 19389  		uintptr(0))
 19390  	if res < 0 {
 19391  		if res == -3 {
 19392  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19393  		} else if res == -2 {
 19394  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 19395  		} else {
 19396  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 19397  		}
 19398  	} else {
 19399  		sqlite3.Xsqlite3_result_int(tls, context, res)
 19400  	}
 19401  }
 19402  
 19403  type EditDist3Cost1 = struct {
 19404  	FpNext uintptr
 19405  	FnFrom u8
 19406  	FnTo   u8
 19407  	FiCost u16
 19408  	Fa     [4]int8
 19409  }
 19410  
 19411  type EditDist3Cost = EditDist3Cost1
 19412  type EditDist3Config1 = struct {
 19413  	FnLang       int32
 19414  	F__ccgo_pad1 [4]byte
 19415  	Fa           uintptr
 19416  }
 19417  
 19418  type EditDist3Config = EditDist3Config1
 19419  type EditDist3From1 = struct {
 19420  	FnSubst      int32
 19421  	FnDel        int32
 19422  	FnByte       int32
 19423  	F__ccgo_pad1 [4]byte
 19424  	FapSubst     uintptr
 19425  	FapDel       uintptr
 19426  }
 19427  
 19428  type EditDist3From = EditDist3From1
 19429  type EditDist3FromString1 = struct {
 19430  	Fz        uintptr
 19431  	Fn        int32
 19432  	FisPrefix int32
 19433  	Fa        uintptr
 19434  }
 19435  
 19436  type EditDist3FromString = EditDist3FromString1
 19437  type EditDist3To1 = struct {
 19438  	FnIns  int32
 19439  	FnByte int32
 19440  	FapIns uintptr
 19441  }
 19442  
 19443  type EditDist3To = EditDist3To1
 19444  type EditDist3ToString1 = struct {
 19445  	Fz           uintptr
 19446  	Fn           int32
 19447  	F__ccgo_pad1 [4]byte
 19448  	Fa           uintptr
 19449  }
 19450  
 19451  type EditDist3ToString = EditDist3ToString1
 19452  type EditDist3Lang1 = struct {
 19453  	FiLang    int32
 19454  	FiInsCost int32
 19455  	FiDelCost int32
 19456  	FiSubCost int32
 19457  	FpCost    uintptr
 19458  }
 19459  
 19460  type EditDist3Lang = EditDist3Lang1
 19461  
 19462  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 19463  
 19464  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 19465  	var i int32
 19466  	if p == uintptr(0) {
 19467  		return
 19468  	}
 19469  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 19470  		var pCost uintptr
 19471  		var pNext uintptr
 19472  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 19473  		for pCost != 0 {
 19474  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 19475  			sqlite3.Xsqlite3_free(tls, pCost)
 19476  			pCost = pNext
 19477  		}
 19478  	}
 19479  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 19480  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 19481  }
 19482  
 19483  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 19484  	var p uintptr = pIn
 19485  	editDist3ConfigClear(tls, p)
 19486  	sqlite3.Xsqlite3_free(tls, p)
 19487  }
 19488  
 19489  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 19490  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 19491  	var rc int32
 19492  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 19493  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19494  	}
 19495  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 19496  	if rc == 0 {
 19497  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19498  	}
 19499  	return rc
 19500  }
 19501  
 19502  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 19503  	bp := tls.Alloc(8)
 19504  	defer tls.Free(8)
 19505  
 19506  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19507  	var ppTail uintptr = bp
 19508  	var p uintptr
 19509  	for pA != 0 && pB != 0 {
 19510  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 19511  			p = pA
 19512  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 19513  		} else {
 19514  			p = pB
 19515  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 19516  		}
 19517  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 19518  		ppTail = p
 19519  	}
 19520  	if pA != 0 {
 19521  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 19522  	} else {
 19523  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 19524  	}
 19525  	return *(*uintptr)(unsafe.Pointer(bp))
 19526  }
 19527  
 19528  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 19529  	bp := tls.Alloc(480)
 19530  	defer tls.Free(480)
 19531  
 19532  	var p uintptr
 19533  	var i int32
 19534  	var mx int32 = 0
 19535  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19536  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 19537  	for pList != 0 {
 19538  		p = pList
 19539  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 19540  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 19541  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 19542  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 19543  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 19544  		}
 19545  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 19546  		if i > mx {
 19547  			mx = i
 19548  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 19549  		}
 19550  	}
 19551  	p = uintptr(0)
 19552  	for i = 0; i <= mx; i++ {
 19553  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 19554  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 19555  		}
 19556  	}
 19557  	return p
 19558  }
 19559  
 19560  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 19561  	bp := tls.Alloc(16)
 19562  	defer tls.Free(16)
 19563  
 19564  	var rc int32
 19565  	var rc2 int32
 19566  	var zSql uintptr
 19567  	var iLangPrev int32 = -9999
 19568  	var pLang uintptr = uintptr(0)
 19569  
 19570  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 19571  		ts+7107, libc.VaList(bp, zTable))
 19572  	if zSql == uintptr(0) {
 19573  		return SQLITE_NOMEM
 19574  	}
 19575  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 19576  	sqlite3.Xsqlite3_free(tls, zSql)
 19577  	if rc != 0 {
 19578  		return rc
 19579  	}
 19580  	editDist3ConfigClear(tls, p)
 19581  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 19582  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 19583  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 19584  		var nFrom int32
 19585  		if zFrom != 0 {
 19586  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 19587  		} else {
 19588  			nFrom = 0
 19589  		}
 19590  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 19591  		var nTo int32
 19592  		if zTo != 0 {
 19593  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 19594  		} else {
 19595  			nTo = 0
 19596  		}
 19597  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 19598  
 19599  		if nFrom > 100 || nTo > 100 {
 19600  			continue
 19601  		}
 19602  		if iCost < 0 {
 19603  			continue
 19604  		}
 19605  		if iCost >= 10000 {
 19606  			continue
 19607  		}
 19608  		if pLang == uintptr(0) || iLang != iLangPrev {
 19609  			var pNew uintptr
 19610  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 19611  			if pNew == uintptr(0) {
 19612  				rc = SQLITE_NOMEM
 19613  				break
 19614  			}
 19615  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 19616  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 19617  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 19618  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 19619  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 19620  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 19621  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 19622  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 19623  			iLangPrev = iLang
 19624  		}
 19625  		if nFrom == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 19626  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 19627  		} else if nFrom == 0 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 19628  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 19629  		} else if nFrom == 1 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 19630  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 19631  		} else {
 19632  			var pCost uintptr
 19633  			var nExtra int32 = nFrom + nTo - 4
 19634  			if nExtra < 0 {
 19635  				nExtra = 0
 19636  			}
 19637  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 19638  			if pCost == uintptr(0) {
 19639  				rc = SQLITE_NOMEM
 19640  				break
 19641  			}
 19642  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 19643  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 19644  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 19645  			libc.Xmemcpy(tls, pCost+12, zFrom, uint64(nFrom))
 19646  			libc.Xmemcpy(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo))
 19647  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 19648  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 19649  		}
 19650  	}
 19651  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 19652  	if rc == SQLITE_OK {
 19653  		rc = rc2
 19654  	}
 19655  	if rc == SQLITE_OK {
 19656  		var iLang int32
 19657  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 19658  			(*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)
 19659  		}
 19660  	}
 19661  	return rc
 19662  }
 19663  
 19664  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 19665  	var len int32 = 1
 19666  	if int32(c) > 0x7f {
 19667  		if int32(c)&0xe0 == 0xc0 {
 19668  			len = 2
 19669  		} else if int32(c)&0xf0 == 0xe0 {
 19670  			len = 3
 19671  		} else {
 19672  			len = 4
 19673  		}
 19674  	}
 19675  	if len > N {
 19676  		len = N
 19677  	}
 19678  	return len
 19679  }
 19680  
 19681  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 19682  	if int32(*(*int8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*int8)(unsafe.Pointer(z))) {
 19683  		return 0
 19684  	}
 19685  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 19686  		return 0
 19687  	}
 19688  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 19689  		return 0
 19690  	}
 19691  	return 1
 19692  }
 19693  
 19694  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 19695  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 19696  		if int32(*(*int8)(unsafe.Pointer(p + 12))) != int32(*(*int8)(unsafe.Pointer(z))) {
 19697  			return 0
 19698  		}
 19699  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 19700  			return 0
 19701  		}
 19702  	}
 19703  	return 1
 19704  }
 19705  
 19706  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 19707  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 19708  	if b1 > n2 {
 19709  		return 0
 19710  	}
 19711  
 19712  	if int32(*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*int8)(unsafe.Pointer(z2))) {
 19713  		return 0
 19714  	}
 19715  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 19716  		return 0
 19717  	}
 19718  	return 1
 19719  }
 19720  
 19721  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 19722  	var i int32
 19723  	if p != 0 {
 19724  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 19725  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 19726  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 19727  		}
 19728  		sqlite3.Xsqlite3_free(tls, p)
 19729  	}
 19730  }
 19731  
 19732  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 19733  	var pStr uintptr
 19734  	var p uintptr
 19735  	var i int32
 19736  
 19737  	if z == uintptr(0) {
 19738  		return uintptr(0)
 19739  	}
 19740  	if n < 0 {
 19741  		n = int32(libc.Xstrlen(tls, z))
 19742  	}
 19743  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 19744  	if pStr == uintptr(0) {
 19745  		return uintptr(0)
 19746  	}
 19747  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 19748  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n))
 19749  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 19750  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 19751  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1))
 19752  	if n != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 19753  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 19754  		n--
 19755  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 19756  		*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = int8(0)
 19757  	} else {
 19758  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 19759  	}
 19760  
 19761  	for i = 0; i < n; i++ {
 19762  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 19763  		libc.Xmemset(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})))
 19764  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))), n-i)
 19765  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 19766  			var apNew uintptr
 19767  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 19768  				continue
 19769  			}
 19770  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 19771  				continue
 19772  			}
 19773  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 19774  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 19775  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 19776  				if apNew == uintptr(0) {
 19777  					break
 19778  				}
 19779  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 19780  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 19781  			} else {
 19782  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 19783  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 19784  				if apNew == uintptr(0) {
 19785  					break
 19786  				}
 19787  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 19788  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 19789  			}
 19790  		}
 19791  		if p != 0 {
 19792  			editDist3FromStringDelete(tls, pStr)
 19793  			pStr = uintptr(0)
 19794  			break
 19795  		}
 19796  	}
 19797  	return pStr
 19798  }
 19799  
 19800  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 19801  	var b uint32
 19802  
 19803  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 19804  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 19805  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 19806  	}
 19807  }
 19808  
 19809  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 19810  	bp := tls.Alloc(1048)
 19811  	defer tls.Free(1048)
 19812  
 19813  	var k int32
 19814  	var n int32
 19815  	var i1 int32
 19816  	var b1 int32
 19817  	var i2 int32
 19818  	var b2 int32
 19819  
 19820  	var a2 uintptr
 19821  	var m uintptr
 19822  	var pToFree uintptr
 19823  	var szRow int32
 19824  	var p uintptr
 19825  	var res int32
 19826  	var nByte sqlite3_uint64
 19827  
 19828  	var apNew uintptr
 19829  	var cx int32
 19830  	var cxp int32
 19831  	var cxd int32
 19832  	var cxu int32
 19833  	var rx int32
 19834  	var rxp int32
 19835  	var b int32
 19836  	var nExtra int32
 19837  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 19838  
 19839  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 19840  	n = (n + 1) & libc.CplInt32(1)
 19841  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 19842  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 19843  		goto __1
 19844  	}
 19845  	m = bp
 19846  	pToFree = uintptr(0)
 19847  	goto __2
 19848  __1:
 19849  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 19850  	if !(m == uintptr(0)) {
 19851  		goto __3
 19852  	}
 19853  	return -1
 19854  __3:
 19855  	;
 19856  __2:
 19857  	;
 19858  	a2 = m + uintptr(n)*4
 19859  	libc.Xmemset(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2))
 19860  
 19861  	i2 = 0
 19862  __4:
 19863  	if !(i2 < n2) {
 19864  		goto __6
 19865  	}
 19866  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z2 + uintptr(i2)))), n2-i2)
 19867  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 19868  __7:
 19869  	if !(p != 0) {
 19870  		goto __9
 19871  	}
 19872  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 19873  		goto __10
 19874  	}
 19875  	goto __9
 19876  __10:
 19877  	;
 19878  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 19879  		goto __11
 19880  	}
 19881  	goto __8
 19882  __11:
 19883  	;
 19884  	if !(int32(*(*int8)(unsafe.Pointer(p + 12))) > int32(*(*int8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 19885  		goto __12
 19886  	}
 19887  	goto __9
 19888  __12:
 19889  	;
 19890  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 19891  		goto __13
 19892  	}
 19893  	goto __8
 19894  __13:
 19895  	;
 19896  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 19897  	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))
 19898  	if !(apNew == uintptr(0)) {
 19899  		goto __14
 19900  	}
 19901  	res = -1
 19902  	goto editDist3Abort
 19903  __14:
 19904  	;
 19905  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 19906  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 19907  	goto __8
 19908  __8:
 19909  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 19910  	goto __7
 19911  	goto __9
 19912  __9:
 19913  	;
 19914  	goto __5
 19915  __5:
 19916  	i2++
 19917  	goto __4
 19918  	goto __6
 19919  __6:
 19920  	;
 19921  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 19922  	libc.Xmemset(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))))
 19923  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 19924  
 19925  	i1 = 0
 19926  __15:
 19927  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 19928  		goto __17
 19929  	}
 19930  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 19931  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 19932  	k = 0
 19933  __18:
 19934  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 19935  		goto __20
 19936  	}
 19937  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 19938  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19939  	goto __19
 19940  __19:
 19941  	k++
 19942  	goto __18
 19943  	goto __20
 19944  __20:
 19945  	;
 19946  	goto __16
 19947  __16:
 19948  	i1 = i1 + b1
 19949  	goto __15
 19950  	goto __17
 19951  __17:
 19952  	;
 19953  	i2 = 0
 19954  __21:
 19955  	if !(i2 < n2) {
 19956  		goto __23
 19957  	}
 19958  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 19959  	rx = szRow * (i2 + b2)
 19960  	rxp = szRow * i2
 19961  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 19962  	k = 0
 19963  __24:
 19964  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 19965  		goto __26
 19966  	}
 19967  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 19968  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19969  	goto __25
 19970  __25:
 19971  	k++
 19972  	goto __24
 19973  	goto __26
 19974  __26:
 19975  	;
 19976  	i1 = 0
 19977  __27:
 19978  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 19979  		goto __29
 19980  	}
 19981  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 19982  	cxp = rx + i1
 19983  	cx = cxp + b1
 19984  	cxd = rxp + i1
 19985  	cxu = cxd + b1
 19986  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 19987  	k = 0
 19988  __30:
 19989  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 19990  		goto __32
 19991  	}
 19992  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 19993  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19994  	goto __31
 19995  __31:
 19996  	k++
 19997  	goto __30
 19998  	goto __32
 19999  __32:
 20000  	;
 20001  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20002  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20003  		goto __33
 20004  	}
 20005  	updateCost(tls, m, cx, cxd, 0)
 20006  __33:
 20007  	;
 20008  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20009  	k = 0
 20010  __34:
 20011  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 20012  		goto __36
 20013  	}
 20014  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 20015  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20016  		goto __37
 20017  	}
 20018  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20019  __37:
 20020  	;
 20021  	goto __35
 20022  __35:
 20023  	k++
 20024  	goto __34
 20025  	goto __36
 20026  __36:
 20027  	;
 20028  	goto __28
 20029  __28:
 20030  	i1 = i1 + b1
 20031  	goto __27
 20032  	goto __29
 20033  __29:
 20034  	;
 20035  	goto __22
 20036  __22:
 20037  	i2 = i2 + b2
 20038  	goto __21
 20039  	goto __23
 20040  __23:
 20041  	;
 20042  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 20043  	n = n2
 20044  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 20045  		goto __38
 20046  	}
 20047  	i2 = 1
 20048  __39:
 20049  	if !(i2 <= n2) {
 20050  		goto __41
 20051  	}
 20052  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 20053  	if !(b <= res) {
 20054  		goto __42
 20055  	}
 20056  	res = b
 20057  	n = i2 - 1
 20058  __42:
 20059  	;
 20060  	goto __40
 20061  __40:
 20062  	i2++
 20063  	goto __39
 20064  	goto __41
 20065  __41:
 20066  	;
 20067  __38:
 20068  	;
 20069  	if !(pnMatch != 0) {
 20070  		goto __43
 20071  	}
 20072  	nExtra = 0
 20073  	k = 0
 20074  __44:
 20075  	if !(k < n) {
 20076  		goto __46
 20077  	}
 20078  	if !(int32(*(*int8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 20079  		goto __47
 20080  	}
 20081  	nExtra++
 20082  __47:
 20083  	;
 20084  	goto __45
 20085  __45:
 20086  	k++
 20087  	goto __44
 20088  	goto __46
 20089  __46:
 20090  	;
 20091  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 20092  __43:
 20093  	;
 20094  editDist3Abort:
 20095  	i2 = 0
 20096  __48:
 20097  	if !(i2 < n2) {
 20098  		goto __50
 20099  	}
 20100  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 20101  	goto __49
 20102  __49:
 20103  	i2++
 20104  	goto __48
 20105  	goto __50
 20106  __50:
 20107  	;
 20108  	sqlite3.Xsqlite3_free(tls, pToFree)
 20109  	return res
 20110  }
 20111  
 20112  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 20113  	var i int32
 20114  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 20115  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 20116  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 20117  		}
 20118  	}
 20119  	return uintptr(unsafe.Pointer(&editDist3Lang))
 20120  }
 20121  
 20122  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20123  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 20124  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 20125  	var rc int32
 20126  	if argc == 1 {
 20127  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20128  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 20129  		if rc != 0 {
 20130  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 20131  		}
 20132  	} else {
 20133  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20134  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20135  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20136  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20137  		var iLang int32
 20138  		if argc == 3 {
 20139  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 20140  		} else {
 20141  			iLang = 0
 20142  		}
 20143  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 20144  		var pFrom uintptr
 20145  		var dist int32
 20146  
 20147  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 20148  		if pFrom == uintptr(0) {
 20149  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20150  			return
 20151  		}
 20152  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 20153  		editDist3FromStringDelete(tls, pFrom)
 20154  		if dist == -1 {
 20155  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20156  		} else {
 20157  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 20158  		}
 20159  	}
 20160  }
 20161  
 20162  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 20163  	var rc int32
 20164  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 20165  	if pConfig == uintptr(0) {
 20166  		return SQLITE_NOMEM
 20167  	}
 20168  	libc.Xmemset(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20169  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20170  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20171  		*(*uintptr)(unsafe.Pointer(&struct {
 20172  			f func(*libc.TLS, uintptr, int32, uintptr)
 20173  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20174  	if rc == SQLITE_OK {
 20175  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20176  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20177  			*(*uintptr)(unsafe.Pointer(&struct {
 20178  				f func(*libc.TLS, uintptr, int32, uintptr)
 20179  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20180  	}
 20181  	if rc == SQLITE_OK {
 20182  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20183  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20184  			*(*uintptr)(unsafe.Pointer(&struct {
 20185  				f func(*libc.TLS, uintptr, int32, uintptr)
 20186  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 20187  	} else {
 20188  		sqlite3.Xsqlite3_free(tls, pConfig)
 20189  	}
 20190  	return rc
 20191  }
 20192  
 20193  var sqlite3Utf8Trans1 = [64]uint8{
 20194  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20195  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20196  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 20197  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 20198  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20199  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20200  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20201  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 20202  }
 20203  
 20204  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 20205  	var c int32
 20206  	var i int32
 20207  
 20208  	if 0 != 0 {
 20209  		c = libc.AssignInt32(&i, 0)
 20210  	} else {
 20211  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 20212  		i = 1
 20213  		if c >= 0xc0 {
 20214  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 20215  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 20216  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 20217  			}
 20218  		}
 20219  	}
 20220  	*(*int32)(unsafe.Pointer(pSize)) = i
 20221  	return c
 20222  }
 20223  
 20224  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 20225  	bp := tls.Alloc(4)
 20226  	defer tls.Free(4)
 20227  
 20228  	var i int32
 20229  	var nChar int32 = 0
 20230  	for i = 0; i < nIn; nChar++ {
 20231  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20232  		i = i + *(*int32)(unsafe.Pointer(bp))
 20233  	}
 20234  	return nChar
 20235  }
 20236  
 20237  type Transliteration1 = struct {
 20238  	FcFrom uint16
 20239  	FcTo0  uint8
 20240  	FcTo1  uint8
 20241  	FcTo2  uint8
 20242  	FcTo3  uint8
 20243  }
 20244  
 20245  type Transliteration = Transliteration1
 20246  
 20247  var translit = [389]Transliteration{
 20248  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 20249  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 20250  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 20251  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 20252  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 20253  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 20254  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 20255  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 20256  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 20257  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 20258  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 20259  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 20260  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 20261  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 20262  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 20263  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 20264  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 20265  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 20266  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 20267  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 20268  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 20269  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 20270  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 20271  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 20272  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 20273  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 20274  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 20275  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 20276  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 20277  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 20278  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 20279  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 20280  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20281  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 20282  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 20283  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 20284  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 20285  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 20286  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20287  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 20288  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20289  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 20290  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 20291  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 20292  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 20293  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 20294  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 20295  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 20296  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 20297  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 20298  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 20299  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 20300  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 20301  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 20302  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 20303  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 20304  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20305  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 20306  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 20307  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 20308  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 20309  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 20310  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 20311  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 20312  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20313  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 20314  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 20315  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 20316  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 20317  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 20318  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 20319  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 20320  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 20321  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 20322  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20323  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20324  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 20325  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 20326  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 20327  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 20328  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 20329  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 20330  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 20331  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 20332  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 20333  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 20334  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 20335  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 20336  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 20337  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 20338  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 20339  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 20340  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 20341  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 20342  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 20343  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 20344  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 20345  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 20346  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 20347  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 20348  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 20349  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 20350  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 20351  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 20352  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 20353  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 20354  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 20355  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 20356  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 20357  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 20358  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 20359  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 20360  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 20361  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 20362  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 20363  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 20364  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 20365  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 20366  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 20367  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 20368  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 20369  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 20370  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 20371  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 20372  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 20373  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 20374  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 20375  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 20376  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 20377  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 20378  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 20379  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 20380  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 20381  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 20382  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 20383  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 20384  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 20385  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 20386  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 20387  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 20388  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 20389  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 20390  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 20391  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 20392  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 20393  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 20394  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 20395  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 20396  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 20397  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20398  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 20399  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 20400  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 20401  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 20402  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 20403  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 20404  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 20405  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 20406  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20407  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20408  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 20409  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 20410  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 20411  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 20412  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 20413  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 20414  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 20415  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 20416  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 20417  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 20418  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 20419  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 20420  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 20421  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 20422  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 20423  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 20424  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 20425  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 20426  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 20427  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 20428  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 20429  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 20430  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 20431  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 20432  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 20433  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 20434  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 20435  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 20436  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 20437  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 20438  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 20439  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 20440  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 20441  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 20442  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 20443  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 20444  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 20445  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 20446  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 20447  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 20448  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 20449  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 20450  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 20451  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 20452  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 20453  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 20454  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 20455  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 20456  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 20457  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 20458  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 20459  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 20460  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 20461  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 20462  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20463  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 20464  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 20465  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 20466  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 20467  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 20468  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 20469  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 20470  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 20471  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 20472  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 20473  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 20474  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 20475  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 20476  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20477  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 20478  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 20479  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 20480  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 20481  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 20482  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 20483  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 20484  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 20485  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 20486  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 20487  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 20488  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 20489  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 20490  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 20491  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 20492  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20493  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 20494  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 20495  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 20496  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 20497  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 20498  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 20499  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 20500  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 20501  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 20502  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 20503  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 20504  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 20505  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 20506  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20507  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 20508  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 20509  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 20510  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 20511  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 20512  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 20513  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 20514  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 20515  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 20516  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 20517  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 20518  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 20519  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 20520  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 20521  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 20522  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 20523  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 20524  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 20525  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 20526  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 20527  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 20528  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 20529  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 20530  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 20531  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 20532  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 20533  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 20534  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 20535  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 20536  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 20537  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 20538  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 20539  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 20540  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 20541  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 20542  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 20543  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 20544  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 20545  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 20546  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 20547  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 20548  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 20549  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 20550  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 20551  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 20552  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 20553  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20554  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20555  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 20556  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 20557  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 20558  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 20559  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 20560  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 20561  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 20562  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 20563  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 20564  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 20565  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 20566  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 20567  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 20568  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 20569  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 20570  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 20571  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 20572  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 20573  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 20574  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 20575  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 20576  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 20577  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 20578  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 20579  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 20580  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 20581  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 20582  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 20583  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 20584  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 20585  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20586  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20587  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 20588  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 20589  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 20590  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 20591  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 20592  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 20593  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 20594  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 20595  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 20596  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 20597  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 20598  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 20599  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 20600  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 20601  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 20602  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 20603  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 20604  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 20605  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 20606  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 20607  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 20608  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 20609  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 20610  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 20611  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 20612  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 20613  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 20614  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 20615  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 20616  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 20617  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 20618  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 20619  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 20620  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 20621  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 20622  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 20623  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 20624  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 20625  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 20626  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 20627  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 20628  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 20629  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 20630  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 20631  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 20632  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 20633  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 20634  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 20635  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 20636  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 20637  }
 20638  
 20639  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 20640  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 20641  	return uintptr(unsafe.Pointer(&translit))
 20642  }
 20643  
 20644  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 20645  	bp := tls.Alloc(8)
 20646  	defer tls.Free(8)
 20647  
 20648  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 20649  	var c int32
 20650  
 20651  	var nOut int32
 20652  	if zOut == uintptr(0) {
 20653  		return uintptr(0)
 20654  	}
 20655  	nOut = 0
 20656  	for nIn > 0 {
 20657  		c = utf8Read(tls, zIn, nIn, bp)
 20658  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 20659  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 20660  		if c <= 127 {
 20661  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 20662  		} else {
 20663  			var xBtm int32
 20664  			var x int32
 20665  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 20666  			xBtm = 0
 20667  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 20668  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 20669  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 20670  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 20671  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 20672  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 20673  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 20674  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 20675  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 20676  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 20677  							}
 20678  						}
 20679  					}
 20680  					c = 0
 20681  					break
 20682  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 20683  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 20684  				} else {
 20685  					xBtm = x + 1
 20686  				}
 20687  			}
 20688  			if c != 0 {
 20689  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 20690  			}
 20691  		}
 20692  	}
 20693  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 20694  	return zOut
 20695  }
 20696  
 20697  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 20698  	bp := tls.Alloc(8)
 20699  	defer tls.Free(8)
 20700  
 20701  	var i int32
 20702  	var c int32
 20703  
 20704  	var nOut int32
 20705  	var nChar int32
 20706  
 20707  	i = libc.AssignInt32(&nOut, 0)
 20708  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 20709  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20710  		i = i + *(*int32)(unsafe.Pointer(bp))
 20711  
 20712  		nOut++
 20713  		if c >= 128 {
 20714  			var xBtm int32
 20715  			var x int32
 20716  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 20717  			xBtm = 0
 20718  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 20719  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 20720  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 20721  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 20722  						nOut++
 20723  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 20724  							nOut++
 20725  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 20726  								nOut++
 20727  							}
 20728  						}
 20729  					}
 20730  					break
 20731  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 20732  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 20733  				} else {
 20734  					xBtm = x + 1
 20735  				}
 20736  			}
 20737  		}
 20738  	}
 20739  
 20740  	return nChar
 20741  }
 20742  
 20743  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20744  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20745  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20746  	var zOut uintptr = transliterate(tls, zIn, nIn)
 20747  	if zOut == uintptr(0) {
 20748  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20749  	} else {
 20750  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 20751  	}
 20752  }
 20753  
 20754  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20755  	bp := tls.Alloc(4)
 20756  	defer tls.Free(4)
 20757  
 20758  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20759  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20760  	var c int32
 20761  
 20762  	var scriptMask int32 = 0
 20763  	var res int32
 20764  	var seenDigit int32 = 0
 20765  
 20766  	for nIn > 0 {
 20767  		c = utf8Read(tls, zIn, nIn, bp)
 20768  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 20769  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 20770  		if c < 0x02af {
 20771  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 20772  				scriptMask = scriptMask | SCRIPT_LATIN
 20773  			} else if c >= '0' && c <= '9' {
 20774  				seenDigit = 1
 20775  			}
 20776  		} else if c >= 0x0400 && c <= 0x04ff {
 20777  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 20778  		} else if c >= 0x0386 && c <= 0x03ce {
 20779  			scriptMask = scriptMask | SCRIPT_GREEK
 20780  		} else if c >= 0x0590 && c <= 0x05ff {
 20781  			scriptMask = scriptMask | SCRIPT_HEBREW
 20782  		} else if c >= 0x0600 && c <= 0x06ff {
 20783  			scriptMask = scriptMask | SCRIPT_ARABIC
 20784  		}
 20785  	}
 20786  	if scriptMask == 0 && seenDigit != 0 {
 20787  		scriptMask = SCRIPT_LATIN
 20788  	}
 20789  	switch scriptMask {
 20790  	case 0:
 20791  		res = 999
 20792  		break
 20793  	case SCRIPT_LATIN:
 20794  		res = 215
 20795  		break
 20796  	case SCRIPT_CYRILLIC:
 20797  		res = 220
 20798  		break
 20799  	case SCRIPT_GREEK:
 20800  		res = 200
 20801  		break
 20802  	case SCRIPT_HEBREW:
 20803  		res = 125
 20804  		break
 20805  	case SCRIPT_ARABIC:
 20806  		res = 160
 20807  		break
 20808  	default:
 20809  		res = 998
 20810  		break
 20811  	}
 20812  	sqlite3.Xsqlite3_result_int(tls, context, res)
 20813  }
 20814  
 20815  type spellfix1_vtab1 = struct {
 20816  	Fbase       sqlite3_vtab
 20817  	Fdb         uintptr
 20818  	FzDbName    uintptr
 20819  	FzTableName uintptr
 20820  	FzCostTable uintptr
 20821  	FpConfig3   uintptr
 20822  }
 20823  
 20824  type spellfix1_vtab = spellfix1_vtab1
 20825  type spellfix1_cursor1 = struct {
 20826  	Fbase      sqlite3_vtab_cursor
 20827  	FpVTab     uintptr
 20828  	FzPattern  uintptr
 20829  	FidxNum    int32
 20830  	FnRow      int32
 20831  	FnAlloc    int32
 20832  	FiRow      int32
 20833  	FiLang     int32
 20834  	FiTop      int32
 20835  	FiScope    int32
 20836  	FnSearch   int32
 20837  	FpFullScan uintptr
 20838  	Fa         uintptr
 20839  }
 20840  
 20841  type spellfix1_cursor = spellfix1_cursor1
 20842  
 20843  type spellfix1_row = struct {
 20844  	FiRowid    sqlite3_int64
 20845  	FzWord     uintptr
 20846  	FiRank     int32
 20847  	FiDistance int32
 20848  	FiScore    int32
 20849  	FiMatchlen int32
 20850  	FzHash     [32]int8
 20851  }
 20852  
 20853  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 20854  	var ap va_list
 20855  	_ = ap
 20856  	var zSql uintptr
 20857  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 20858  		return
 20859  	}
 20860  	ap = va
 20861  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 20862  	_ = ap
 20863  	if zSql == uintptr(0) {
 20864  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 20865  	} else {
 20866  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 20867  		sqlite3.Xsqlite3_free(tls, zSql)
 20868  	}
 20869  }
 20870  
 20871  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 20872  	bp := tls.Alloc(20)
 20873  	defer tls.Free(20)
 20874  
 20875  	var p uintptr = pVTab
 20876  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 20877  	if isDestroy != 0 {
 20878  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 20879  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 20880  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 20881  	}
 20882  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 20883  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 20884  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 20885  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 20886  		sqlite3.Xsqlite3_free(tls, p)
 20887  	}
 20888  	return *(*int32)(unsafe.Pointer(bp + 16))
 20889  }
 20890  
 20891  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 20892  	return spellfix1Uninit(tls, 0, pVTab)
 20893  }
 20894  
 20895  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 20896  	return spellfix1Uninit(tls, 1, pVTab)
 20897  }
 20898  
 20899  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 20900  	bp := tls.Alloc(8)
 20901  	defer tls.Free(8)
 20902  
 20903  	var zOut uintptr
 20904  	var i int32
 20905  	var j int32
 20906  	var c int8
 20907  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zIn))))) != 0 {
 20908  		zIn++
 20909  	}
 20910  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 20911  	if zOut == uintptr(0) {
 20912  		return uintptr(0)
 20913  	}
 20914  	i = int32(libc.Xstrlen(tls, zOut))
 20915  	*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
 20916  	c = *(*int8)(unsafe.Pointer(zOut))
 20917  	if int32(c) == '\'' || int32(c) == '"' {
 20918  		i = 1
 20919  		j = 0
 20920  		for ; 1 != 0; i++ {
 20921  			*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zOut + uintptr(i)))
 20922  			if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 20923  				if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 20924  					i++
 20925  				} else {
 20926  					*(*int8)(unsafe.Pointer(zOut + uintptr(j-1))) = int8(0)
 20927  					break
 20928  				}
 20929  			}
 20930  		}
 20931  	}
 20932  	return zOut
 20933  }
 20934  
 20935  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 20936  	bp := tls.Alloc(60)
 20937  	defer tls.Free(60)
 20938  
 20939  	var pNew uintptr = uintptr(0)
 20940  
 20941  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 20942  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 20943  	var nDbName int32
 20944  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 20945  	var i int32
 20946  
 20947  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 20948  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 20949  	if pNew == uintptr(0) {
 20950  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20951  	} else {
 20952  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})))
 20953  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 20954  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1))
 20955  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 20956  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 20957  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 20958  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20959  		} else {
 20960  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 20961  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 20962  				ts+7226)
 20963  		}
 20964  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 20965  			spellfix1DbExec(tls, bp+56, db,
 20966  				ts+7380,
 20967  				libc.VaList(bp+8, zDbName, zTableName))
 20968  			spellfix1DbExec(tls, bp+56, db,
 20969  				ts+7514,
 20970  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 20971  		}
 20972  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 20973  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 20974  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 20975  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 20976  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20977  				}
 20978  				continue
 20979  			}
 20980  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 20981  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 20982  		}
 20983  	}
 20984  
 20985  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 20986  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 20987  		spellfix1Uninit(tls, 0, pNew)
 20988  	} else {
 20989  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 20990  	}
 20991  	return *(*int32)(unsafe.Pointer(bp + 56))
 20992  }
 20993  
 20994  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 20995  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 20996  }
 20997  
 20998  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 20999  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21000  }
 21001  
 21002  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21003  	var i int32
 21004  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21005  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 21006  	}
 21007  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21008  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21009  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21010  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21011  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21012  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21013  	}
 21014  }
 21015  
 21016  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21017  	var aNew uintptr
 21018  
 21019  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 21020  	if aNew == uintptr(0) && N > 0 {
 21021  		spellfix1ResetCursor(tls, pCur)
 21022  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 21023  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 21024  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 21025  	} else {
 21026  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 21027  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 21028  	}
 21029  }
 21030  
 21031  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 21032  	var pCur uintptr = cur
 21033  	spellfix1ResetCursor(tls, pCur)
 21034  	spellfix1ResizeCursor(tls, pCur, 0)
 21035  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21036  	sqlite3.Xsqlite3_free(tls, pCur)
 21037  	return SQLITE_OK
 21038  }
 21039  
 21040  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 21041  	var iPlan int32 = 0
 21042  	var iLangTerm int32 = -1
 21043  	var iTopTerm int32 = -1
 21044  	var iScopeTerm int32 = -1
 21045  	var iDistTerm int32 = -1
 21046  	var iRowidTerm int32 = -1
 21047  	var i int32
 21048  	var pConstraint uintptr
 21049  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 21050  	i = 0
 21051  __1:
 21052  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 21053  		goto __3
 21054  	}
 21055  	{
 21056  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 21057  			goto __2
 21058  		}
 21059  
 21060  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 21061  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 21062  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 21063  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 21064  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 21065  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 21066  		}
 21067  
 21068  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 21069  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 21070  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21071  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 21072  			iLangTerm = i
 21073  		}
 21074  
 21075  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 21076  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 21077  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21078  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 21079  			iTopTerm = i
 21080  		}
 21081  
 21082  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 21083  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 21084  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21085  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 21086  			iScopeTerm = i
 21087  		}
 21088  
 21089  		if iPlan&(0x10|0x20) == 0 &&
 21090  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 21091  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 21092  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 21093  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 21094  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 21095  			} else {
 21096  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 21097  			}
 21098  			iDistTerm = i
 21099  		}
 21100  
 21101  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 21102  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 21103  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21104  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 21105  			iRowidTerm = i
 21106  		}
 21107  
 21108  	}
 21109  	goto __2
 21110  __2:
 21111  	i++
 21112  	pConstraint += 12
 21113  	goto __1
 21114  	goto __3
 21115  __3:
 21116  	;
 21117  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 21118  		var idx int32 = 2
 21119  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 21120  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 21121  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 21122  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 21123  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 21124  		}
 21125  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 21126  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21127  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 21128  		}
 21129  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 21130  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21131  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 21132  		}
 21133  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 21134  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21135  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 21136  		}
 21137  		if iPlan&(0x10|0x20) != 0 {
 21138  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21139  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 21140  		}
 21141  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 21142  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 21143  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 21144  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 21145  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 21146  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 21147  	} else {
 21148  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 21149  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 21150  	}
 21151  	return SQLITE_OK
 21152  }
 21153  
 21154  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 21155  	var p uintptr = pVTab
 21156  	var pCur uintptr
 21157  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21158  	if pCur == uintptr(0) {
 21159  		return SQLITE_NOMEM
 21160  	}
 21161  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21162  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 21163  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 21164  	return SQLITE_OK
 21165  }
 21166  
 21167  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 21168  	var iLog2 int32
 21169  	iLog2 = 0
 21170  __1:
 21171  	if !(iRank > 0) {
 21172  		goto __3
 21173  	}
 21174  	{
 21175  	}
 21176  	goto __2
 21177  __2:
 21178  	iLog2++
 21179  	iRank >>= 1
 21180  	goto __1
 21181  	goto __3
 21182  __3:
 21183  	;
 21184  	return iDistance + 32 - iLog2
 21185  }
 21186  
 21187  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 21188  	var a uintptr = A
 21189  	var b uintptr = B
 21190  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 21191  }
 21192  
 21193  type MatchQuery1 = struct {
 21194  	FpCur        uintptr
 21195  	FpStmt       uintptr
 21196  	FzHash       [32]int8
 21197  	FzPattern    uintptr
 21198  	FnPattern    int32
 21199  	F__ccgo_pad1 [4]byte
 21200  	FpMatchStr3  uintptr
 21201  	FpConfig3    uintptr
 21202  	FpLang       uintptr
 21203  	FiLang       int32
 21204  	FiScope      int32
 21205  	FiMaxDist    int32
 21206  	Frc          int32
 21207  	FnRun        int32
 21208  	FazPrior     [1][32]int8
 21209  	F__ccgo_pad2 [4]byte
 21210  }
 21211  
 21212  type MatchQuery = MatchQuery1
 21213  
 21214  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 21215  	bp := tls.Alloc(76)
 21216  	defer tls.Free(76)
 21217  
 21218  	var zK1 uintptr
 21219  	var zWord uintptr
 21220  	var iDist int32
 21221  	var iRank int32
 21222  	var iScore int32
 21223  	var iWorst int32 = 0
 21224  	var idx int32
 21225  	var idxWorst int32 = -1
 21226  	var i int32
 21227  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 21228  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 21229  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 21230  
 21231  	var zClass uintptr
 21232  	var nClass int32
 21233  	var rc int32
 21234  
 21235  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 21236  		return
 21237  	}
 21238  	zClass = phoneticHash(tls, zQuery, nQuery)
 21239  	if zClass == uintptr(0) {
 21240  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21241  		return
 21242  	}
 21243  	nClass = int32(libc.Xstrlen(tls, zClass))
 21244  	if nClass > SPELLFIX_MX_HASH-2 {
 21245  		nClass = SPELLFIX_MX_HASH - 2
 21246  		*(*int8)(unsafe.Pointer(zClass + uintptr(nClass))) = int8(0)
 21247  	}
 21248  	if nClass <= iScope {
 21249  		if nClass > 2 {
 21250  			iScope = nClass - 1
 21251  		} else {
 21252  			iScope = nClass
 21253  		}
 21254  	}
 21255  	libc.Xmemcpy(tls, bp+8, zClass, uint64(iScope))
 21256  	sqlite3.Xsqlite3_free(tls, zClass)
 21257  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = int8(0)
 21258  	libc.Xmemcpy(tls, bp+40, bp+8, uint64(iScope))
 21259  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = int8('Z')
 21260  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = int8(0)
 21261  
 21262  	libc.Xmemcpy(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1))
 21263  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 21264  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 21265  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21266  		return
 21267  	}
 21268  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 21269  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 21270  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 21271  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 21272  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 21273  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 21274  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 21275  		} else {
 21276  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 21277  			if zK1 == uintptr(0) {
 21278  				continue
 21279  			}
 21280  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 21281  		}
 21282  		if iDist < 0 {
 21283  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21284  			break
 21285  		}
 21286  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 21287  
 21288  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 21289  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 21290  				continue
 21291  			}
 21292  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 21293  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 21294  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 21295  					break
 21296  				}
 21297  			}
 21298  		}
 21299  
 21300  		iScore = spellfix1Score(tls, iDist, iRank)
 21301  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21302  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21303  		} else if iScore < iWorst {
 21304  			idx = idxWorst
 21305  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 21306  		} else {
 21307  			continue
 21308  		}
 21309  
 21310  		(*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)))
 21311  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 21312  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21313  			break
 21314  		}
 21315  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 21316  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 21317  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 21318  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 21319  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 21320  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1))
 21321  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21322  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 21323  		}
 21324  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21325  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 21326  			idxWorst = 0
 21327  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21328  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 21329  				if iWorst < iScore {
 21330  					iWorst = iScore
 21331  					idxWorst = i
 21332  				}
 21333  			}
 21334  		}
 21335  	}
 21336  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 21337  	if rc != 0 {
 21338  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 21339  	}
 21340  }
 21341  
 21342  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21343  	bp := tls.Alloc(176)
 21344  	defer tls.Free(176)
 21345  
 21346  	var idxNum int32
 21347  	var zMatchThis uintptr
 21348  	var pMatchStr3 uintptr
 21349  	var zPattern uintptr
 21350  	var nPattern int32
 21351  	var iLimit int32
 21352  	var iScope int32
 21353  	var iLang int32
 21354  	var zSql uintptr
 21355  
 21356  	var rc int32
 21357  	var idx int32
 21358  	var p uintptr
 21359  
 21360  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21361  	pMatchStr3 = uintptr(0)
 21362  	iLimit = 20
 21363  	iScope = 3
 21364  	iLang = 0
 21365  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21366  	idx = 1
 21367  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21368  
 21369  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21370  		goto __1
 21371  	}
 21372  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 21373  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21374  		goto __2
 21375  	}
 21376  	return SQLITE_NOMEM
 21377  __2:
 21378  	;
 21379  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 21380  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21381  	if !(rc != 0) {
 21382  		goto __3
 21383  	}
 21384  	return rc
 21385  __3:
 21386  	;
 21387  __1:
 21388  	;
 21389  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})))
 21390  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 21391  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 21392  
 21393  	if !(idxNum&2 != 0) {
 21394  		goto __4
 21395  	}
 21396  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21397  __4:
 21398  	;
 21399  	if !(idxNum&4 != 0) {
 21400  		goto __5
 21401  	}
 21402  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21403  	if !(iLimit < 1) {
 21404  		goto __6
 21405  	}
 21406  	iLimit = 1
 21407  __6:
 21408  	;
 21409  __5:
 21410  	;
 21411  	if !(idxNum&8 != 0) {
 21412  		goto __7
 21413  	}
 21414  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21415  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 21416  		goto __8
 21417  	}
 21418  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 21419  __8:
 21420  	;
 21421  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 21422  		goto __9
 21423  	}
 21424  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 21425  __9:
 21426  	;
 21427  __7:
 21428  	;
 21429  	if !(idxNum&(16|32) != 0) {
 21430  		goto __10
 21431  	}
 21432  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21433  	if !(idxNum&16 != 0) {
 21434  		goto __11
 21435  	}
 21436  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 21437  __11:
 21438  	;
 21439  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 21440  		goto __12
 21441  	}
 21442  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 21443  __12:
 21444  	;
 21445  __10:
 21446  	;
 21447  	spellfix1ResetCursor(tls, pCur)
 21448  	spellfix1ResizeCursor(tls, pCur, iLimit)
 21449  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21450  	if !(zMatchThis == uintptr(0)) {
 21451  		goto __13
 21452  	}
 21453  	return SQLITE_OK
 21454  __13:
 21455  	;
 21456  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 21457  		goto __14
 21458  	}
 21459  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 21460  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 21461  	if !(pMatchStr3 == uintptr(0)) {
 21462  		goto __16
 21463  	}
 21464  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21465  	goto filter_exit
 21466  __16:
 21467  	;
 21468  	goto __15
 21469  __14:
 21470  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 21471  __15:
 21472  	;
 21473  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21474  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21475  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 21476  	if !(zPattern == uintptr(0)) {
 21477  		goto __17
 21478  	}
 21479  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21480  	goto filter_exit
 21481  __17:
 21482  	;
 21483  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 21484  	if !(int32(*(*int8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 21485  		goto __18
 21486  	}
 21487  	nPattern--
 21488  __18:
 21489  	;
 21490  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21491  		ts+7650,
 21492  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 21493  	if !(zSql == uintptr(0)) {
 21494  		goto __19
 21495  	}
 21496  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21497  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21498  	goto filter_exit
 21499  __19:
 21500  	;
 21501  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 21502  	sqlite3.Xsqlite3_free(tls, zSql)
 21503  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 21504  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 21505  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 21506  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 21507  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 21508  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 21509  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 21510  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 21511  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 21512  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 21513  		goto __20
 21514  	}
 21515  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 21516  __20:
 21517  	;
 21518  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 21519  		goto __21
 21520  	}
 21521  	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 {
 21522  		f func(*libc.TLS, uintptr, uintptr) int32
 21523  	}{spellfix1RowCompare})))
 21524  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 21525  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 21526  	goto __22
 21527  __21:
 21528  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21529  __22:
 21530  	;
 21531  filter_exit:
 21532  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 21533  	editDist3FromStringDelete(tls, pMatchStr3)
 21534  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 21535  }
 21536  
 21537  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21538  	bp := tls.Alloc(24)
 21539  	defer tls.Free(24)
 21540  
 21541  	var rc int32 = SQLITE_OK
 21542  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21543  	var zSql uintptr
 21544  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21545  	spellfix1ResetCursor(tls, pCur)
 21546  
 21547  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21548  		ts+7750,
 21549  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 21550  			func() uintptr {
 21551  				if idxNum&64 != 0 {
 21552  					return ts + 7809
 21553  				}
 21554  				return ts + 584
 21555  			}()))
 21556  	if zSql == uintptr(0) {
 21557  		return SQLITE_NOMEM
 21558  	}
 21559  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 21560  	sqlite3.Xsqlite3_free(tls, zSql)
 21561  	if rc == SQLITE_OK && idxNum&64 != 0 {
 21562  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 21563  	}
 21564  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 21565  	if rc == SQLITE_OK {
 21566  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21567  		if rc == SQLITE_ROW {
 21568  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 21569  			rc = SQLITE_OK
 21570  		}
 21571  		if rc == SQLITE_DONE {
 21572  			rc = SQLITE_OK
 21573  		}
 21574  	} else {
 21575  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21576  	}
 21577  	return rc
 21578  }
 21579  
 21580  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 21581  	var pCur uintptr = cur
 21582  	var rc int32
 21583  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 21584  	if idxNum&1 != 0 {
 21585  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 21586  	} else {
 21587  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 21588  	}
 21589  	return rc
 21590  }
 21591  
 21592  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 21593  	var pCur uintptr = cur
 21594  	var rc int32 = SQLITE_OK
 21595  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 21596  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21597  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21598  			if rc != SQLITE_ROW {
 21599  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21600  			}
 21601  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 21602  				rc = SQLITE_OK
 21603  			}
 21604  		} else {
 21605  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 21606  		}
 21607  	}
 21608  	return rc
 21609  }
 21610  
 21611  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 21612  	var pCur uintptr = cur
 21613  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 21614  }
 21615  
 21616  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 21617  	bp := tls.Alloc(4)
 21618  	defer tls.Free(4)
 21619  
 21620  	var pCur uintptr = cur
 21621  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21622  		if i <= SPELLFIX_COL_LANGID {
 21623  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 21624  		} else {
 21625  			sqlite3.Xsqlite3_result_null(tls, ctx)
 21626  		}
 21627  		return SQLITE_OK
 21628  	}
 21629  	switch i {
 21630  	case SPELLFIX_COL_WORD:
 21631  		{
 21632  			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))
 21633  			break
 21634  
 21635  		}
 21636  	case SPELLFIX_COL_RANK:
 21637  		{
 21638  			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)
 21639  			break
 21640  
 21641  		}
 21642  	case SPELLFIX_COL_DISTANCE:
 21643  		{
 21644  			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)
 21645  			break
 21646  
 21647  		}
 21648  	case SPELLFIX_COL_LANGID:
 21649  		{
 21650  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 21651  			break
 21652  
 21653  		}
 21654  	case SPELLFIX_COL_SCORE:
 21655  		{
 21656  			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)
 21657  			break
 21658  
 21659  		}
 21660  	case SPELLFIX_COL_MATCHLEN:
 21661  		{
 21662  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 21663  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 21664  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 21665  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 21666  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 21667  
 21668  				if nPattern > 0 && int32(*(*int8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 21669  					var zTranslit uintptr
 21670  					var res int32
 21671  					zTranslit = transliterate(tls, zWord, nWord)
 21672  					if !(zTranslit != 0) {
 21673  						return SQLITE_NOMEM
 21674  					}
 21675  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 21676  					sqlite3.Xsqlite3_free(tls, zTranslit)
 21677  					if res < 0 {
 21678  						return SQLITE_NOMEM
 21679  					}
 21680  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 21681  				} else {
 21682  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 21683  				}
 21684  			}
 21685  
 21686  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 21687  			break
 21688  
 21689  		}
 21690  	case SPELLFIX_COL_PHONEHASH:
 21691  		{
 21692  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 21693  			break
 21694  
 21695  		}
 21696  	case SPELLFIX_COL_TOP:
 21697  		{
 21698  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 21699  			break
 21700  
 21701  		}
 21702  	case SPELLFIX_COL_SCOPE:
 21703  		{
 21704  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 21705  			break
 21706  
 21707  		}
 21708  	case SPELLFIX_COL_SRCHCNT:
 21709  		{
 21710  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 21711  			break
 21712  
 21713  		}
 21714  	default:
 21715  		{
 21716  			sqlite3.Xsqlite3_result_null(tls, ctx)
 21717  			break
 21718  
 21719  		}
 21720  	}
 21721  	return SQLITE_OK
 21722  }
 21723  
 21724  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 21725  	var pCur uintptr = cur
 21726  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21727  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 21728  	} else {
 21729  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 21730  	}
 21731  	return SQLITE_OK
 21732  }
 21733  
 21734  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 21735  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 21736  
 21737  	return azConflict[eConflict-1]
 21738  }
 21739  
 21740  var azConflict = [5]uintptr{
 21741  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 21742  }
 21743  
 21744  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 21745  	bp := tls.Alloc(284)
 21746  	defer tls.Free(284)
 21747  
 21748  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 21749  	var rowid sqlite3_int64
 21750  	var newRowid sqlite3_int64
 21751  	var p uintptr = pVTab
 21752  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21753  
 21754  	if argc == 1 {
 21755  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21756  		spellfix1DbExec(tls, bp+280, db,
 21757  			ts+7854,
 21758  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 21759  	} else {
 21760  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 21761  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 21762  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 21763  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 21764  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 21765  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 21766  		var zK1 uintptr
 21767  		var zK2 uintptr
 21768  		var i int32
 21769  		var c int8
 21770  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 21771  
 21772  		if zWord == uintptr(0) {
 21773  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 21774  			if zCmd == uintptr(0) {
 21775  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 21776  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21777  				return SQLITE_CONSTRAINT | int32(5)<<8
 21778  			}
 21779  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 21780  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21781  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 21782  				return SQLITE_OK
 21783  			}
 21784  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 21785  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21786  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 21787  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21788  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 21789  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 21790  					return SQLITE_NOMEM
 21791  				}
 21792  				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 {
 21793  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21794  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 21795  				}
 21796  				return SQLITE_OK
 21797  			}
 21798  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 21799  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 21800  			return SQLITE_ERROR
 21801  		}
 21802  		if iRank < 1 {
 21803  			iRank = 1
 21804  		}
 21805  		if zSoundslike != 0 {
 21806  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 21807  		} else {
 21808  			zK1 = transliterate(tls, zWord, nWord)
 21809  		}
 21810  		if zK1 == uintptr(0) {
 21811  			return SQLITE_NOMEM
 21812  		}
 21813  		for i = 0; int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 21814  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 21815  				*(*int8)(unsafe.Pointer(zK1 + uintptr(i))) += int8('a' - 'A')
 21816  			}
 21817  		}
 21818  		zK2 = phoneticHash(tls, zK1, i)
 21819  		if zK2 == uintptr(0) {
 21820  			sqlite3.Xsqlite3_free(tls, zK1)
 21821  			return SQLITE_NOMEM
 21822  		}
 21823  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 21824  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 21825  				spellfix1DbExec(tls, bp+280, db,
 21826  					ts+7979,
 21827  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 21828  						iRank, iLang, zWord, zK1, zWord, zK2))
 21829  			} else {
 21830  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 21831  				spellfix1DbExec(tls, bp+280, db,
 21832  					ts+8065,
 21833  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 21834  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 21835  			}
 21836  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 21837  		} else {
 21838  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21839  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 21840  			spellfix1DbExec(tls, bp+280, db,
 21841  				ts+8165,
 21842  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 21843  					zWord, zK1, zWord, zK2, rowid))
 21844  		}
 21845  		sqlite3.Xsqlite3_free(tls, zK1)
 21846  		sqlite3.Xsqlite3_free(tls, zK2)
 21847  	}
 21848  	return *(*int32)(unsafe.Pointer(bp + 280))
 21849  }
 21850  
 21851  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 21852  	bp := tls.Alloc(36)
 21853  	defer tls.Free(36)
 21854  
 21855  	var p uintptr = pVTab
 21856  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21857  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 21858  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 21859  	if zNewName == uintptr(0) {
 21860  		return SQLITE_NOMEM
 21861  	}
 21862  	spellfix1DbExec(tls, bp+32, db,
 21863  		ts+8274,
 21864  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 21865  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 21866  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21867  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 21868  	} else {
 21869  		sqlite3.Xsqlite3_free(tls, zNewName)
 21870  	}
 21871  	return *(*int32)(unsafe.Pointer(bp + 32))
 21872  }
 21873  
 21874  var spellfix1Module = sqlite3_module{
 21875  	FxCreate:     0,
 21876  	FxConnect:    0,
 21877  	FxBestIndex:  0,
 21878  	FxDisconnect: 0,
 21879  	FxDestroy:    0,
 21880  	FxOpen:       0,
 21881  	FxClose:      0,
 21882  	FxFilter:     0,
 21883  	FxNext:       0,
 21884  	FxEof:        0,
 21885  	FxColumn:     0,
 21886  	FxRowid:      0,
 21887  	FxUpdate:     0,
 21888  	FxRename:     0,
 21889  }
 21890  
 21891  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 21892  	var rc int32 = SQLITE_OK
 21893  	var i int32
 21894  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 21895  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21896  		*(*uintptr)(unsafe.Pointer(&struct {
 21897  			f func(*libc.TLS, uintptr, int32, uintptr)
 21898  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 21899  	if rc == SQLITE_OK {
 21900  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 21901  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21902  			*(*uintptr)(unsafe.Pointer(&struct {
 21903  				f func(*libc.TLS, uintptr, int32, uintptr)
 21904  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 21905  	}
 21906  	if rc == SQLITE_OK {
 21907  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 21908  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21909  			*(*uintptr)(unsafe.Pointer(&struct {
 21910  				f func(*libc.TLS, uintptr, int32, uintptr)
 21911  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 21912  	}
 21913  	if rc == SQLITE_OK {
 21914  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 21915  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21916  			*(*uintptr)(unsafe.Pointer(&struct {
 21917  				f func(*libc.TLS, uintptr, int32, uintptr)
 21918  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 21919  	}
 21920  	if rc == SQLITE_OK {
 21921  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 21922  	}
 21923  	if rc == SQLITE_OK {
 21924  		rc = editDist3Install(tls, db)
 21925  	}
 21926  
 21927  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 21928  	}
 21929  
 21930  	return rc
 21931  }
 21932  
 21933  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 21934  	_ = pApi
 21935  
 21936  	return spellfix1Register(tls, db)
 21937  	return SQLITE_OK
 21938  }
 21939  
 21940  var totype_one int32 = 1
 21941  
 21942  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 21943  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 21944  }
 21945  
 21946  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 21947  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 21948  }
 21949  
 21950  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 21951  	var c int32 = 0
 21952  	var i int32
 21953  
 21954  	var pow63 uintptr = ts + 8412
 21955  	for i = 0; c == 0 && i < 18; i++ {
 21956  		c = (int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 21957  	}
 21958  	if c == 0 {
 21959  		c = int32(*(*int8)(unsafe.Pointer(zNum + 18))) - '8'
 21960  	}
 21961  	return c
 21962  }
 21963  
 21964  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 21965  	var u sqlite3_uint64 = uint64(0)
 21966  	var neg int32 = 0
 21967  	var i int32
 21968  	var c int32 = 0
 21969  	var nonNum int32 = 0
 21970  	var zStart uintptr
 21971  	var zEnd uintptr = zNum + uintptr(length)
 21972  
 21973  	for zNum < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(zNum)))) != 0 {
 21974  		zNum++
 21975  	}
 21976  	if zNum < zEnd {
 21977  		if int32(*(*int8)(unsafe.Pointer(zNum))) == '-' {
 21978  			neg = 1
 21979  			zNum++
 21980  		} else if int32(*(*int8)(unsafe.Pointer(zNum))) == '+' {
 21981  			zNum++
 21982  		}
 21983  	}
 21984  	zStart = zNum
 21985  	for zNum < zEnd && int32(*(*int8)(unsafe.Pointer(zNum))) == '0' {
 21986  		zNum++
 21987  	}
 21988  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 21989  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 21990  	}
 21991  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 21992  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 21993  	} else if neg != 0 {
 21994  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 21995  	} else {
 21996  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 21997  	}
 21998  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 21999  		return 1
 22000  	} else if i < 19 {
 22001  		return 0
 22002  	} else {
 22003  		c = totypeCompare2pow63(tls, zNum)
 22004  		if c < 0 {
 22005  			return 0
 22006  		} else if c > 0 {
 22007  			return 1
 22008  		} else {
 22009  			if neg != 0 {
 22010  				return 0
 22011  			}
 22012  			return 2
 22013  		}
 22014  	}
 22015  	return int32(0)
 22016  }
 22017  
 22018  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 22019  	var zEnd uintptr
 22020  
 22021  	var sign int32
 22022  	var s sqlite3_int64
 22023  	var d int32
 22024  	var esign int32
 22025  	var e int32
 22026  	var eValid int32
 22027  	var result float64
 22028  	var nDigits int32
 22029  	var nonNum int32
 22030  	var scale float64
 22031  	zEnd = z + uintptr(length)
 22032  	sign = 1
 22033  	s = int64(0)
 22034  	d = 0
 22035  	esign = 1
 22036  	e = 0
 22037  	eValid = 1
 22038  	nDigits = 0
 22039  	nonNum = 0
 22040  
 22041  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 22042  
 22043  __1:
 22044  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22045  		goto __2
 22046  	}
 22047  	z++
 22048  	goto __1
 22049  __2:
 22050  	;
 22051  	if !(z >= zEnd) {
 22052  		goto __3
 22053  	}
 22054  	return 0
 22055  __3:
 22056  	;
 22057  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22058  		goto __4
 22059  	}
 22060  	sign = -1
 22061  	z++
 22062  	goto __5
 22063  __4:
 22064  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22065  		goto __6
 22066  	}
 22067  	z++
 22068  __6:
 22069  	;
 22070  __5:
 22071  	;
 22072  __7:
 22073  	if !(z < zEnd && int32(*(*int8)(unsafe.Pointer(z))) == '0') {
 22074  		goto __8
 22075  	}
 22076  	z++
 22077  	nDigits++
 22078  	goto __7
 22079  __8:
 22080  	;
 22081  __9:
 22082  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22083  		goto __10
 22084  	}
 22085  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22086  	z++
 22087  	nDigits++
 22088  	goto __9
 22089  __10:
 22090  	;
 22091  __11:
 22092  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22093  		goto __12
 22094  	}
 22095  	z++
 22096  	nDigits++
 22097  	d++
 22098  	goto __11
 22099  __12:
 22100  	;
 22101  	if !(z >= zEnd) {
 22102  		goto __13
 22103  	}
 22104  	goto totype_atof_calc
 22105  __13:
 22106  	;
 22107  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '.') {
 22108  		goto __14
 22109  	}
 22110  	z++
 22111  
 22112  __15:
 22113  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22114  		goto __16
 22115  	}
 22116  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22117  	z++
 22118  	nDigits++
 22119  	d--
 22120  	goto __15
 22121  __16:
 22122  	;
 22123  __17:
 22124  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22125  		goto __18
 22126  	}
 22127  	z++
 22128  	nDigits++
 22129  	goto __17
 22130  __18:
 22131  	;
 22132  __14:
 22133  	;
 22134  	if !(z >= zEnd) {
 22135  		goto __19
 22136  	}
 22137  	goto totype_atof_calc
 22138  __19:
 22139  	;
 22140  	if !(int32(*(*int8)(unsafe.Pointer(z))) == 'e' || int32(*(*int8)(unsafe.Pointer(z))) == 'E') {
 22141  		goto __20
 22142  	}
 22143  	z++
 22144  	eValid = 0
 22145  	if !(z >= zEnd) {
 22146  		goto __21
 22147  	}
 22148  	goto totype_atof_calc
 22149  __21:
 22150  	;
 22151  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22152  		goto __22
 22153  	}
 22154  	esign = -1
 22155  	z++
 22156  	goto __23
 22157  __22:
 22158  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22159  		goto __24
 22160  	}
 22161  	z++
 22162  __24:
 22163  	;
 22164  __23:
 22165  	;
 22166  __25:
 22167  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22168  		goto __26
 22169  	}
 22170  	if e < 10000 {
 22171  		e = e*10 + (int32(*(*int8)(unsafe.Pointer(z))) - '0')
 22172  	} else {
 22173  		e = 10000
 22174  	}
 22175  	z++
 22176  	eValid = 1
 22177  	goto __25
 22178  __26:
 22179  	;
 22180  __20:
 22181  	;
 22182  	if !(nDigits != 0 && eValid != 0) {
 22183  		goto __27
 22184  	}
 22185  __28:
 22186  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22187  		goto __29
 22188  	}
 22189  	z++
 22190  	goto __28
 22191  __29:
 22192  	;
 22193  __27:
 22194  	;
 22195  totype_atof_calc:
 22196  	e = e*esign + d
 22197  	if !(e < 0) {
 22198  		goto __30
 22199  	}
 22200  	esign = -1
 22201  	e = e * -1
 22202  	goto __31
 22203  __30:
 22204  	esign = 1
 22205  __31:
 22206  	;
 22207  	if !!(s != 0) {
 22208  		goto __32
 22209  	}
 22210  
 22211  	if sign < 0 && nDigits != 0 {
 22212  		result = -libc.Float64FromFloat64(float64(0))
 22213  	} else {
 22214  		result = float64(0)
 22215  	}
 22216  	goto __33
 22217  __32:
 22218  	if !(esign > 0) {
 22219  		goto __34
 22220  	}
 22221  __36:
 22222  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 22223  		goto __37
 22224  	}
 22225  	e--
 22226  	s = s * int64(10)
 22227  	goto __36
 22228  __37:
 22229  	;
 22230  	goto __35
 22231  __34:
 22232  __38:
 22233  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 22234  		goto __39
 22235  	}
 22236  	e--
 22237  	s = s / int64(10)
 22238  	goto __38
 22239  __39:
 22240  	;
 22241  __35:
 22242  	;
 22243  	if sign < 0 {
 22244  		s = -s
 22245  	} else {
 22246  		s = s
 22247  	}
 22248  
 22249  	if !(e != 0) {
 22250  		goto __40
 22251  	}
 22252  	scale = 1.0
 22253  
 22254  	if !(e > 307 && e < 342) {
 22255  		goto __42
 22256  	}
 22257  __44:
 22258  	if !(e%308 != 0) {
 22259  		goto __45
 22260  	}
 22261  	scale = scale * 1.0e+1
 22262  	e = e - 1
 22263  	goto __44
 22264  __45:
 22265  	;
 22266  	if !(esign < 0) {
 22267  		goto __46
 22268  	}
 22269  	result = float64(s) / scale
 22270  	result = result / 1.0e+308
 22271  	goto __47
 22272  __46:
 22273  	result = float64(s) * scale
 22274  	result = result * 1.0e+308
 22275  __47:
 22276  	;
 22277  	goto __43
 22278  __42:
 22279  	if !(e >= 342) {
 22280  		goto __48
 22281  	}
 22282  	if !(esign < 0) {
 22283  		goto __50
 22284  	}
 22285  	result = 0.0 * float64(s)
 22286  	goto __51
 22287  __50:
 22288  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 22289  __51:
 22290  	;
 22291  	goto __49
 22292  __48:
 22293  __52:
 22294  	if !(e%22 != 0) {
 22295  		goto __53
 22296  	}
 22297  	scale = scale * 1.0e+1
 22298  	e = e - 1
 22299  	goto __52
 22300  __53:
 22301  	;
 22302  __54:
 22303  	if !(e > 0) {
 22304  		goto __55
 22305  	}
 22306  	scale = scale * 1.0e+22
 22307  	e = e - 22
 22308  	goto __54
 22309  __55:
 22310  	;
 22311  	if !(esign < 0) {
 22312  		goto __56
 22313  	}
 22314  	result = float64(s) / scale
 22315  	goto __57
 22316  __56:
 22317  	result = float64(s) * scale
 22318  __57:
 22319  	;
 22320  __49:
 22321  	;
 22322  __43:
 22323  	;
 22324  	goto __41
 22325  __40:
 22326  	result = float64(s)
 22327  __41:
 22328  	;
 22329  __33:
 22330  	;
 22331  	*(*float64)(unsafe.Pointer(pResult)) = result
 22332  
 22333  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 22334  }
 22335  
 22336  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22337  	bp := tls.Alloc(24)
 22338  	defer tls.Free(24)
 22339  
 22340  	_ = argc
 22341  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22342  	case SQLITE_FLOAT:
 22343  		{
 22344  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22345  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 22346  			if rVal == float64(iVal) {
 22347  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 22348  			}
 22349  			break
 22350  
 22351  		}
 22352  	case SQLITE_INTEGER:
 22353  		{
 22354  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22355  			break
 22356  
 22357  		}
 22358  	case SQLITE_BLOB:
 22359  		{
 22360  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22361  			if zBlob != 0 {
 22362  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22363  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 22364  					if int32(*(*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 0 {
 22365  						var i int32
 22366  
 22367  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 22368  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 22369  						}
 22370  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22371  					} else {
 22372  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22373  					}
 22374  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 22375  				}
 22376  			}
 22377  			break
 22378  
 22379  		}
 22380  	case SQLITE_TEXT:
 22381  		{
 22382  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22383  			if zStr != 0 {
 22384  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22385  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 22386  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 22387  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 22388  					}
 22389  				}
 22390  			}
 22391  			break
 22392  
 22393  		}
 22394  	default:
 22395  		{
 22396  			break
 22397  
 22398  		}
 22399  	}
 22400  }
 22401  
 22402  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22403  	bp := tls.Alloc(24)
 22404  	defer tls.Free(24)
 22405  
 22406  	_ = argc
 22407  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22408  	case SQLITE_FLOAT:
 22409  		{
 22410  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22411  			break
 22412  
 22413  		}
 22414  	case SQLITE_INTEGER:
 22415  		{
 22416  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22417  			var rVal float64 = float64(iVal)
 22418  			if iVal == sqlite3_int64(rVal) {
 22419  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 22420  			}
 22421  			break
 22422  
 22423  		}
 22424  	case SQLITE_BLOB:
 22425  		{
 22426  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22427  			if zBlob != 0 {
 22428  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22429  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 22430  					if int32(*(*int8)(unsafe.Pointer(uintptr(unsafe.Pointer(&totype_one))))) == 1 {
 22431  						var i int32
 22432  
 22433  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 22434  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 22435  						}
 22436  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))))
 22437  					} else {
 22438  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))))
 22439  					}
 22440  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 22441  				}
 22442  			}
 22443  			break
 22444  
 22445  		}
 22446  	case SQLITE_TEXT:
 22447  		{
 22448  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22449  			if zStr != 0 {
 22450  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22451  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 22452  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 22453  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 22454  						return
 22455  					}
 22456  				}
 22457  			}
 22458  			break
 22459  
 22460  		}
 22461  	default:
 22462  		{
 22463  			break
 22464  
 22465  		}
 22466  	}
 22467  }
 22468  
 22469  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22470  	var rc int32 = SQLITE_OK
 22471  	_ = pApi
 22472  
 22473  	_ = pzErrMsg
 22474  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 22475  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22476  		*(*uintptr)(unsafe.Pointer(&struct {
 22477  			f func(*libc.TLS, uintptr, int32, uintptr)
 22478  		}{tointegerFunc})), uintptr(0), uintptr(0))
 22479  	if rc == SQLITE_OK {
 22480  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 22481  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22482  			*(*uintptr)(unsafe.Pointer(&struct {
 22483  				f func(*libc.TLS, uintptr, int32, uintptr)
 22484  			}{torealFunc})), uintptr(0), uintptr(0))
 22485  	}
 22486  	return rc
 22487  }
 22488  
 22489  type UnionCsr1 = struct {
 22490  	Fbase        sqlite3_vtab_cursor
 22491  	FpStmt       uintptr
 22492  	FiMaxRowid   sqlite3_int64
 22493  	FiTab        int32
 22494  	F__ccgo_pad1 [4]byte
 22495  }
 22496  
 22497  type UnionCsr = UnionCsr1
 22498  type UnionTab1 = struct {
 22499  	Fbase        sqlite3_vtab
 22500  	Fdb          uintptr
 22501  	FbSwarm      int32
 22502  	FiPK         int32
 22503  	FnSrc        int32
 22504  	F__ccgo_pad1 [4]byte
 22505  	FaSrc        uintptr
 22506  	FbHasContext int32
 22507  	F__ccgo_pad2 [4]byte
 22508  	FzSourceStr  uintptr
 22509  	FpNotFound   uintptr
 22510  	FpOpenClose  uintptr
 22511  	FpClosable   uintptr
 22512  	FnOpen       int32
 22513  	FnMaxOpen    int32
 22514  }
 22515  
 22516  type UnionTab = UnionTab1
 22517  type UnionSrc1 = struct {
 22518  	FzDb           uintptr
 22519  	FzTab          uintptr
 22520  	FiMin          sqlite3_int64
 22521  	FiMax          sqlite3_int64
 22522  	FzFile         uintptr
 22523  	FzContext      uintptr
 22524  	FnUser         int32
 22525  	F__ccgo_pad1   [4]byte
 22526  	Fdb            uintptr
 22527  	FpNextClosable uintptr
 22528  }
 22529  
 22530  type UnionSrc = UnionSrc1
 22531  
 22532  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 22533  	var pRet uintptr
 22534  
 22535  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22536  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 22537  		if pRet != 0 {
 22538  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 22539  		} else {
 22540  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 22541  		}
 22542  	} else {
 22543  		pRet = uintptr(0)
 22544  	}
 22545  	return pRet
 22546  }
 22547  
 22548  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 22549  	var zRet uintptr = uintptr(0)
 22550  	if zIn != 0 {
 22551  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 22552  		zRet = unionMalloc(tls, pRc, nByte)
 22553  		if zRet != 0 {
 22554  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 22555  		}
 22556  	}
 22557  	return zRet
 22558  }
 22559  
 22560  func unionDequote(tls *libc.TLS, z uintptr) {
 22561  	if z != 0 {
 22562  		var q int8 = *(*int8)(unsafe.Pointer(z))
 22563  
 22564  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 22565  			var iIn int32 = 1
 22566  			var iOut int32 = 0
 22567  			if int32(q) == '[' {
 22568  				q = int8(']')
 22569  			}
 22570  			for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 22571  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 22572  					if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 22573  						iIn++
 22574  						break
 22575  					} else {
 22576  						iIn = iIn + 2
 22577  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 22578  					}
 22579  				} else {
 22580  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 22581  				}
 22582  			}
 22583  			*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 22584  		}
 22585  	}
 22586  }
 22587  
 22588  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 22589  	bp := tls.Alloc(16)
 22590  	defer tls.Free(16)
 22591  
 22592  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 22593  
 22594  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22595  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 22596  		if rc != SQLITE_OK {
 22597  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 22598  			*(*int32)(unsafe.Pointer(pRc)) = rc
 22599  		}
 22600  	}
 22601  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 22602  }
 22603  
 22604  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 22605  	var pRet uintptr = uintptr(0)
 22606  	var zSql uintptr
 22607  	var ap va_list
 22608  	_ = ap
 22609  	ap = va
 22610  
 22611  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 22612  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22613  		if zSql == uintptr(0) {
 22614  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 22615  		} else {
 22616  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 22617  		}
 22618  	}
 22619  	sqlite3.Xsqlite3_free(tls, zSql)
 22620  
 22621  	_ = ap
 22622  	return pRet
 22623  }
 22624  
 22625  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 22626  	bp := tls.Alloc(8)
 22627  	defer tls.Free(8)
 22628  
 22629  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 22630  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 22631  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22632  		*(*int32)(unsafe.Pointer(pRc)) = rc
 22633  		if rc != 0 {
 22634  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 22635  		}
 22636  	}
 22637  }
 22638  
 22639  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 22640  	bp := tls.Alloc(8)
 22641  	defer tls.Free(8)
 22642  
 22643  	var rc int32 = SQLITE_OK
 22644  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 22645  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 22646  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22647  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 22648  		}
 22649  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 22650  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 22651  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 22652  			if pzErr != 0 {
 22653  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 22654  			}
 22655  		}
 22656  	}
 22657  	return rc
 22658  }
 22659  
 22660  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 22661  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 22662  		var p uintptr
 22663  		var pp uintptr
 22664  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 22665  		}
 22666  		p = *(*uintptr)(unsafe.Pointer(pp))
 22667  
 22668  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 22669  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 22670  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 22671  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 22672  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 22673  	}
 22674  }
 22675  
 22676  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 22677  	if pVtab != 0 {
 22678  		var pTab uintptr = pVtab
 22679  		var i int32
 22680  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 22681  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 22682  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 22683  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22684  			if bHaveSrcDb != 0 {
 22685  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 22686  			}
 22687  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 22688  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 22689  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 22690  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 22691  		}
 22692  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 22693  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 22694  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 22695  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 22696  		sqlite3.Xsqlite3_free(tls, pTab)
 22697  	}
 22698  	return SQLITE_OK
 22699  }
 22700  
 22701  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 22702  	bp := tls.Alloc(36)
 22703  	defer tls.Free(36)
 22704  
 22705  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 22706  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 22707  	var rc int32
 22708  
 22709  	sqlite3.Xsqlite3_table_column_metadata(tls,
 22710  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 22711  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 22712  	if rc == SQLITE_ERROR ||
 22713  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 22714  		rc = SQLITE_ERROR
 22715  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 22716  			libc.VaList(bp, func() uintptr {
 22717  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 22718  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 22719  				}
 22720  				return ts + 584
 22721  			}(),
 22722  				func() uintptr {
 22723  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 22724  						return ts + 8506
 22725  					}
 22726  					return ts + 584
 22727  				}(),
 22728  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 22729  	}
 22730  	return rc
 22731  }
 22732  
 22733  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 22734  	bp := tls.Alloc(4)
 22735  	defer tls.Free(4)
 22736  
 22737  	var zRet uintptr = uintptr(0)
 22738  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22739  		var db uintptr = func() uintptr {
 22740  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22741  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 22742  			}
 22743  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 22744  		}()
 22745  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 22746  		var pStmt uintptr = unionPrepare(tls, bp, db,
 22747  			ts+8508, pzErr)
 22748  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22749  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 22750  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 22751  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 22752  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 22753  				zRet = unionStrdup(tls, bp, z)
 22754  			}
 22755  			unionFinalize(tls, bp, pStmt, pzErr)
 22756  		}
 22757  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 22758  	}
 22759  
 22760  	return zRet
 22761  }
 22762  
 22763  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 22764  	bp := tls.Alloc(4)
 22765  	defer tls.Free(4)
 22766  
 22767  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 22768  	var z0 uintptr = uintptr(0)
 22769  	var i int32
 22770  
 22771  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 22772  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 22773  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 22774  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 22775  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 22776  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 22777  		}
 22778  		sqlite3.Xsqlite3_free(tls, z)
 22779  	}
 22780  	sqlite3.Xsqlite3_free(tls, z0)
 22781  
 22782  	return *(*int32)(unsafe.Pointer(bp))
 22783  }
 22784  
 22785  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 22786  	bp := tls.Alloc(16)
 22787  	defer tls.Free(16)
 22788  
 22789  	var rc int32
 22790  
 22791  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 22792  	if rc != SQLITE_OK {
 22793  		return rc
 22794  	}
 22795  
 22796  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 22797  	if rc == SQLITE_OK {
 22798  		return rc
 22799  	}
 22800  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 22801  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22802  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 22803  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 22804  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22805  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 22806  		}
 22807  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 22808  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 22809  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 22810  			return rc
 22811  		}
 22812  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 22813  	}
 22814  	if rc != SQLITE_OK {
 22815  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 22816  	}
 22817  	return rc
 22818  }
 22819  
 22820  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 22821  
 22822  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 22823  	bp := tls.Alloc(4)
 22824  	defer tls.Free(4)
 22825  
 22826  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 22827  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 22828  
 22829  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 22830  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 22831  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 22832  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22833  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 22834  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22835  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 22836  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 22837  				} else {
 22838  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 22839  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 22840  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 22841  					}
 22842  					sqlite3.Xsqlite3_free(tls, z)
 22843  				}
 22844  			}
 22845  		}
 22846  
 22847  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22848  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 22849  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 22850  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 22851  		} else {
 22852  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22853  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 22854  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 22855  		}
 22856  	}
 22857  
 22858  	return *(*int32)(unsafe.Pointer(bp))
 22859  }
 22860  
 22861  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 22862  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22863  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 22864  
 22865  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 22866  			var pp uintptr
 22867  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 22868  			}
 22869  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 22870  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 22871  		}
 22872  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 22873  	}
 22874  }
 22875  
 22876  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 22877  	var rc int32 = SQLITE_OK
 22878  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 22879  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 22880  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 22881  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 22882  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 22883  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22884  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 22885  
 22886  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 22887  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 22888  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 22889  			}
 22890  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 22891  		}
 22892  	}
 22893  	return rc
 22894  }
 22895  
 22896  func union_isspace(tls *libc.TLS, c int8) int32 {
 22897  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 22898  }
 22899  
 22900  func union_isidchar(tls *libc.TLS, c int8) int32 {
 22901  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 22902  }
 22903  
 22904  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 22905  	bp := tls.Alloc(68)
 22906  	defer tls.Free(68)
 22907  
 22908  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 22909  	var i int32
 22910  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 22911  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 22912  	}
 22913  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 22914  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 22915  		if zArg != 0 {
 22916  			var nOpt int32 = 0
 22917  			var zOpt uintptr
 22918  			var zVal uintptr
 22919  
 22920  			unionDequote(tls, zArg)
 22921  			zOpt = zArg
 22922  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zOpt))) != 0 {
 22923  				zOpt++
 22924  			}
 22925  			zVal = zOpt
 22926  			if int32(*(*int8)(unsafe.Pointer(zVal))) == ':' {
 22927  				zVal++
 22928  			}
 22929  			for union_isidchar(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22930  				zVal++
 22931  			}
 22932  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 22933  
 22934  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22935  				zVal++
 22936  			}
 22937  			if int32(*(*int8)(unsafe.Pointer(zVal))) == '=' {
 22938  				*(*int8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = int8(0)
 22939  				zVal++
 22940  				for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22941  					zVal++
 22942  				}
 22943  				zVal = unionStrdup(tls, bp+64, zVal)
 22944  				if zVal != 0 {
 22945  					unionDequote(tls, zVal)
 22946  					if int32(*(*int8)(unsafe.Pointer(zOpt))) == ':' {
 22947  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 22948  						if iParam == 0 {
 22949  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22950  								ts+8621, libc.VaList(bp, zOpt))
 22951  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22952  						} else {
 22953  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 22954  						}
 22955  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 22956  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 22957  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 22958  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 22959  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22960  						}
 22961  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 22962  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 22963  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22964  								ts+8707, 0)
 22965  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22966  						} else {
 22967  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22968  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 22969  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22970  										return ts + 8762
 22971  									}
 22972  									return ts + 584
 22973  								}()))
 22974  						}
 22975  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 22976  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 22977  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22978  								ts+8775, 0)
 22979  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22980  						} else {
 22981  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22982  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 22983  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22984  										return ts + 8762
 22985  									}
 22986  									return ts + 584
 22987  								}()))
 22988  						}
 22989  					} else {
 22990  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 22991  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22992  					}
 22993  					sqlite3.Xsqlite3_free(tls, zVal)
 22994  				}
 22995  			} else {
 22996  				if i == 0 && nArg == 1 {
 22997  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22998  						ts+8869, libc.VaList(bp+48, zArg))
 22999  				} else {
 23000  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 23001  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23002  				}
 23003  			}
 23004  			sqlite3.Xsqlite3_free(tls, zArg)
 23005  		}
 23006  	}
 23007  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23008  }
 23009  
 23010  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23011  	bp := tls.Alloc(44)
 23012  	defer tls.Free(44)
 23013  
 23014  	var pTab uintptr = uintptr(0)
 23015  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23016  	var bSwarm int32 = func() int32 {
 23017  		if pAux == uintptr(0) {
 23018  			return 0
 23019  		}
 23020  		return 1
 23021  	}()
 23022  	var zVtab uintptr = func() uintptr {
 23023  		if bSwarm != 0 {
 23024  			return ts + 8911
 23025  		}
 23026  		return ts + 8921
 23027  	}()
 23028  
 23029  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 23030  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 23031  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23032  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 23033  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 23034  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23035  	} else {
 23036  		var nAlloc int32 = 0
 23037  		var pStmt uintptr = uintptr(0)
 23038  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 23039  
 23040  		unionDequote(tls, zArg)
 23041  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 23042  			ts+9010, libc.VaList(bp+16, zArg))
 23043  
 23044  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 23045  		if pTab != 0 {
 23046  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 23047  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 23048  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 23049  		}
 23050  
 23051  		if bSwarm != 0 {
 23052  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 23053  		}
 23054  
 23055  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23056  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23057  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 23058  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 23059  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 23060  			var pSrc uintptr
 23061  
 23062  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23063  				var nNew int32
 23064  				if nAlloc != 0 {
 23065  					nNew = nAlloc * 2
 23066  				} else {
 23067  					nNew = 8
 23068  				}
 23069  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 23070  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 23071  				if aNew == uintptr(0) {
 23072  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 23073  					break
 23074  				} else {
 23075  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})))
 23076  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 23077  					nAlloc = nNew
 23078  				}
 23079  			}
 23080  
 23081  			if iMax < iMin || (*UnionTab)(unsafe.Pointer(pTab)).FnSrc > 0 && iMin <= (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc-1)*72)).FiMax {
 23082  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 23083  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23084  			}
 23085  
 23086  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23087  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 23088  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 23089  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 23090  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 23091  				if bSwarm != 0 {
 23092  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 23093  				} else {
 23094  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 23095  				}
 23096  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23097  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 23098  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 23099  				}
 23100  			}
 23101  		}
 23102  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23103  		pStmt = uintptr(0)
 23104  
 23105  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 23106  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 23107  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23108  		}
 23109  
 23110  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23111  			if bSwarm != 0 {
 23112  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 23113  			} else {
 23114  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 23115  			}
 23116  		}
 23117  
 23118  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23119  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 23120  			var tdb uintptr = func() uintptr {
 23121  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23122  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23123  				}
 23124  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23125  			}()
 23126  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 23127  				ts+9095,
 23128  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 23129  		}
 23130  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23131  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23132  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 23133  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 23134  		}
 23135  
 23136  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23137  	}
 23138  
 23139  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 23140  		unionDisconnect(tls, pTab)
 23141  		pTab = uintptr(0)
 23142  	}
 23143  
 23144  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 23145  	return *(*int32)(unsafe.Pointer(bp + 40))
 23146  }
 23147  
 23148  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23149  	bp := tls.Alloc(4)
 23150  	defer tls.Free(4)
 23151  
 23152  	var pCsr uintptr
 23153  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23154  	_ = p
 23155  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 23156  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 23157  	return *(*int32)(unsafe.Pointer(bp))
 23158  }
 23159  
 23160  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 23161  	var pCsr uintptr = cur
 23162  	unionFinalizeCsrStmt(tls, pCsr)
 23163  	sqlite3.Xsqlite3_free(tls, pCsr)
 23164  	return SQLITE_OK
 23165  }
 23166  
 23167  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 23168  	bp := tls.Alloc(28)
 23169  	defer tls.Free(28)
 23170  
 23171  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 23172  
 23173  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 23174  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23175  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 23176  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23177  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 23178  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23179  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23180  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23181  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 23182  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 23183  						ts+9273,
 23184  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 23185  							func() uintptr {
 23186  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 23187  									return ts + 9305
 23188  								}
 23189  								return ts + 9322
 23190  							}(),
 23191  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 23192  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 23193  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23194  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 23195  					}
 23196  				}
 23197  			}
 23198  		}
 23199  	}
 23200  
 23201  	return *(*int32)(unsafe.Pointer(bp + 24))
 23202  }
 23203  
 23204  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 23205  	var rc int32
 23206  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 23207  		rc = doUnionNext(tls, cur)
 23208  	}
 23209  	return rc
 23210  }
 23211  
 23212  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23213  	var pCsr uintptr = cur
 23214  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 23215  	return SQLITE_OK
 23216  }
 23217  
 23218  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23219  	var pCsr uintptr = cur
 23220  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 23221  	return SQLITE_OK
 23222  }
 23223  
 23224  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 23225  	var pCsr uintptr = cur
 23226  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 23227  }
 23228  
 23229  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23230  	bp := tls.Alloc(108)
 23231  	defer tls.Free(108)
 23232  
 23233  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 23234  	var pCsr uintptr = pVtabCursor
 23235  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 23236  	var i int32
 23237  	var zSql uintptr = uintptr(0)
 23238  	var bZero int32 = 0
 23239  
 23240  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 23241  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 23242  
 23243  	_ = idxStr
 23244  
 23245  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 23246  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23247  	} else {
 23248  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 23249  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23250  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 23251  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 23252  					bZero = 1
 23253  				} else {
 23254  					iMax--
 23255  				}
 23256  			}
 23257  		}
 23258  
 23259  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 23260  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 23261  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 23262  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 23263  					bZero = 1
 23264  				} else {
 23265  					iMin++
 23266  				}
 23267  			}
 23268  		}
 23269  	}
 23270  
 23271  	unionFinalizeCsrStmt(tls, pCsr)
 23272  	if bZero != 0 {
 23273  		return SQLITE_OK
 23274  	}
 23275  
 23276  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23277  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23278  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23279  			continue
 23280  		}
 23281  
 23282  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 23283  			if zSql != 0 {
 23284  				return ts + 9360
 23285  			}
 23286  			return ts + 584
 23287  		}(), func() uintptr {
 23288  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23289  				return ts + 5624
 23290  			}
 23291  			return ts + 584
 23292  		}(), func() uintptr {
 23293  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23294  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23295  			}
 23296  			return ts + 584
 23297  		}(), func() uintptr {
 23298  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23299  				return ts + 5626
 23300  			}
 23301  			return ts + 584
 23302  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23303  		if zSql == uintptr(0) {
 23304  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 23305  			break
 23306  		}
 23307  
 23308  		if iMin == iMax {
 23309  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 23310  		} else {
 23311  			var zWhere uintptr = ts + 9392
 23312  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23313  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 23314  				zWhere = ts + 9419
 23315  			}
 23316  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 23317  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 23318  			}
 23319  		}
 23320  
 23321  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23322  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 23323  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 23324  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 23325  			break
 23326  		}
 23327  	}
 23328  
 23329  	if zSql == uintptr(0) {
 23330  		return *(*int32)(unsafe.Pointer(bp + 104))
 23331  	} else {
 23332  		var db uintptr = func() uintptr {
 23333  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23334  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 23335  			}
 23336  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23337  		}()
 23338  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 23339  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23340  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23341  		}
 23342  		sqlite3.Xsqlite3_free(tls, zSql)
 23343  	}
 23344  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 23345  		return *(*int32)(unsafe.Pointer(bp + 104))
 23346  	}
 23347  	return unionNext(tls, pVtabCursor)
 23348  }
 23349  
 23350  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23351  	var pTab uintptr = tab
 23352  	var iEq int32 = -1
 23353  	var iLt int32 = -1
 23354  	var iGt int32 = -1
 23355  	var i int32
 23356  
 23357  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 23358  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 23359  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && ((*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn < 0 || (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn == (*UnionTab)(unsafe.Pointer(pTab)).FiPK) {
 23360  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 23361  			case SQLITE_INDEX_CONSTRAINT_EQ:
 23362  				iEq = i
 23363  				break
 23364  				fallthrough
 23365  			case SQLITE_INDEX_CONSTRAINT_LE:
 23366  				fallthrough
 23367  			case SQLITE_INDEX_CONSTRAINT_LT:
 23368  				iLt = i
 23369  				break
 23370  				fallthrough
 23371  			case SQLITE_INDEX_CONSTRAINT_GE:
 23372  				fallthrough
 23373  			case SQLITE_INDEX_CONSTRAINT_GT:
 23374  				iGt = i
 23375  				break
 23376  			}
 23377  		}
 23378  	}
 23379  
 23380  	if iEq >= 0 {
 23381  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 23382  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 23383  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 23384  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 23385  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 23386  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 23387  	} else {
 23388  		var iCons int32 = 1
 23389  		var idxNum int32 = 0
 23390  		var nRow sqlite3_int64 = int64(1000000)
 23391  		if iLt >= 0 {
 23392  			nRow = nRow / int64(2)
 23393  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23394  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 23395  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 23396  		}
 23397  		if iGt >= 0 {
 23398  			nRow = nRow / int64(2)
 23399  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23400  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 23401  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 23402  		}
 23403  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 23404  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 23405  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23406  	}
 23407  
 23408  	return SQLITE_OK
 23409  }
 23410  
 23411  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 23412  	var rc int32
 23413  
 23414  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 23415  	if rc == SQLITE_OK {
 23416  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 23417  	}
 23418  	return rc
 23419  }
 23420  
 23421  var unionModule = sqlite3_module{
 23422  	FxCreate:     0,
 23423  	FxConnect:    0,
 23424  	FxBestIndex:  0,
 23425  	FxDisconnect: 0,
 23426  	FxDestroy:    0,
 23427  	FxOpen:       0,
 23428  	FxClose:      0,
 23429  	FxFilter:     0,
 23430  	FxNext:       0,
 23431  	FxEof:        0,
 23432  	FxColumn:     0,
 23433  	FxRowid:      0,
 23434  }
 23435  
 23436  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23437  	var rc int32 = SQLITE_OK
 23438  	_ = pApi
 23439  
 23440  	_ = pzErrMsg
 23441  	rc = createUnionVtab(tls, db)
 23442  	return rc
 23443  }
 23444  
 23445  type wholenumber_cursor1 = struct {
 23446  	Fbase    sqlite3_vtab_cursor
 23447  	FiValue  sqlite3_int64
 23448  	FmxValue sqlite3_int64
 23449  }
 23450  
 23451  type wholenumber_cursor = wholenumber_cursor1
 23452  
 23453  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23454  	var pNew uintptr
 23455  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 23456  	if pNew == uintptr(0) {
 23457  		return SQLITE_NOMEM
 23458  	}
 23459  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 23460  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 23461  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 23462  	return SQLITE_OK
 23463  }
 23464  
 23465  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23466  	sqlite3.Xsqlite3_free(tls, pVtab)
 23467  	return SQLITE_OK
 23468  }
 23469  
 23470  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23471  	var pCur uintptr
 23472  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 23473  	if pCur == uintptr(0) {
 23474  		return SQLITE_NOMEM
 23475  	}
 23476  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})))
 23477  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 23478  	return SQLITE_OK
 23479  }
 23480  
 23481  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 23482  	sqlite3.Xsqlite3_free(tls, cur)
 23483  	return SQLITE_OK
 23484  }
 23485  
 23486  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 23487  	var pCur uintptr = cur
 23488  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 23489  	return SQLITE_OK
 23490  }
 23491  
 23492  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23493  	var pCur uintptr = cur
 23494  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 23495  	return SQLITE_OK
 23496  }
 23497  
 23498  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23499  	var pCur uintptr = cur
 23500  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 23501  	return SQLITE_OK
 23502  }
 23503  
 23504  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 23505  	var pCur uintptr = cur
 23506  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 23507  }
 23508  
 23509  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23510  	var pCur uintptr = pVtabCursor
 23511  	var v sqlite3_int64
 23512  	var i int32 = 0
 23513  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 23514  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 23515  	if idxNum&3 != 0 {
 23516  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 23517  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23518  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 23519  		}
 23520  		i++
 23521  	}
 23522  	if idxNum&12 != 0 {
 23523  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 23524  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23525  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 23526  		}
 23527  	}
 23528  	return SQLITE_OK
 23529  }
 23530  
 23531  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23532  	var i int32
 23533  	var idxNum int32 = 0
 23534  	var argvIdx int32 = 1
 23535  	var ltIdx int32 = -1
 23536  	var gtIdx int32 = -1
 23537  	var pConstraint uintptr
 23538  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 23539  	i = 0
 23540  __1:
 23541  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 23542  		goto __3
 23543  	}
 23544  	{
 23545  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 23546  			goto __2
 23547  		}
 23548  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 23549  			idxNum = idxNum | 1
 23550  			ltIdx = i
 23551  		}
 23552  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 23553  			idxNum = idxNum | 2
 23554  			ltIdx = i
 23555  		}
 23556  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 23557  			idxNum = idxNum | 4
 23558  			gtIdx = i
 23559  		}
 23560  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 23561  			idxNum = idxNum | 8
 23562  			gtIdx = i
 23563  		}
 23564  
 23565  	}
 23566  	goto __2
 23567  __2:
 23568  	i++
 23569  	pConstraint += 12
 23570  	goto __1
 23571  	goto __3
 23572  __3:
 23573  	;
 23574  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23575  	if ltIdx >= 0 {
 23576  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 23577  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 23578  	}
 23579  	if gtIdx >= 0 {
 23580  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 23581  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 23582  	}
 23583  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 23584  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 23585  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 23586  	}
 23587  	if idxNum&12 == 0 {
 23588  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 23589  	} else if idxNum&3 == 0 {
 23590  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 23591  	} else {
 23592  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 23593  	}
 23594  	return SQLITE_OK
 23595  }
 23596  
 23597  var wholenumberModule = sqlite3_module{
 23598  	FxCreate:     0,
 23599  	FxConnect:    0,
 23600  	FxBestIndex:  0,
 23601  	FxDisconnect: 0,
 23602  	FxDestroy:    0,
 23603  	FxOpen:       0,
 23604  	FxClose:      0,
 23605  	FxFilter:     0,
 23606  	FxNext:       0,
 23607  	FxEof:        0,
 23608  	FxColumn:     0,
 23609  	FxRowid:      0,
 23610  }
 23611  
 23612  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23613  	var rc int32 = SQLITE_OK
 23614  	_ = pApi
 23615  
 23616  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 23617  	return rc
 23618  }
 23619  
 23620  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 23621  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 23622  	var pScript uintptr
 23623  	var i int32
 23624  
 23625  	pScript = tcl.XTcl_NewObj(tls)
 23626  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 23627  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 23628  	for i = 0; i < nArg; i++ {
 23629  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 23630  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 23631  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 23632  	}
 23633  
 23634  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 23635  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 23636  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 23637  	} else {
 23638  		tcl.XTcl_BackgroundError(tls, interp)
 23639  	}
 23640  
 23641  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 23642  		var _objPtr uintptr = pScript
 23643  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 23644  			tcl.XTclFreeObj(tls, _objPtr)
 23645  		}
 23646  	}
 23647  }
 23648  
 23649  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23650  	bp := tls.Alloc(496)
 23651  	defer tls.Free(496)
 23652  
 23653  	var ret int32 = TCL_OK
 23654  	var pRbu uintptr = clientData
 23655  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 23656  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 23657  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 23658  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 23659  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 23660  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 23661  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 23662  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 23663  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 23664  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 23665  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 23666  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 23667  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 23668  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 23669  		{},
 23670  	}
 23671  
 23672  	if objc < 2 {
 23673  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 23674  		return TCL_ERROR
 23675  	}
 23676  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 23677  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 23678  	if ret != 0 {
 23679  		return TCL_ERROR
 23680  	}
 23681  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 23682  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 23683  		return TCL_ERROR
 23684  	}
 23685  
 23686  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 23687  	case 0:
 23688  		{
 23689  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 23690  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23691  			break
 23692  
 23693  		}
 23694  
 23695  	case 9:
 23696  		fallthrough
 23697  	case 1:
 23698  		{
 23699  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 23700  			var rc int32
 23701  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 23702  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 23703  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 23704  			} else {
 23705  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 23706  			}
 23707  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 23708  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23709  
 23710  			} else {
 23711  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23712  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 23713  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 23714  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 23715  				}
 23716  				ret = TCL_ERROR
 23717  			}
 23718  			break
 23719  
 23720  		}
 23721  
 23722  	case 2:
 23723  		{
 23724  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 23725  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 23726  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 23727  					f func(*libc.TLS, uintptr, int32, uintptr)
 23728  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 23729  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23730  			ret = func() int32 {
 23731  				if rc == SQLITE_OK {
 23732  					return TCL_OK
 23733  				}
 23734  				return TCL_ERROR
 23735  			}()
 23736  			break
 23737  
 23738  		}
 23739  
 23740  	case 3:
 23741  		{
 23742  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 23743  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23744  			ret = func() int32 {
 23745  				if rc == SQLITE_OK {
 23746  					return TCL_OK
 23747  				}
 23748  				return TCL_ERROR
 23749  			}()
 23750  			break
 23751  
 23752  		}
 23753  
 23754  	case 12:
 23755  		fallthrough
 23756  	case 4:
 23757  		{
 23758  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 23759  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 23760  			if rc != SQLITE_OK {
 23761  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 23762  				ret = TCL_ERROR
 23763  			}
 23764  			break
 23765  
 23766  		}
 23767  
 23768  	case 5:
 23769  		{
 23770  			var pObj uintptr
 23771  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 23772  
 23773  			pObj = tcl.XTcl_NewObj(tls)
 23774  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 23775  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 23776  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 23777  			break
 23778  
 23779  		}
 23780  
 23781  	case 6:
 23782  		{
 23783  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 23784  				ret = TCL_ERROR
 23785  			} else {
 23786  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 23787  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 23788  					ret = TCL_ERROR
 23789  				} else {
 23790  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 23791  				}
 23792  			}
 23793  			break
 23794  
 23795  		}
 23796  	case 7:
 23797  		{
 23798  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 23799  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 23800  
 23801  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 23802  			break
 23803  
 23804  		}
 23805  	case 8:
 23806  		{
 23807  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 23808  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 23809  			break
 23810  
 23811  		}
 23812  
 23813  	case 10:
 23814  		{
 23815  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 23816  				ret = TCL_ERROR
 23817  			} else {
 23818  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 23819  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 23820  			}
 23821  			break
 23822  
 23823  		}
 23824  	case 11:
 23825  		{
 23826  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 23827  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 23828  			break
 23829  
 23830  		}
 23831  
 23832  	default:
 23833  		break
 23834  	}
 23835  
 23836  	return ret
 23837  }
 23838  
 23839  type RbuCmd = struct {
 23840  	FzName       uintptr
 23841  	FnArg        int32
 23842  	F__ccgo_pad1 [4]byte
 23843  	FzUsage      uintptr
 23844  }
 23845  
 23846  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23847  	var pRbu uintptr = uintptr(0)
 23848  	var zCmd uintptr
 23849  	var zTarget uintptr
 23850  	var zRbu uintptr
 23851  	var zStateDb uintptr = uintptr(0)
 23852  
 23853  	if objc != 4 && objc != 5 {
 23854  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 23855  		return TCL_ERROR
 23856  	}
 23857  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23858  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 23859  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 23860  	if objc == 5 {
 23861  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 23862  	}
 23863  
 23864  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 23865  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 23866  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 23867  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 23868  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23869  	return TCL_OK
 23870  }
 23871  
 23872  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23873  	var pRbu uintptr = uintptr(0)
 23874  	var zCmd uintptr
 23875  	var zTarget uintptr
 23876  	var zStateDb uintptr = uintptr(0)
 23877  
 23878  	if objc != 3 && objc != 4 {
 23879  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 23880  		return TCL_ERROR
 23881  	}
 23882  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23883  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 23884  	if objc == 4 {
 23885  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 23886  	}
 23887  	if zStateDb != 0 && int32(*(*int8)(unsafe.Pointer(zStateDb))) == 0 {
 23888  		zStateDb = uintptr(0)
 23889  	}
 23890  
 23891  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 23892  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 23893  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 23894  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 23895  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23896  	return TCL_OK
 23897  }
 23898  
 23899  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23900  	var zName uintptr
 23901  	var zParent uintptr
 23902  	var rc int32
 23903  
 23904  	if objc != 3 && objc != 4 {
 23905  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 23906  		return TCL_ERROR
 23907  	}
 23908  
 23909  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 23910  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 23911  	if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 23912  		zParent = uintptr(0)
 23913  	}
 23914  
 23915  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 23916  	if rc != SQLITE_OK {
 23917  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23918  		return TCL_ERROR
 23919  	} else if objc == 4 {
 23920  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 23921  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 23922  	}
 23923  
 23924  	tcl.XTcl_ResetResult(tls, interp)
 23925  	return TCL_OK
 23926  }
 23927  
 23928  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23929  	var zName uintptr
 23930  
 23931  	if objc != 2 {
 23932  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 23933  		return TCL_ERROR
 23934  	}
 23935  
 23936  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23937  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 23938  	return TCL_OK
 23939  }
 23940  
 23941  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23942  	bp := tls.Alloc(16)
 23943  	defer tls.Free(16)
 23944  
 23945  	var db uintptr
 23946  
 23947  	if objc != 1 {
 23948  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 23949  		return TCL_ERROR
 23950  	}
 23951  
 23952  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 23953  	if db != uintptr(0) {
 23954  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 23955  		return TCL_ERROR
 23956  	}
 23957  
 23958  	return TCL_OK
 23959  }
 23960  
 23961  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 23962  	var i int32
 23963  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 23964  		FzName uintptr
 23965  		FxProc uintptr
 23966  	}{})); i++ {
 23967  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 23968  	}
 23969  	return TCL_OK
 23970  }
 23971  
 23972  var aObjCmd = [5]struct {
 23973  	FzName uintptr
 23974  	FxProc uintptr
 23975  }{
 23976  	{FzName: ts + 9790, FxProc: 0},
 23977  	{FzName: ts + 9801, FxProc: 0},
 23978  	{FzName: ts + 9819, FxProc: 0},
 23979  	{FzName: ts + 9841, FxProc: 0},
 23980  	{FzName: ts + 9864, FxProc: 0},
 23981  }
 23982  
 23983  type sqlite31 = sqlite32
 23984  
 23985  type sqlite3_str = sqlite3_str1
 23986  
 23987  type int_least8_t = int8
 23988  type uint_least8_t = uint8
 23989  type int_least16_t = int16
 23990  type uint_least16_t = uint16
 23991  type int_least32_t = int32
 23992  type uint_least32_t = uint32
 23993  type int_least64_t = int64
 23994  type uint_least64_t = uint64
 23995  
 23996  type int_fast8_t = int32
 23997  type uint_fast8_t = uint32
 23998  type int_fast16_t = int32
 23999  type uint_fast16_t = uint32
 24000  type int_fast32_t = int32
 24001  type uint_fast32_t = uint32
 24002  type int_fast64_t = int64
 24003  type uint_fast64_t = uint64
 24004  
 24005  type uintptr_t = uint64
 24006  
 24007  type intmax_t = int64
 24008  type uintmax_t = uint64
 24009  
 24010  type imaxdiv_t = struct {
 24011  	Fquot intmax_t
 24012  	Frem  intmax_t
 24013  }
 24014  
 24015  type Hash1 = struct {
 24016  	Fhtsize uint32
 24017  	Fcount  uint32
 24018  	Ffirst  uintptr
 24019  	Fht     uintptr
 24020  }
 24021  
 24022  type Hash = Hash1
 24023  type HashElem1 = struct {
 24024  	Fnext uintptr
 24025  	Fprev uintptr
 24026  	Fdata uintptr
 24027  	FpKey uintptr
 24028  }
 24029  
 24030  type HashElem = HashElem1
 24031  
 24032  type _ht = struct {
 24033  	Fcount       uint32
 24034  	F__ccgo_pad1 [4]byte
 24035  	Fchain       uintptr
 24036  }
 24037  
 24038  type wint_t = int32
 24039  
 24040  type mbstate_t = struct {
 24041  	F__ccgo_pad1 [0]uint64
 24042  	F__mbstate8  [128]int8
 24043  }
 24044  
 24045  type max_align_t = struct {
 24046  	F__max_align_ll int64
 24047  	F__max_align_ld float64
 24048  }
 24049  type i16 = int16_t
 24050  type i8 = int8_t
 24051  
 24052  type tRowcnt = u32
 24053  
 24054  type LogEst = int16_t
 24055  
 24056  type uptr = uintptr_t
 24057  
 24058  type BusyHandler1 = struct {
 24059  	FxBusyHandler uintptr
 24060  	FpBusyArg     uintptr
 24061  	FnBusy        int32
 24062  	F__ccgo_pad1  [4]byte
 24063  }
 24064  
 24065  type BusyHandler = BusyHandler1
 24066  
 24067  type AggInfo1 = struct {
 24068  	FdirectMode     u8
 24069  	FuseSortingIdx  u8
 24070  	F__ccgo_pad1    [2]byte
 24071  	FsortingIdx     int32
 24072  	FsortingIdxPTab int32
 24073  	FnSortingColumn int32
 24074  	FmnReg          int32
 24075  	FmxReg          int32
 24076  	FpGroupBy       uintptr
 24077  	FaCol           uintptr
 24078  	FnColumn        int32
 24079  	FnAccumulator   int32
 24080  	FaFunc          uintptr
 24081  	FnFunc          int32
 24082  	FselId          u32
 24083  }
 24084  
 24085  type AggInfo = AggInfo1
 24086  type AuthContext1 = struct {
 24087  	FzAuthContext uintptr
 24088  	FpParse       uintptr
 24089  }
 24090  
 24091  type AuthContext = AuthContext1
 24092  type AutoincInfo1 = struct {
 24093  	FpNext  uintptr
 24094  	FpTab   uintptr
 24095  	FiDb    int32
 24096  	FregCtr int32
 24097  }
 24098  
 24099  type AutoincInfo = AutoincInfo1
 24100  type CollSeq1 = struct {
 24101  	FzName       uintptr
 24102  	Fenc         u8
 24103  	F__ccgo_pad1 [7]byte
 24104  	FpUser       uintptr
 24105  	FxCmp        uintptr
 24106  	FxDel        uintptr
 24107  }
 24108  
 24109  type CollSeq = CollSeq1
 24110  type Column1 = struct {
 24111  	FzCnName     uintptr
 24112  	FnotNull     uint8
 24113  	F__ccgo_pad1 [1]byte
 24114  	Faffinity    int8
 24115  	FszEst       u8
 24116  	FhName       u8
 24117  	F__ccgo_pad2 [1]byte
 24118  	FiDflt       u16
 24119  	FcolFlags    u16
 24120  	F__ccgo_pad3 [6]byte
 24121  }
 24122  
 24123  type Column = Column1
 24124  type Cte1 = struct {
 24125  	FzName       uintptr
 24126  	FpCols       uintptr
 24127  	FpSelect     uintptr
 24128  	FzCteErr     uintptr
 24129  	FpUse        uintptr
 24130  	FeM10d       u8
 24131  	F__ccgo_pad1 [7]byte
 24132  }
 24133  
 24134  type Cte = Cte1
 24135  type CteUse1 = struct {
 24136  	FnUse        int32
 24137  	FaddrM9e     int32
 24138  	FregRtn      int32
 24139  	FiCur        int32
 24140  	FnRowEst     LogEst
 24141  	FeM10d       u8
 24142  	F__ccgo_pad1 [1]byte
 24143  }
 24144  
 24145  type CteUse = CteUse1
 24146  type Db1 = struct {
 24147  	FzDbSName     uintptr
 24148  	FpBt          uintptr
 24149  	Fsafety_level u8
 24150  	FbSyncSet     u8
 24151  	F__ccgo_pad1  [6]byte
 24152  	FpSchema      uintptr
 24153  }
 24154  
 24155  type Db = Db1
 24156  type DbFixer1 = struct {
 24157  	FpParse      uintptr
 24158  	Fw           Walker
 24159  	FpSchema     uintptr
 24160  	FbTemp       u8
 24161  	F__ccgo_pad1 [7]byte
 24162  	FzDb         uintptr
 24163  	FzType       uintptr
 24164  	FpName       uintptr
 24165  }
 24166  
 24167  type DbFixer = DbFixer1
 24168  type Schema1 = struct {
 24169  	Fschema_cookie int32
 24170  	FiGeneration   int32
 24171  	FtblHash       Hash
 24172  	FidxHash       Hash
 24173  	FtrigHash      Hash
 24174  	FfkeyHash      Hash
 24175  	FpSeqTab       uintptr
 24176  	Ffile_format   u8
 24177  	Fenc           u8
 24178  	FschemaFlags   u16
 24179  	Fcache_size    int32
 24180  }
 24181  
 24182  type Schema = Schema1
 24183  type Expr1 = struct {
 24184  	Fop          u8
 24185  	FaffExpr     int8
 24186  	Fop2         u8
 24187  	F__ccgo_pad1 [1]byte
 24188  	Fflags       u32
 24189  	Fu           struct{ FzToken uintptr }
 24190  	FpLeft       uintptr
 24191  	FpRight      uintptr
 24192  	Fx           struct{ FpList uintptr }
 24193  	FnHeight     int32
 24194  	FiTable      int32
 24195  	FiColumn     ynVar
 24196  	FiAgg        i16
 24197  	Fw           struct{ FiJoin int32 }
 24198  	FpAggInfo    uintptr
 24199  	Fy           struct{ FpTab uintptr }
 24200  }
 24201  
 24202  type Expr = Expr1
 24203  type ExprList1 = struct {
 24204  	FnExpr  int32
 24205  	FnAlloc int32
 24206  	Fa      [1]struct {
 24207  		FpExpr  uintptr
 24208  		FzEName uintptr
 24209  		Ffg     struct {
 24210  			F__ccgo_pad1 [0]uint32
 24211  			FsortFlags   u8
 24212  			F__ccgo_pad2 [3]byte
 24213  			FeEName      uint16
 24214  			F__ccgo_pad3 [2]byte
 24215  		}
 24216  		Fu struct {
 24217  			F__ccgo_pad1 [0]uint32
 24218  			Fx           struct {
 24219  				FiOrderByCol u16
 24220  				FiAlias      u16
 24221  			}
 24222  		}
 24223  		F__ccgo_pad1 [4]byte
 24224  	}
 24225  }
 24226  
 24227  type ExprList = ExprList1
 24228  type FKey1 = struct {
 24229  	FpFrom       uintptr
 24230  	FpNextFrom   uintptr
 24231  	FzTo         uintptr
 24232  	FpNextTo     uintptr
 24233  	FpPrevTo     uintptr
 24234  	FnCol        int32
 24235  	FisDeferred  u8
 24236  	FaAction     [2]u8
 24237  	F__ccgo_pad1 [1]byte
 24238  	FapTrigger   [2]uintptr
 24239  	FaCol        [1]struct {
 24240  		FiFrom       int32
 24241  		F__ccgo_pad1 [4]byte
 24242  		FzCol        uintptr
 24243  	}
 24244  }
 24245  
 24246  type FKey = FKey1
 24247  type FuncDestructor1 = struct {
 24248  	FnRef        int32
 24249  	F__ccgo_pad1 [4]byte
 24250  	FxDestroy    uintptr
 24251  	FpUserData   uintptr
 24252  }
 24253  
 24254  type FuncDestructor = FuncDestructor1
 24255  type FuncDef1 = struct {
 24256  	FnArg        i8
 24257  	F__ccgo_pad1 [3]byte
 24258  	FfuncFlags   u32
 24259  	FpUserData   uintptr
 24260  	FpNext       uintptr
 24261  	FxSFunc      uintptr
 24262  	FxFinalize   uintptr
 24263  	FxValue      uintptr
 24264  	FxInverse    uintptr
 24265  	FzName       uintptr
 24266  	Fu           struct{ FpHash uintptr }
 24267  }
 24268  
 24269  type FuncDef = FuncDef1
 24270  type FuncDefHash1 = struct{ Fa [23]uintptr }
 24271  
 24272  type FuncDefHash = FuncDefHash1
 24273  type IdList1 = struct {
 24274  	FnId         int32
 24275  	FeU4         u8
 24276  	F__ccgo_pad1 [3]byte
 24277  	Fa           [1]struct {
 24278  		FzName uintptr
 24279  		Fu4    struct {
 24280  			F__ccgo_pad1 [0]uint64
 24281  			Fidx         int32
 24282  			F__ccgo_pad2 [4]byte
 24283  		}
 24284  	}
 24285  }
 24286  
 24287  type IdList = IdList1
 24288  type Index1 = struct {
 24289  	FzName         uintptr
 24290  	FaiColumn      uintptr
 24291  	FaiRowLogEst   uintptr
 24292  	FpTable        uintptr
 24293  	FzColAff       uintptr
 24294  	FpNext         uintptr
 24295  	FpSchema       uintptr
 24296  	FaSortOrder    uintptr
 24297  	FazColl        uintptr
 24298  	FpPartIdxWhere uintptr
 24299  	FaColExpr      uintptr
 24300  	Ftnum          Pgno
 24301  	FszIdxRow      LogEst
 24302  	FnKeyCol       u16
 24303  	FnColumn       u16
 24304  	FonError       u8
 24305  	F__ccgo_pad1   [1]byte
 24306  	FidxType       uint16
 24307  	F__ccgo_pad2   [2]byte
 24308  	FnSample       int32
 24309  	FnSampleCol    int32
 24310  	FaAvgEq        uintptr
 24311  	FaSample       uintptr
 24312  	FaiRowEst      uintptr
 24313  	FnRowEst0      tRowcnt
 24314  	F__ccgo_pad3   [4]byte
 24315  	FcolNotIdxed   Bitmask
 24316  }
 24317  
 24318  type Index = Index1
 24319  type IndexSample1 = struct {
 24320  	Fp           uintptr
 24321  	Fn           int32
 24322  	F__ccgo_pad1 [4]byte
 24323  	FanEq        uintptr
 24324  	FanLt        uintptr
 24325  	FanDLt       uintptr
 24326  }
 24327  
 24328  type IndexSample = IndexSample1
 24329  type KeyInfo1 = struct {
 24330  	FnRef        u32
 24331  	Fenc         u8
 24332  	F__ccgo_pad1 [1]byte
 24333  	FnKeyField   u16
 24334  	FnAllField   u16
 24335  	F__ccgo_pad2 [6]byte
 24336  	Fdb          uintptr
 24337  	FaSortFlags  uintptr
 24338  	FaColl       [1]uintptr
 24339  }
 24340  
 24341  type KeyInfo = KeyInfo1
 24342  type Lookaside1 = struct {
 24343  	FbDisable    u32
 24344  	Fsz          u16
 24345  	FszTrue      u16
 24346  	FbMalloced   u8
 24347  	F__ccgo_pad1 [3]byte
 24348  	FnSlot       u32
 24349  	FanStat      [3]u32
 24350  	F__ccgo_pad2 [4]byte
 24351  	FpInit       uintptr
 24352  	FpFree       uintptr
 24353  	FpSmallInit  uintptr
 24354  	FpSmallFree  uintptr
 24355  	FpMiddle     uintptr
 24356  	FpStart      uintptr
 24357  	FpEnd        uintptr
 24358  }
 24359  
 24360  type Lookaside = Lookaside1
 24361  type LookasideSlot1 = struct{ FpNext uintptr }
 24362  
 24363  type LookasideSlot = LookasideSlot1
 24364  type Module1 = struct {
 24365  	FpModule     uintptr
 24366  	FzName       uintptr
 24367  	FnRefModule  int32
 24368  	F__ccgo_pad1 [4]byte
 24369  	FpAux        uintptr
 24370  	FxDestroy    uintptr
 24371  	FpEpoTab     uintptr
 24372  }
 24373  
 24374  type Module = Module1
 24375  type NameContext1 = struct {
 24376  	FpParse      uintptr
 24377  	FpSrcList    uintptr
 24378  	FuNC         struct{ FpEList uintptr }
 24379  	FpNext       uintptr
 24380  	FnRef        int32
 24381  	FnNcErr      int32
 24382  	FncFlags     int32
 24383  	F__ccgo_pad1 [4]byte
 24384  	FpWinSelect  uintptr
 24385  }
 24386  
 24387  type NameContext = NameContext1
 24388  type OnOrUsing1 = struct {
 24389  	FpOn    uintptr
 24390  	FpUsing uintptr
 24391  }
 24392  
 24393  type OnOrUsing = OnOrUsing1
 24394  type Parse1 = struct {
 24395  	Fdb               uintptr
 24396  	FzErrMsg          uintptr
 24397  	FpVdbe            uintptr
 24398  	Frc               int32
 24399  	FcolNamesSet      u8
 24400  	FcheckSchema      u8
 24401  	Fnested           u8
 24402  	FnTempReg         u8
 24403  	FisMultiWrite     u8
 24404  	FmayAbort         u8
 24405  	FhasCompound      u8
 24406  	FokConstFactor    u8
 24407  	FdisableLookaside u8
 24408  	FdisableVtab      u8
 24409  	FwithinRJSubrtn   u8
 24410  	F__ccgo_pad1      [1]byte
 24411  	FnRangeReg        int32
 24412  	FiRangeReg        int32
 24413  	FnErr             int32
 24414  	FnTab             int32
 24415  	FnMem             int32
 24416  	FszOpAlloc        int32
 24417  	FiSelfTab         int32
 24418  	FnLabel           int32
 24419  	FnLabelAlloc      int32
 24420  	F__ccgo_pad2      [4]byte
 24421  	FaLabel           uintptr
 24422  	FpConstExpr       uintptr
 24423  	FconstraintName   Token
 24424  	FwriteMask        yDbMask
 24425  	FcookieMask       yDbMask
 24426  	FregRowid         int32
 24427  	FregRoot          int32
 24428  	FnMaxArg          int32
 24429  	FnSelect          int32
 24430  	FnTableLock       int32
 24431  	F__ccgo_pad3      [4]byte
 24432  	FaTableLock       uintptr
 24433  	FpAinc            uintptr
 24434  	FpToplevel        uintptr
 24435  	FpTriggerTab      uintptr
 24436  	FpTriggerPrg      uintptr
 24437  	FpCleanup         uintptr
 24438  	Fu1               struct {
 24439  		F__ccgo_pad1 [0]uint64
 24440  		FaddrCrTab   int32
 24441  		F__ccgo_pad2 [4]byte
 24442  	}
 24443  	FnQueryLoop      u32
 24444  	Foldmask         u32
 24445  	Fnewmask         u32
 24446  	FeTriggerOp      u8
 24447  	FbReturning      u8
 24448  	FeOrconf         u8
 24449  	FdisableTriggers u8
 24450  	FaTempReg        [8]int32
 24451  	FpOuterParse     uintptr
 24452  	FsNameToken      Token
 24453  	FsLastToken      Token
 24454  	FnVar            ynVar
 24455  	FiPkSortOrder    u8
 24456  	Fexplain         u8
 24457  	FeParseMode      u8
 24458  	F__ccgo_pad4     [3]byte
 24459  	FnVtabLock       int32
 24460  	FnHeight         int32
 24461  	FaddrExplain     int32
 24462  	F__ccgo_pad5     [4]byte
 24463  	FpVList          uintptr
 24464  	FpReprepare      uintptr
 24465  	FzTail           uintptr
 24466  	FpNewTable       uintptr
 24467  	FpNewIndex       uintptr
 24468  	FpNewTrigger     uintptr
 24469  	FzAuthContext    uintptr
 24470  	FsArg            Token
 24471  	FapVtabLock      uintptr
 24472  	FpWith           uintptr
 24473  	FpRename         uintptr
 24474  }
 24475  
 24476  type Parse = Parse1
 24477  type ParseCleanup1 = struct {
 24478  	FpNext    uintptr
 24479  	FpPtr     uintptr
 24480  	FxCleanup uintptr
 24481  }
 24482  
 24483  type ParseCleanup = ParseCleanup1
 24484  type PreUpdate1 = struct {
 24485  	Fv            uintptr
 24486  	FpCsr         uintptr
 24487  	Fop           int32
 24488  	F__ccgo_pad1  [4]byte
 24489  	FaRecord      uintptr
 24490  	Fkeyinfo      KeyInfo
 24491  	FpUnpacked    uintptr
 24492  	FpNewUnpacked uintptr
 24493  	FiNewReg      int32
 24494  	FiBlobWrite   int32
 24495  	FiKey1        i64
 24496  	FiKey2        i64
 24497  	FaNew         uintptr
 24498  	FpTab         uintptr
 24499  	FpPk          uintptr
 24500  }
 24501  
 24502  type PrintfArguments1 = struct {
 24503  	FnArg  int32
 24504  	FnUsed int32
 24505  	FapArg uintptr
 24506  }
 24507  
 24508  type PrintfArguments = PrintfArguments1
 24509  type Returning1 = struct {
 24510  	FpParse      uintptr
 24511  	FpReturnEL   uintptr
 24512  	FretTrig     Trigger
 24513  	FretTStep    TriggerStep
 24514  	FiRetCur     int32
 24515  	FnRetCol     int32
 24516  	FiRetReg     int32
 24517  	F__ccgo_pad1 [4]byte
 24518  }
 24519  
 24520  type Returning = Returning1
 24521  type Savepoint1 = struct {
 24522  	FzName            uintptr
 24523  	FnDeferredCons    i64
 24524  	FnDeferredImmCons i64
 24525  	FpNext            uintptr
 24526  }
 24527  
 24528  type Savepoint = Savepoint1
 24529  type Select1 = struct {
 24530  	Fop           u8
 24531  	F__ccgo_pad1  [1]byte
 24532  	FnSelectRow   LogEst
 24533  	FselFlags     u32
 24534  	FiLimit       int32
 24535  	FiOffset      int32
 24536  	FselId        u32
 24537  	FaddrOpenEphm [2]int32
 24538  	F__ccgo_pad2  [4]byte
 24539  	FpEList       uintptr
 24540  	FpSrc         uintptr
 24541  	FpWhere       uintptr
 24542  	FpGroupBy     uintptr
 24543  	FpHaving      uintptr
 24544  	FpOrderBy     uintptr
 24545  	FpPrior       uintptr
 24546  	FpNext        uintptr
 24547  	FpLimit       uintptr
 24548  	FpWith        uintptr
 24549  	FpWin         uintptr
 24550  	FpWinDefn     uintptr
 24551  }
 24552  
 24553  type Select = Select1
 24554  type SelectDest1 = struct {
 24555  	FeDest       u8
 24556  	F__ccgo_pad1 [3]byte
 24557  	FiSDParm     int32
 24558  	FiSDParm2    int32
 24559  	FiSdst       int32
 24560  	FnSdst       int32
 24561  	F__ccgo_pad2 [4]byte
 24562  	FzAffSdst    uintptr
 24563  	FpOrderBy    uintptr
 24564  }
 24565  
 24566  type SelectDest = SelectDest1
 24567  type SrcItem1 = struct {
 24568  	FpSchema     uintptr
 24569  	FzDatabase   uintptr
 24570  	FzName       uintptr
 24571  	FzAlias      uintptr
 24572  	FpTab        uintptr
 24573  	FpSelect     uintptr
 24574  	FaddrFillSub int32
 24575  	FregReturn   int32
 24576  	FregResult   int32
 24577  	Ffg          struct {
 24578  		F__ccgo_pad1 [0]uint32
 24579  		Fjointype    u8
 24580  		F__ccgo_pad2 [3]byte
 24581  		FnotIndexed  uint16
 24582  		F__ccgo_pad3 [2]byte
 24583  	}
 24584  	FiCursor int32
 24585  	Fu3      struct{ FpOn uintptr }
 24586  	FcolUsed Bitmask
 24587  	Fu1      struct{ FzIndexedBy uintptr }
 24588  	Fu2      struct{ FpIBIndex uintptr }
 24589  }
 24590  
 24591  type SrcItem = SrcItem1
 24592  type SrcList1 = struct {
 24593  	FnSrc   int32
 24594  	FnAlloc u32
 24595  	Fa      [1]SrcItem
 24596  }
 24597  
 24598  type SrcList = SrcList1
 24599  type StrAccum = sqlite3_str1
 24600  type Table1 = struct {
 24601  	FzName      uintptr
 24602  	FaCol       uintptr
 24603  	FpIndex     uintptr
 24604  	FzColAff    uintptr
 24605  	FpCheck     uintptr
 24606  	Ftnum       Pgno
 24607  	FnTabRef    u32
 24608  	FtabFlags   u32
 24609  	FiPKey      i16
 24610  	FnCol       i16
 24611  	FnNVCol     i16
 24612  	FnRowLogEst LogEst
 24613  	FszTabRow   LogEst
 24614  	FkeyConf    u8
 24615  	FeTabType   u8
 24616  	Fu          struct {
 24617  		Ftab struct {
 24618  			FaddColOffset int32
 24619  			F__ccgo_pad1  [4]byte
 24620  			FpFKey        uintptr
 24621  			FpDfltList    uintptr
 24622  		}
 24623  	}
 24624  	FpTrigger uintptr
 24625  	FpSchema  uintptr
 24626  }
 24627  
 24628  type Table = Table1
 24629  type Token1 = struct {
 24630  	Fz           uintptr
 24631  	Fn           uint32
 24632  	F__ccgo_pad1 [4]byte
 24633  }
 24634  
 24635  type Token = Token1
 24636  type Trigger1 = struct {
 24637  	FzName       uintptr
 24638  	Ftable       uintptr
 24639  	Fop          u8
 24640  	Ftr_tm       u8
 24641  	FbReturning  u8
 24642  	F__ccgo_pad1 [5]byte
 24643  	FpWhen       uintptr
 24644  	FpColumns    uintptr
 24645  	FpSchema     uintptr
 24646  	FpTabSchema  uintptr
 24647  	Fstep_list   uintptr
 24648  	FpNext       uintptr
 24649  }
 24650  
 24651  type Trigger = Trigger1
 24652  type TriggerPrg1 = struct {
 24653  	FpTrigger    uintptr
 24654  	FpNext       uintptr
 24655  	FpProgram    uintptr
 24656  	Forconf      int32
 24657  	FaColmask    [2]u32
 24658  	F__ccgo_pad1 [4]byte
 24659  }
 24660  
 24661  type TriggerPrg = TriggerPrg1
 24662  type TriggerStep1 = struct {
 24663  	Fop          u8
 24664  	Forconf      u8
 24665  	F__ccgo_pad1 [6]byte
 24666  	FpTrig       uintptr
 24667  	FpSelect     uintptr
 24668  	FzTarget     uintptr
 24669  	FpFrom       uintptr
 24670  	FpWhere      uintptr
 24671  	FpExprList   uintptr
 24672  	FpIdList     uintptr
 24673  	FpUpsert     uintptr
 24674  	FzSpan       uintptr
 24675  	FpNext       uintptr
 24676  	FpLast       uintptr
 24677  }
 24678  
 24679  type TriggerStep = TriggerStep1
 24680  type UnpackedRecord1 = struct {
 24681  	FpKeyInfo    uintptr
 24682  	FaMem        uintptr
 24683  	Fu           struct{ Fz uintptr }
 24684  	Fn           int32
 24685  	FnField      u16
 24686  	Fdefault_rc  i8
 24687  	FerrCode     u8
 24688  	Fr1          i8
 24689  	Fr2          i8
 24690  	FeqSeen      u8
 24691  	F__ccgo_pad1 [5]byte
 24692  }
 24693  
 24694  type UnpackedRecord = UnpackedRecord1
 24695  type Upsert1 = struct {
 24696  	FpUpsertTarget      uintptr
 24697  	FpUpsertTargetWhere uintptr
 24698  	FpUpsertSet         uintptr
 24699  	FpUpsertWhere       uintptr
 24700  	FpNextUpsert        uintptr
 24701  	FisDoUpdate         u8
 24702  	F__ccgo_pad1        [7]byte
 24703  	FpToFree            uintptr
 24704  	FpUpsertIdx         uintptr
 24705  	FpUpsertSrc         uintptr
 24706  	FregData            int32
 24707  	FiDataCur           int32
 24708  	FiIdxCur            int32
 24709  	F__ccgo_pad2        [4]byte
 24710  }
 24711  
 24712  type Upsert = Upsert1
 24713  type VTable1 = struct {
 24714  	Fdb          uintptr
 24715  	FpMod        uintptr
 24716  	FpVtab       uintptr
 24717  	FnRef        int32
 24718  	FbConstraint u8
 24719  	FeVtabRisk   u8
 24720  	F__ccgo_pad1 [2]byte
 24721  	FiSavepoint  int32
 24722  	F__ccgo_pad2 [4]byte
 24723  	FpNext       uintptr
 24724  }
 24725  
 24726  type VTable = VTable1
 24727  type Walker1 = struct {
 24728  	FpParse           uintptr
 24729  	FxExprCallback    uintptr
 24730  	FxSelectCallback  uintptr
 24731  	FxSelectCallback2 uintptr
 24732  	FwalkerDepth      int32
 24733  	FeCode            u16
 24734  	F__ccgo_pad1      [2]byte
 24735  	Fu                struct{ FpNC uintptr }
 24736  }
 24737  
 24738  type Walker = Walker1
 24739  type Window1 = struct {
 24740  	FzName          uintptr
 24741  	FzBase          uintptr
 24742  	FpPartition     uintptr
 24743  	FpOrderBy       uintptr
 24744  	FeFrmType       u8
 24745  	FeStart         u8
 24746  	FeEnd           u8
 24747  	FbImplicitFrame u8
 24748  	FeExclude       u8
 24749  	F__ccgo_pad1    [3]byte
 24750  	FpStart         uintptr
 24751  	FpEnd           uintptr
 24752  	FppThis         uintptr
 24753  	FpNextWin       uintptr
 24754  	FpFilter        uintptr
 24755  	FpWFunc         uintptr
 24756  	FiEphCsr        int32
 24757  	FregAccum       int32
 24758  	FregResult      int32
 24759  	FcsrApp         int32
 24760  	FregApp         int32
 24761  	FregPart        int32
 24762  	FpOwner         uintptr
 24763  	FnBufferCol     int32
 24764  	FiArgCol        int32
 24765  	FregOne         int32
 24766  	FregStartRowid  int32
 24767  	FregEndRowid    int32
 24768  	FbExprArgs      u8
 24769  	F__ccgo_pad2    [3]byte
 24770  }
 24771  
 24772  type Window = Window1
 24773  type With1 = struct {
 24774  	FnCte   int32
 24775  	FbView  int32
 24776  	FpOuter uintptr
 24777  	Fa      [1]Cte
 24778  }
 24779  
 24780  type With = With1
 24781  
 24782  type Bitmask = u64
 24783  
 24784  type VList = int32
 24785  
 24786  type Pgno = u32
 24787  
 24788  type PgHdr1 = struct {
 24789  	FpPage      uintptr
 24790  	FpData      uintptr
 24791  	FpExtra     uintptr
 24792  	FpCache     uintptr
 24793  	FpDirty     uintptr
 24794  	FpPager     uintptr
 24795  	Fpgno       Pgno
 24796  	Fflags      u16
 24797  	FnRef       i16
 24798  	FpDirtyNext uintptr
 24799  	FpDirtyPrev uintptr
 24800  }
 24801  
 24802  type DbPage = PgHdr1
 24803  
 24804  type Btree1 = struct {
 24805  	Fdb             uintptr
 24806  	FpBt            uintptr
 24807  	FinTrans        u8
 24808  	Fsharable       u8
 24809  	Flocked         u8
 24810  	FhasIncrblobCur u8
 24811  	FwantToLock     int32
 24812  	FnBackup        int32
 24813  	FiBDataVersion  u32
 24814  	FpNext          uintptr
 24815  	FpPrev          uintptr
 24816  	Flock           BtLock
 24817  }
 24818  
 24819  type BtCursor1 = struct {
 24820  	FeState        u8
 24821  	FcurFlags      u8
 24822  	FcurPagerFlags u8
 24823  	Fhints         u8
 24824  	FskipNext      int32
 24825  	FpBtree        uintptr
 24826  	FaOverflow     uintptr
 24827  	FpKey          uintptr
 24828  	FpBt           uintptr
 24829  	FpNext         uintptr
 24830  	Finfo          CellInfo
 24831  	FnKey          i64
 24832  	FpgnoRoot      Pgno
 24833  	FiPage         i8
 24834  	FcurIntKey     u8
 24835  	Fix            u16
 24836  	FaiIdx         [19]u16
 24837  	F__ccgo_pad1   [2]byte
 24838  	FpKeyInfo      uintptr
 24839  	FpPage         uintptr
 24840  	FapPage        [19]uintptr
 24841  }
 24842  
 24843  type BtShared1 = struct {
 24844  	FpPager          uintptr
 24845  	Fdb              uintptr
 24846  	FpCursor         uintptr
 24847  	FpPage1          uintptr
 24848  	FopenFlags       u8
 24849  	FautoVacuum      u8
 24850  	FincrVacuum      u8
 24851  	FbDoTruncate     u8
 24852  	FinTransaction   u8
 24853  	Fmax1bytePayload u8
 24854  	FnReserveWanted  u8
 24855  	F__ccgo_pad1     [1]byte
 24856  	FbtsFlags        u16
 24857  	FmaxLocal        u16
 24858  	FminLocal        u16
 24859  	FmaxLeaf         u16
 24860  	FminLeaf         u16
 24861  	F__ccgo_pad2     [2]byte
 24862  	FpageSize        u32
 24863  	FusableSize      u32
 24864  	FnTransaction    int32
 24865  	FnPage           u32
 24866  	F__ccgo_pad3     [4]byte
 24867  	FpSchema         uintptr
 24868  	FxFreeSchema     uintptr
 24869  	Fmutex           uintptr
 24870  	FpHasContent     uintptr
 24871  	FnRef            int32
 24872  	F__ccgo_pad4     [4]byte
 24873  	FpNext           uintptr
 24874  	FpLock           uintptr
 24875  	FpWriter         uintptr
 24876  	FpTmpSpace       uintptr
 24877  	FnPreformatSize  int32
 24878  	F__ccgo_pad5     [4]byte
 24879  }
 24880  
 24881  type BtreePayload1 = struct {
 24882  	FpKey        uintptr
 24883  	FnKey        sqlite3_int64
 24884  	FpData       uintptr
 24885  	FaMem        uintptr
 24886  	FnMem        u16
 24887  	F__ccgo_pad1 [2]byte
 24888  	FnData       int32
 24889  	FnZero       int32
 24890  	F__ccgo_pad2 [4]byte
 24891  }
 24892  
 24893  type BtreePayload = BtreePayload1
 24894  
 24895  type Vdbe1 = struct {
 24896  	Fdb                 uintptr
 24897  	FpPrev              uintptr
 24898  	FpNext              uintptr
 24899  	FpParse             uintptr
 24900  	FnVar               ynVar
 24901  	F__ccgo_pad1        [2]byte
 24902  	FnMem               int32
 24903  	FnCursor            int32
 24904  	FcacheCtr           u32
 24905  	Fpc                 int32
 24906  	Frc                 int32
 24907  	FnChange            i64
 24908  	FiStatement         int32
 24909  	F__ccgo_pad2        [4]byte
 24910  	FiCurrentTime       i64
 24911  	FnFkConstraint      i64
 24912  	FnStmtDefCons       i64
 24913  	FnStmtDefImmCons    i64
 24914  	FaMem               uintptr
 24915  	FapArg              uintptr
 24916  	FapCsr              uintptr
 24917  	FaVar               uintptr
 24918  	FaOp                uintptr
 24919  	FnOp                int32
 24920  	FnOpAlloc           int32
 24921  	FaColName           uintptr
 24922  	FpResultSet         uintptr
 24923  	FzErrMsg            uintptr
 24924  	FpVList             uintptr
 24925  	FstartTime          i64
 24926  	FnResColumn         u16
 24927  	FerrorAction        u8
 24928  	FminWriteFileFormat u8
 24929  	FprepFlags          u8
 24930  	FeVdbeState         u8
 24931  	F__ccgo_pad3        [2]byte
 24932  	Fexpired            uint8
 24933  	F__ccgo_pad4        [3]byte
 24934  	FbtreeMask          yDbMask
 24935  	FlockMask           yDbMask
 24936  	FaCounter           [9]u32
 24937  	FzSql               uintptr
 24938  	FpFree              uintptr
 24939  	FpFrame             uintptr
 24940  	FpDelFrame          uintptr
 24941  	FnFrame             int32
 24942  	Fexpmask            u32
 24943  	FpProgram           uintptr
 24944  	FpAuxData           uintptr
 24945  }
 24946  
 24947  type SubProgram1 = struct {
 24948  	FaOp         uintptr
 24949  	FnOp         int32
 24950  	FnMem        int32
 24951  	FnCsr        int32
 24952  	F__ccgo_pad1 [4]byte
 24953  	FaOnce       uintptr
 24954  	Ftoken       uintptr
 24955  	FpNext       uintptr
 24956  }
 24957  
 24958  type SubProgram = SubProgram1
 24959  
 24960  type VdbeOp1 = struct {
 24961  	Fopcode u8
 24962  	Fp4type int8
 24963  	Fp5     u16
 24964  	Fp1     int32
 24965  	Fp2     int32
 24966  	Fp3     int32
 24967  	Fp4     struct {
 24968  		F__ccgo_pad1 [0]uint64
 24969  		Fi           int32
 24970  		F__ccgo_pad2 [4]byte
 24971  	}
 24972  	FzComment uintptr
 24973  }
 24974  
 24975  type p4union = struct {
 24976  	F__ccgo_pad1 [0]uint64
 24977  	Fi           int32
 24978  	F__ccgo_pad2 [4]byte
 24979  }
 24980  
 24981  type VdbeOp = VdbeOp1
 24982  
 24983  type VdbeOpList1 = struct {
 24984  	Fopcode u8
 24985  	Fp1     int8
 24986  	Fp2     int8
 24987  	Fp3     int8
 24988  }
 24989  
 24990  type VdbeOpList = VdbeOpList1
 24991  
 24992  type RecordCompare = uintptr
 24993  
 24994  type PgHdr = PgHdr1
 24995  
 24996  type sqlite3_xauth = uintptr
 24997  
 24998  type sqlite3InitInfo = struct {
 24999  	FnewTnum       Pgno
 25000  	FiDb           u8
 25001  	Fbusy          u8
 25002  	F__ccgo_pad1   [2]byte
 25003  	ForphanTrigger uint8
 25004  	F__ccgo_pad2   [7]byte
 25005  	FazInit        uintptr
 25006  }
 25007  
 25008  type sColMap = struct {
 25009  	FiFrom       int32
 25010  	F__ccgo_pad1 [4]byte
 25011  	FzCol        uintptr
 25012  }
 25013  
 25014  type AggInfo_col = struct {
 25015  	FpTab          uintptr
 25016  	FpCExpr        uintptr
 25017  	FiTable        int32
 25018  	FiMem          int32
 25019  	FiColumn       i16
 25020  	FiSorterColumn i16
 25021  	F__ccgo_pad1   [4]byte
 25022  }
 25023  
 25024  type AggInfo_func = struct {
 25025  	FpFExpr      uintptr
 25026  	FpFunc       uintptr
 25027  	FiMem        int32
 25028  	FiDistinct   int32
 25029  	FiDistAddr   int32
 25030  	F__ccgo_pad1 [4]byte
 25031  }
 25032  
 25033  type ynVar = i16
 25034  
 25035  type ExprList_item = struct {
 25036  	FpExpr  uintptr
 25037  	FzEName uintptr
 25038  	Ffg     struct {
 25039  		F__ccgo_pad1 [0]uint32
 25040  		FsortFlags   u8
 25041  		F__ccgo_pad2 [3]byte
 25042  		FeEName      uint16
 25043  		F__ccgo_pad3 [2]byte
 25044  	}
 25045  	Fu struct {
 25046  		F__ccgo_pad1 [0]uint32
 25047  		Fx           struct {
 25048  			FiOrderByCol u16
 25049  			FiAlias      u16
 25050  		}
 25051  	}
 25052  	F__ccgo_pad1 [4]byte
 25053  }
 25054  
 25055  type IdList_item = struct {
 25056  	FzName uintptr
 25057  	Fu4    struct {
 25058  		F__ccgo_pad1 [0]uint64
 25059  		Fidx         int32
 25060  		F__ccgo_pad2 [4]byte
 25061  	}
 25062  }
 25063  
 25064  type yDbMask = uint32
 25065  
 25066  type InitData = struct {
 25067  	Fdb          uintptr
 25068  	FpzErrMsg    uintptr
 25069  	FiDb         int32
 25070  	Frc          int32
 25071  	FmInitFlags  u32
 25072  	FnInitRow    u32
 25073  	FmxPage      Pgno
 25074  	F__ccgo_pad1 [4]byte
 25075  }
 25076  
 25077  type Sqlite3Config = struct {
 25078  	FbMemstat            int32
 25079  	FbCoreMutex          u8
 25080  	FbFullMutex          u8
 25081  	FbOpenUri            u8
 25082  	FbUseCis             u8
 25083  	FbSmallMalloc        u8
 25084  	FbExtraSchemaChecks  u8
 25085  	F__ccgo_pad1         [2]byte
 25086  	FmxStrlen            int32
 25087  	FneverCorrupt        int32
 25088  	FszLookaside         int32
 25089  	FnLookaside          int32
 25090  	FnStmtSpill          int32
 25091  	Fm                   sqlite3_mem_methods
 25092  	Fmutex               sqlite3_mutex_methods
 25093  	Fpcache2             sqlite3_pcache_methods2
 25094  	FpHeap               uintptr
 25095  	FnHeap               int32
 25096  	FmnReq               int32
 25097  	FmxReq               int32
 25098  	F__ccgo_pad2         [4]byte
 25099  	FszMmap              sqlite3_int64
 25100  	FmxMmap              sqlite3_int64
 25101  	FpPage               uintptr
 25102  	FszPage              int32
 25103  	FnPage               int32
 25104  	FmxParserStack       int32
 25105  	FsharedCacheEnabled  int32
 25106  	FszPma               u32
 25107  	FisInit              int32
 25108  	FinProgress          int32
 25109  	FisMutexInit         int32
 25110  	FisMallocInit        int32
 25111  	FisPCacheInit        int32
 25112  	FnRefInitMutex       int32
 25113  	F__ccgo_pad3         [4]byte
 25114  	FpInitMutex          uintptr
 25115  	FxLog                uintptr
 25116  	FpLogArg             uintptr
 25117  	FmxMemdbSize         sqlite3_int64
 25118  	FxTestCallback       uintptr
 25119  	FbLocaltimeFault     int32
 25120  	F__ccgo_pad4         [4]byte
 25121  	FxAltLocaltime       uintptr
 25122  	FiOnceResetThreshold int32
 25123  	FszSorterRef         u32
 25124  	FiPrngSeed           uint32
 25125  	F__ccgo_pad5         [4]byte
 25126  }
 25127  
 25128  type BoxGeomCtx1 = struct {
 25129  	Finterp  uintptr
 25130  	FpScript uintptr
 25131  }
 25132  
 25133  type BoxGeomCtx = BoxGeomCtx1
 25134  
 25135  type BoxQueryCtx1 = struct {
 25136  	Finterp  uintptr
 25137  	FpScript uintptr
 25138  }
 25139  
 25140  type BoxQueryCtx = BoxQueryCtx1
 25141  
 25142  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 25143  	var p uintptr = pCtx
 25144  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 25145  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25146  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 25147  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25148  			tcl.XTclFreeObj(tls, _objPtr)
 25149  		}
 25150  	}
 25151  	sqlite3.Xsqlite3_free(tls, p)
 25152  }
 25153  
 25154  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 25155  	bp := tls.Alloc(96)
 25156  	defer tls.Free(96)
 25157  
 25158  	var rc int32 = SQLITE_OK
 25159  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 25160  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 25161  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 25162  		var pScript uintptr = uintptr(0)
 25163  		var pParam uintptr = uintptr(0)
 25164  		var pCoord uintptr = uintptr(0)
 25165  		var ii int32
 25166  		var pRes uintptr
 25167  
 25168  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 25169  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 25170  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 25171  
 25172  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp, (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext))
 25173  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25174  
 25175  		pParam = tcl.XTcl_NewObj(tls)
 25176  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 25177  			tcl.XTcl_ListObjAppendElement(tls,
 25178  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 25179  		}
 25180  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 25181  
 25182  		pCoord = tcl.XTcl_NewObj(tls)
 25183  		for ii = 0; ii < nCoord; ii++ {
 25184  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 25185  		}
 25186  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 25187  
 25188  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 25189  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25190  
 25191  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 25192  		if rc != TCL_OK {
 25193  			rc = SQLITE_ERROR
 25194  		} else {
 25195  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 25196  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 25197  
 25198  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 25199  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 25200  				return TCL_ERROR
 25201  			}
 25202  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 25203  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 25204  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 25205  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 25206  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 25207  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 25208  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25209  						rc = SQLITE_ERROR
 25210  					} else {
 25211  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 25212  						if pBGCtx == uintptr(0) {
 25213  							rc = SQLITE_NOMEM
 25214  						} else {
 25215  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 25216  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 25217  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 25218  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 25219  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 25220  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 25221  						}
 25222  					}
 25223  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 25224  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25225  						rc = SQLITE_ERROR
 25226  					}
 25227  				}
 25228  			}
 25229  		}
 25230  	}
 25231  	return rc
 25232  }
 25233  
 25234  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 25235  	var ii int32
 25236  
 25237  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 25238  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 25239  		return SQLITE_ERROR
 25240  	}
 25241  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 25242  		return SQLITE_ERROR
 25243  	}
 25244  
 25245  	for ii = 0; ii < nCoord; ii = ii + 2 {
 25246  		if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8)) > *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii+1)*8)) || *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii+1)*8)) < *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8)) {
 25247  			*(*int32)(unsafe.Pointer(pRes)) = 0
 25248  			return SQLITE_OK
 25249  		}
 25250  	}
 25251  
 25252  	*(*int32)(unsafe.Pointer(pRes)) = 1
 25253  
 25254  	return SQLITE_OK
 25255  }
 25256  
 25257  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25258  	bp := tls.Alloc(80)
 25259  	defer tls.Free(80)
 25260  
 25261  	var pCtx uintptr
 25262  
 25263  	if objc != 3 {
 25264  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25265  		return TCL_ERROR
 25266  	}
 25267  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 25268  		return TCL_ERROR
 25269  	}
 25270  
 25271  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 25272  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25273  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25274  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25275  
 25276  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 25277  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 25278  	}{box_geom})), pCtx)
 25279  
 25280  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 25281  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25282  	return TCL_OK
 25283  }
 25284  
 25285  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 25286  	bp := tls.Alloc(60)
 25287  	defer tls.Free(60)
 25288  
 25289  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 25290  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 25291  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 25292  	var pEval uintptr
 25293  	var pArg uintptr
 25294  	var pTmp uintptr = uintptr(0)
 25295  	var rc int32
 25296  	var ii int32
 25297  
 25298  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 25299  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25300  	pArg = tcl.XTcl_NewObj(tls)
 25301  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 25302  
 25303  	pTmp = tcl.XTcl_NewObj(tls)
 25304  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25305  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 25306  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 25307  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25308  	}
 25309  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 25310  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25311  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25312  		var _objPtr uintptr = pTmp
 25313  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25314  			tcl.XTclFreeObj(tls, _objPtr)
 25315  		}
 25316  	}
 25317  
 25318  	pTmp = tcl.XTcl_NewObj(tls)
 25319  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25320  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 25321  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 25322  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25323  	}
 25324  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 25325  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25326  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 25327  		var _objPtr uintptr = pTmp
 25328  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25329  			tcl.XTclFreeObj(tls, _objPtr)
 25330  		}
 25331  	}
 25332  
 25333  	pTmp = tcl.XTcl_NewObj(tls)
 25334  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25335  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 25336  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 25337  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25338  	}
 25339  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 25340  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25341  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 25342  		var _objPtr uintptr = pTmp
 25343  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25344  			tcl.XTclFreeObj(tls, _objPtr)
 25345  		}
 25346  	}
 25347  
 25348  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 25349  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 25350  
 25351  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 25352  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 25353  
 25354  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 25355  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 25356  
 25357  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 25358  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 25359  
 25360  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 25361  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 25362  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 25363  
 25364  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 25365  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 25366  		rc = SQLITE_ERROR
 25367  	} else {
 25368  		rc = SQLITE_OK
 25369  	}
 25370  
 25371  	if rc == SQLITE_OK {
 25372  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 25373  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 25374  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 25375  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 25376  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 25377  
 25378  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 25379  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 25380  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 25381  			tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))), bp, int32(unsafe.Sizeof(uintptr(0))), ts+10013, 0, bp+56) != 0 {
 25382  			rc = SQLITE_ERROR
 25383  		} else {
 25384  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 25385  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 25386  		}
 25387  	}
 25388  
 25389  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 25390  		var _objPtr uintptr = pArg
 25391  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25392  			tcl.XTclFreeObj(tls, _objPtr)
 25393  		}
 25394  	}
 25395  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 25396  		var _objPtr uintptr = pEval
 25397  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25398  			tcl.XTclFreeObj(tls, _objPtr)
 25399  		}
 25400  	}
 25401  	return rc
 25402  }
 25403  
 25404  func box_query_destroy(tls *libc.TLS, p uintptr) {
 25405  	var pCtx uintptr = p
 25406  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25407  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 25408  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25409  			tcl.XTclFreeObj(tls, _objPtr)
 25410  		}
 25411  	}
 25412  	tcl.XTcl_Free(tls, pCtx)
 25413  }
 25414  
 25415  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25416  	bp := tls.Alloc(8)
 25417  	defer tls.Free(8)
 25418  
 25419  	var pCtx uintptr
 25420  
 25421  	if objc != 3 {
 25422  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25423  		return TCL_ERROR
 25424  	}
 25425  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 25426  		return TCL_ERROR
 25427  	}
 25428  
 25429  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 25430  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25431  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25432  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25433  
 25434  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 25435  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 25436  			f func(*libc.TLS, uintptr) int32
 25437  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 25438  
 25439  	tcl.XTcl_ResetResult(tls, interp)
 25440  	return TCL_OK
 25441  }
 25442  
 25443  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 25444  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 25445  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25446  	}{register_box_geom})), uintptr(0), uintptr(0))
 25447  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 25448  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25449  	}{register_box_query})), uintptr(0), uintptr(0))
 25450  	return TCL_OK
 25451  }
 25452  
 25453  type TestSession1 = struct {
 25454  	FpSession      uintptr
 25455  	Finterp        uintptr
 25456  	FpFilterScript uintptr
 25457  }
 25458  
 25459  type TestSession = TestSession1
 25460  
 25461  type TestStreamInput1 = struct {
 25462  	FnStream     int32
 25463  	F__ccgo_pad1 [4]byte
 25464  	FaData       uintptr
 25465  	FnData       int32
 25466  	FiData       int32
 25467  }
 25468  
 25469  type TestStreamInput = TestStreamInput1
 25470  
 25471  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 25472  	bp := tls.Alloc(88)
 25473  	defer tls.Free(88)
 25474  
 25475  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 25476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 25477  		return TCL_ERROR
 25478  	}
 25479  
 25480  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25481  	return TCL_OK
 25482  }
 25483  
 25484  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 25485  	bp := tls.Alloc(8)
 25486  	defer tls.Free(8)
 25487  
 25488  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 25489  	var rc int32
 25490  
 25491  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 25492  
 25493  	if rc == SQLITE_OK {
 25494  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 25495  	}
 25496  
 25497  	if rc == SQLITE_OK {
 25498  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 25499  	}
 25500  
 25501  	if rc == SQLITE_OK {
 25502  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 25503  	}
 25504  
 25505  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 25506  
 25507  	return rc
 25508  }
 25509  
 25510  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25511  	bp := tls.Alloc(40)
 25512  	defer tls.Free(40)
 25513  
 25514  	var zSql uintptr
 25515  
 25516  	var rc int32
 25517  
 25518  	if objc != 3 {
 25519  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 25520  		return TCL_ERROR
 25521  	}
 25522  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 25523  		return TCL_ERROR
 25524  	}
 25525  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25526  
 25527  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 25528  	if rc != SQLITE_OK {
 25529  		tcl.XTcl_ResetResult(tls, interp)
 25530  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 25531  		return TCL_ERROR
 25532  	}
 25533  
 25534  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 25535  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 25536  	return TCL_OK
 25537  }
 25538  
 25539  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 25540  	bp := tls.Alloc(4)
 25541  	defer tls.Free(4)
 25542  
 25543  	var pObj uintptr
 25544  	*(*int32)(unsafe.Pointer(bp)) = 0
 25545  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 25546  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 25547  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 25548  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25549  		var _objPtr uintptr = pName
 25550  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25551  			tcl.XTclFreeObj(tls, _objPtr)
 25552  		}
 25553  	}
 25554  	if pObj != 0 {
 25555  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 25556  	}
 25557  	return *(*int32)(unsafe.Pointer(bp))
 25558  }
 25559  
 25560  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 25561  	bp := tls.Alloc(24)
 25562  	defer tls.Free(24)
 25563  
 25564  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 25565  	if zErr != 0 {
 25566  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 25567  		sqlite3.Xsqlite3_free(tls, zErr)
 25568  	}
 25569  	return TCL_ERROR
 25570  }
 25571  
 25572  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 25573  	bp := tls.Alloc(4)
 25574  	defer tls.Free(4)
 25575  
 25576  	var p uintptr = pCtx
 25577  	var pEval uintptr
 25578  	var rc int32
 25579  	*(*int32)(unsafe.Pointer(bp)) = 0
 25580  
 25581  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 25582  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25583  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 25584  	if rc == TCL_OK {
 25585  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 25586  	}
 25587  	if rc == TCL_OK {
 25588  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 25589  	}
 25590  	if rc != TCL_OK {
 25591  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 25592  	}
 25593  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25594  		var _objPtr uintptr = pEval
 25595  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25596  			tcl.XTclFreeObj(tls, _objPtr)
 25597  		}
 25598  	}
 25599  
 25600  	return *(*int32)(unsafe.Pointer(bp))
 25601  }
 25602  
 25603  type TestSessionsBlob1 = struct {
 25604  	Fp           uintptr
 25605  	Fn           int32
 25606  	F__ccgo_pad1 [4]byte
 25607  }
 25608  
 25609  type TestSessionsBlob = TestSessionsBlob1
 25610  
 25611  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 25612  	var pBlob uintptr = pCtx
 25613  	var pNew uintptr
 25614  
 25615  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 25616  	if pNew == uintptr(0) {
 25617  		return SQLITE_NOMEM
 25618  	}
 25619  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 25620  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData))
 25621  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 25622  	return SQLITE_OK
 25623  }
 25624  
 25625  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25626  	bp := tls.Alloc(44)
 25627  	defer tls.Free(44)
 25628  
 25629  	var p uintptr = clientData
 25630  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 25631  
 25632  	var rc int32
 25633  
 25634  	if objc < 2 {
 25635  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 25636  		return TCL_ERROR
 25637  	}
 25638  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 25639  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 25640  	if rc != TCL_OK {
 25641  		return rc
 25642  	}
 25643  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 25644  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 25645  		return TCL_ERROR
 25646  	}
 25647  
 25648  	switch *(*int32)(unsafe.Pointer(bp)) {
 25649  	case 0:
 25650  		{
 25651  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25652  			if int32(*(*int8)(unsafe.Pointer(zArg))) == '*' && int32(*(*int8)(unsafe.Pointer(zArg + 1))) == 0 {
 25653  				zArg = uintptr(0)
 25654  			}
 25655  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 25656  			if rc != SQLITE_OK {
 25657  				return test_session_error(tls, interp, rc, uintptr(0))
 25658  			}
 25659  			break
 25660  
 25661  		}
 25662  
 25663  	case 7:
 25664  		fallthrough
 25665  	case 1:
 25666  		{
 25667  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 25668  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 25669  				var pCtx uintptr = bp + 8
 25670  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 25671  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25672  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 25673  					}{testStreamOutput})), pCtx)
 25674  				} else {
 25675  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25676  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 25677  					}{testStreamOutput})), pCtx)
 25678  				}
 25679  			} else {
 25680  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 25681  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 25682  				} else {
 25683  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 25684  				}
 25685  			}
 25686  			if rc == SQLITE_OK {
 25687  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 25688  			}
 25689  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 25690  			if rc != SQLITE_OK {
 25691  				return test_session_error(tls, interp, rc, uintptr(0))
 25692  			}
 25693  			break
 25694  
 25695  		}
 25696  
 25697  	case 2:
 25698  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 25699  		break
 25700  
 25701  	case 3:
 25702  		{
 25703  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 25704  				return TCL_ERROR
 25705  			}
 25706  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 25707  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24)) != 0)))
 25708  			break
 25709  
 25710  		}
 25711  
 25712  	case 4:
 25713  		{
 25714  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 25715  				return TCL_ERROR
 25716  			}
 25717  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 25718  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 28)) != 0)))
 25719  			break
 25720  
 25721  		}
 25722  
 25723  	case 5:
 25724  		{
 25725  			var val int32
 25726  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 25727  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 25728  			break
 25729  
 25730  		}
 25731  
 25732  	case 6:
 25733  		{
 25734  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 25735  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25736  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 25737  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25738  						tcl.XTclFreeObj(tls, _objPtr)
 25739  					}
 25740  				}
 25741  			}
 25742  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 25743  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25744  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 25745  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25746  				f func(*libc.TLS, uintptr, uintptr) int32
 25747  			}{test_table_filter})), clientData)
 25748  			break
 25749  
 25750  		}
 25751  
 25752  	case 8:
 25753  		{
 25754  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 25755  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 25756  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 25757  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 25758  				bp+32)
 25759  
 25760  			if rc != 0 {
 25761  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 25762  			}
 25763  			break
 25764  
 25765  		}
 25766  
 25767  	case 9:
 25768  		{
 25769  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 25770  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 25771  			break
 25772  
 25773  		}
 25774  
 25775  	case 10:
 25776  		{
 25777  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 25778  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 25779  			break
 25780  
 25781  		}
 25782  	case 11:
 25783  		{
 25784  			var rc int32
 25785  
 25786  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 25787  				return TCL_ERROR
 25788  			}
 25789  			rc = sqlite3.Xsqlite3session_object_config(tls,
 25790  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 25791  			if rc != SQLITE_OK {
 25792  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 25793  			} else {
 25794  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 25795  			}
 25796  			break
 25797  
 25798  		}
 25799  	}
 25800  
 25801  	return TCL_OK
 25802  }
 25803  
 25804  type SessionSubcmd = struct {
 25805  	FzSub        uintptr
 25806  	FnArg        int32
 25807  	F__ccgo_pad1 [4]byte
 25808  	FzMsg        uintptr
 25809  	FiSub        int32
 25810  	F__ccgo_pad2 [4]byte
 25811  }
 25812  
 25813  var aSub = [13]SessionSubcmd{
 25814  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 25815  	{FzSub: ts + 10128, FzMsg: ts + 584},
 25816  	{FzSub: ts + 10138, FzMsg: ts + 584},
 25817  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 25818  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 25819  	{FzSub: ts + 10166, FzMsg: ts + 584},
 25820  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 25821  	{FzSub: ts + 10194, FzMsg: ts + 584},
 25822  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 25823  	{FzSub: ts + 10219, FzMsg: ts + 584},
 25824  	{FzSub: ts + 10231, FzMsg: ts + 584},
 25825  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 25826  	{},
 25827  }
 25828  
 25829  func test_session_del(tls *libc.TLS, clientData uintptr) {
 25830  	var p uintptr = clientData
 25831  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 25832  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25833  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 25834  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25835  				tcl.XTclFreeObj(tls, _objPtr)
 25836  			}
 25837  		}
 25838  	}
 25839  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 25840  	tcl.XTcl_Free(tls, p)
 25841  }
 25842  
 25843  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25844  	bp := tls.Alloc(92)
 25845  	defer tls.Free(92)
 25846  
 25847  	var db uintptr
 25848  
 25849  	var rc int32
 25850  	var p uintptr
 25851  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 25852  
 25853  	if objc != 4 {
 25854  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 25855  		return TCL_ERROR
 25856  	}
 25857  
 25858  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 25859  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 25860  		return TCL_ERROR
 25861  	}
 25862  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25863  
 25864  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 25865  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})))
 25866  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 25867  	if rc != SQLITE_OK {
 25868  		tcl.XTcl_Free(tls, p)
 25869  		return test_session_error(tls, interp, rc, uintptr(0))
 25870  	}
 25871  
 25872  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 25873  
 25874  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 25875  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 25876  
 25877  	tcl.XTcl_CreateObjCommand(tls,
 25878  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 25879  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25880  		}{test_session_cmd})), p,
 25881  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 25882  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 25883  	return TCL_OK
 25884  }
 25885  
 25886  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 25887  	if pVal == uintptr(0) {
 25888  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 25889  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 25890  	} else {
 25891  		var pObj uintptr
 25892  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 25893  		case SQLITE_NULL:
 25894  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 25895  			pObj = tcl.XTcl_NewObj(tls)
 25896  			break
 25897  			fallthrough
 25898  		case SQLITE_INTEGER:
 25899  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 25900  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 25901  			break
 25902  			fallthrough
 25903  		case SQLITE_FLOAT:
 25904  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 25905  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 25906  			break
 25907  			fallthrough
 25908  		case SQLITE_TEXT:
 25909  			{
 25910  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 25911  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 25912  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 25913  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 25914  				break
 25915  
 25916  			}
 25917  			fallthrough
 25918  		default:
 25919  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 25920  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 25921  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 25922  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 25923  			break
 25924  		}
 25925  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 25926  	}
 25927  }
 25928  
 25929  type TestConflictHandler1 = struct {
 25930  	Finterp          uintptr
 25931  	FpConflictScript uintptr
 25932  	FpFilterScript   uintptr
 25933  }
 25934  
 25935  type TestConflictHandler = TestConflictHandler1
 25936  
 25937  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 25938  	bp := tls.Alloc(4)
 25939  	defer tls.Free(4)
 25940  
 25941  	var n int32
 25942  
 25943  	var zObj uintptr
 25944  
 25945  	n = int32(libc.Xstrlen(tls, z))
 25946  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 25947  
 25948  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 25949  }
 25950  
 25951  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 25952  	bp := tls.Alloc(4)
 25953  	defer tls.Free(4)
 25954  
 25955  	var p uintptr = pCtx
 25956  	*(*int32)(unsafe.Pointer(bp)) = 1
 25957  	var pEval uintptr
 25958  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 25959  
 25960  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 25961  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25962  
 25963  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 25964  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 25965  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 25966  		tcl.XTcl_BackgroundError(tls, interp)
 25967  	}
 25968  
 25969  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25970  		var _objPtr uintptr = pEval
 25971  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25972  			tcl.XTclFreeObj(tls, _objPtr)
 25973  		}
 25974  	}
 25975  	return *(*int32)(unsafe.Pointer(bp))
 25976  }
 25977  
 25978  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 25979  	bp := tls.Alloc(104)
 25980  	defer tls.Free(104)
 25981  
 25982  	var p uintptr = pCtx
 25983  	var pEval uintptr
 25984  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 25985  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 25986  
 25987  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 25988  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25989  
 25990  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 25991  
 25992  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 25993  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 25994  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 25995  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 25996  	} else {
 25997  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 25998  			func() uintptr {
 25999  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26000  					return ts + 10307
 26001  				}
 26002  				return func() uintptr {
 26003  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 26004  						return ts + 10314
 26005  					}
 26006  					return ts + 10321
 26007  				}()
 26008  			}(), -1))
 26009  
 26010  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26011  
 26012  		switch eConf {
 26013  		case SQLITE_CHANGESET_DATA:
 26014  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26015  			break
 26016  			fallthrough
 26017  		case SQLITE_CHANGESET_NOTFOUND:
 26018  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26019  			break
 26020  			fallthrough
 26021  		case SQLITE_CHANGESET_CONFLICT:
 26022  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 26023  			break
 26024  			fallthrough
 26025  		case SQLITE_CHANGESET_CONSTRAINT:
 26026  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 26027  			break
 26028  		}
 26029  
 26030  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26031  			var i int32
 26032  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 26033  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26034  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 26035  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26036  			}
 26037  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 26038  		}
 26039  
 26040  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26041  			var i int32
 26042  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 26043  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26044  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 26045  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26046  			}
 26047  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 26048  		}
 26049  
 26050  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 26051  			var i int32
 26052  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 26053  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26054  				var rc int32
 26055  				_ = rc
 26056  
 26057  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 26058  
 26059  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 26060  			}
 26061  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 26062  		}
 26063  
 26064  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 26065  			eConf == SQLITE_CHANGESET_NOTFOUND {
 26066  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 26067  			_ = rc
 26068  
 26069  		} else {
 26070  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 26071  			_ = rc
 26072  
 26073  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 26074  
 26075  		}
 26076  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 26077  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 26078  			_ = rc
 26079  
 26080  		} else {
 26081  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 26082  			_ = rc
 26083  
 26084  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 26085  
 26086  		}
 26087  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26088  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 26089  			_ = rc
 26090  
 26091  		} else {
 26092  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 26093  			_ = rc
 26094  
 26095  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 26096  
 26097  		}
 26098  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 26099  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 26100  			_ = rc
 26101  
 26102  		}
 26103  
 26104  	}
 26105  
 26106  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 26107  		tcl.XTcl_BackgroundError(tls, interp)
 26108  	} else {
 26109  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26110  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 26111  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 26112  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 26113  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 26114  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 26115  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 26116  		} else {
 26117  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 26118  		}
 26119  	}
 26120  
 26121  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26122  		var _objPtr uintptr = pEval
 26123  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26124  			tcl.XTclFreeObj(tls, _objPtr)
 26125  		}
 26126  	}
 26127  	return *(*int32)(unsafe.Pointer(bp + 100))
 26128  }
 26129  
 26130  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26131  	bp := tls.Alloc(32)
 26132  	defer tls.Free(32)
 26133  
 26134  	var i int32
 26135  	var x int32 = 0
 26136  
 26137  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26138  
 26139  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26140  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26141  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 26142  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26143  			x++
 26144  		}
 26145  	}
 26146  
 26147  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26148  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26149  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 26150  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26151  			x++
 26152  		}
 26153  	}
 26154  
 26155  	if eConf == SQLITE_CHANGESET_DATA {
 26156  		return SQLITE_CHANGESET_REPLACE
 26157  	}
 26158  	return SQLITE_CHANGESET_OMIT
 26159  }
 26160  
 26161  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 26162  	var p uintptr = pCtx
 26163  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 26164  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 26165  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 26166  
 26167  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 26168  	if pAlloc == uintptr(0) {
 26169  		return SQLITE_NOMEM
 26170  	}
 26171  	sqlite3.Xsqlite3_free(tls, pAlloc)
 26172  
 26173  	if nRet > nReq {
 26174  		nRet = nReq
 26175  	}
 26176  	if nRet > nRem {
 26177  		nRet = nRem
 26178  	}
 26179  
 26180  	if nRet > 0 {
 26181  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet))
 26182  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 26183  	}
 26184  
 26185  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 26186  	return SQLITE_OK
 26187  }
 26188  
 26189  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26190  	bp := tls.Alloc(156)
 26191  	defer tls.Free(156)
 26192  
 26193  	var db uintptr
 26194  
 26195  	var rc int32
 26196  	var pChangeset uintptr
 26197  
 26198  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 26199  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 26200  	var flags int32 = 0
 26201  
 26202  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26203  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26204  
 26205  	if bV2 != 0 {
 26206  		if objc > 1 {
 26207  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26208  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26209  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 26210  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 26211  				objc--
 26212  				objv += 8
 26213  			}
 26214  		}
 26215  		if objc > 1 {
 26216  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26217  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26218  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 26219  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 26220  				objc--
 26221  				objv += 8
 26222  			}
 26223  		}
 26224  	}
 26225  
 26226  	if objc != 4 && objc != 5 {
 26227  		var zMsg uintptr
 26228  		if bV2 != 0 {
 26229  			zMsg = ts + 10388
 26230  		} else {
 26231  			zMsg = ts + 10459
 26232  		}
 26233  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 26234  		return TCL_ERROR
 26235  	}
 26236  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 26237  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 26238  		return TCL_ERROR
 26239  	}
 26240  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 26241  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 26242  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26243  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 26244  		if objc == 5 {
 26245  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 26246  		}
 26247  		return uintptr(0)
 26248  	}()
 26249  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 26250  
 26251  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 26252  		if bV2 == 0 {
 26253  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26254  				func() uintptr {
 26255  					if objc == 5 {
 26256  						return *(*uintptr)(unsafe.Pointer(&struct {
 26257  							f func(*libc.TLS, uintptr, uintptr) int32
 26258  						}{test_filter_handler}))
 26259  					}
 26260  					return uintptr(0)
 26261  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26262  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26263  				}{test_conflict_handler})), bp+120)
 26264  		} else {
 26265  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26266  				func() uintptr {
 26267  					if objc == 5 {
 26268  						return *(*uintptr)(unsafe.Pointer(&struct {
 26269  							f func(*libc.TLS, uintptr, uintptr) int32
 26270  						}{test_filter_handler}))
 26271  					}
 26272  					return uintptr(0)
 26273  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26274  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26275  				}{test_conflict_handler})), bp+120,
 26276  				bp+144, bp+152, flags)
 26277  		}
 26278  	} else {
 26279  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 26280  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 26281  		if bV2 == 0 {
 26282  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26283  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26284  			}{testStreamInput})), bp+24,
 26285  				func() uintptr {
 26286  					if objc == 5 {
 26287  						return *(*uintptr)(unsafe.Pointer(&struct {
 26288  							f func(*libc.TLS, uintptr, uintptr) int32
 26289  						}{test_filter_handler}))
 26290  					}
 26291  					return uintptr(0)
 26292  				}(),
 26293  				*(*uintptr)(unsafe.Pointer(&struct {
 26294  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26295  				}{test_conflict_handler})), bp+120)
 26296  		} else {
 26297  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26298  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26299  			}{testStreamInput})), bp+24,
 26300  				func() uintptr {
 26301  					if objc == 5 {
 26302  						return *(*uintptr)(unsafe.Pointer(&struct {
 26303  							f func(*libc.TLS, uintptr, uintptr) int32
 26304  						}{test_filter_handler}))
 26305  					}
 26306  					return uintptr(0)
 26307  				}(),
 26308  				*(*uintptr)(unsafe.Pointer(&struct {
 26309  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26310  				}{test_conflict_handler})), bp+120,
 26311  				bp+144, bp+152, flags)
 26312  		}
 26313  	}
 26314  
 26315  	if rc != SQLITE_OK {
 26316  		return test_session_error(tls, interp, rc, uintptr(0))
 26317  	} else {
 26318  		tcl.XTcl_ResetResult(tls, interp)
 26319  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 26320  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 26321  		}
 26322  	}
 26323  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 26324  	return TCL_OK
 26325  }
 26326  
 26327  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26328  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 26329  }
 26330  
 26331  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26332  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 26333  }
 26334  
 26335  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26336  	bp := tls.Alloc(92)
 26337  	defer tls.Free(92)
 26338  
 26339  	var db uintptr
 26340  
 26341  	var rc int32
 26342  	var pChangeset uintptr
 26343  
 26344  	if objc != 3 {
 26345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 26346  		return TCL_ERROR
 26347  	}
 26348  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 26349  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26350  		return TCL_ERROR
 26351  	}
 26352  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26353  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 26354  
 26355  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 26356  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 26357  	}{replace_handler})), uintptr(0))
 26358  	if rc != SQLITE_OK {
 26359  		return test_session_error(tls, interp, rc, uintptr(0))
 26360  	}
 26361  	tcl.XTcl_ResetResult(tls, interp)
 26362  	return TCL_OK
 26363  }
 26364  
 26365  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26366  	bp := tls.Alloc(40)
 26367  	defer tls.Free(40)
 26368  
 26369  	var rc int32
 26370  
 26371  	if objc != 2 {
 26372  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 26373  		return TCL_ERROR
 26374  	}
 26375  
 26376  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26377  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 26378  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26379  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26380  
 26381  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 26382  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 26383  			*(*uintptr)(unsafe.Pointer(&struct {
 26384  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26385  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 26386  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26387  			}{testStreamOutput})), bp+24)
 26388  	} else {
 26389  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 26390  	}
 26391  	if rc != SQLITE_OK {
 26392  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26393  	} else {
 26394  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 26395  	}
 26396  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 26397  	return rc
 26398  }
 26399  
 26400  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26401  	bp := tls.Alloc(64)
 26402  	defer tls.Free(64)
 26403  
 26404  	var rc int32
 26405  
 26406  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 26407  
 26408  	if objc != 3 {
 26409  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 26410  		return TCL_ERROR
 26411  	}
 26412  
 26413  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26414  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26415  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26416  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 26417  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26418  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 26419  
 26420  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 26421  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 26422  			*(*uintptr)(unsafe.Pointer(&struct {
 26423  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26424  			}{testStreamInput})), bp,
 26425  			*(*uintptr)(unsafe.Pointer(&struct {
 26426  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26427  			}{testStreamInput})), bp+24,
 26428  			*(*uintptr)(unsafe.Pointer(&struct {
 26429  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26430  			}{testStreamOutput})), bp+48)
 26431  	} else {
 26432  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 26433  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, (*TestStreamInput)(unsafe.Pointer(bp+24)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+24)).FaData, bp+48+8, bp+48)
 26434  	}
 26435  
 26436  	if rc != SQLITE_OK {
 26437  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26438  	} else {
 26439  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 26440  	}
 26441  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 26442  	return rc
 26443  }
 26444  
 26445  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26446  	bp := tls.Alloc(104)
 26447  	defer tls.Free(104)
 26448  
 26449  	var pChangeset uintptr
 26450  
 26451  	var rc int32
 26452  	var pVarname uintptr
 26453  	var pCS uintptr
 26454  	var pScript uintptr
 26455  	var isCheckNext int32 = 0
 26456  	var isInvert int32 = 0
 26457  
 26458  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26459  
 26460  	for objc > 1 {
 26461  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26462  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 26463  		if int32(*(*int8)(unsafe.Pointer(zOpt))) != '-' {
 26464  			break
 26465  		}
 26466  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 26467  			isInvert = 1
 26468  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 26469  			isCheckNext = 1
 26470  		} else {
 26471  			break
 26472  		}
 26473  		objv += 8
 26474  		objc--
 26475  	}
 26476  	if objc != 4 {
 26477  		tcl.XTcl_WrongNumArgs(tls,
 26478  			interp, 1, objv, ts+10544)
 26479  		return TCL_ERROR
 26480  	}
 26481  
 26482  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 26483  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 26484  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26485  
 26486  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 26487  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26488  	if isInvert != 0 {
 26489  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 26490  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26491  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 26492  		} else {
 26493  			var pCtx uintptr = bp
 26494  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26495  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26496  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26497  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26498  			}{testStreamInput})), pCtx, f)
 26499  		}
 26500  	} else {
 26501  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26502  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 26503  		} else {
 26504  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26505  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26506  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26507  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26508  			}{testStreamInput})), bp)
 26509  		}
 26510  	}
 26511  	if rc != SQLITE_OK {
 26512  		return test_session_error(tls, interp, rc, uintptr(0))
 26513  	}
 26514  
 26515  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 26516  		var pVar uintptr
 26517  		var pOld uintptr
 26518  		var pNew uintptr
 26519  
 26520  		var zPK uintptr
 26521  
 26522  		var i int32
 26523  
 26524  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 26525  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26526  			return TCL_ERROR
 26527  		}
 26528  
 26529  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 26530  		pVar = tcl.XTcl_NewObj(tls)
 26531  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 26532  			func() uintptr {
 26533  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 26534  					return ts + 10307
 26535  				}
 26536  				return func() uintptr {
 26537  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 26538  						return ts + 10314
 26539  					}
 26540  					return ts + 10321
 26541  				}()
 26542  			}(), -1))
 26543  
 26544  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 26545  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 64)) != 0)))
 26546  
 26547  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26548  		libc.Xmemset(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26549  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 26550  
 26551  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26552  			*(*int8)(unsafe.Pointer(zPK + uintptr(i))) = func() int8 {
 26553  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 26554  					return int8('X')
 26555  				}
 26556  				return int8('.')
 26557  			}()
 26558  		}
 26559  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 26560  		tcl.XTcl_Free(tls, zPK)
 26561  
 26562  		pOld = tcl.XTcl_NewObj(tls)
 26563  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 26564  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26565  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 26566  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 26567  			}
 26568  		}
 26569  		pNew = tcl.XTcl_NewObj(tls)
 26570  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 26571  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26572  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 26573  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 26574  			}
 26575  		}
 26576  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 26577  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 26578  
 26579  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 26580  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 26581  		if rc != TCL_OK && rc != TCL_CONTINUE {
 26582  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26583  			if rc == TCL_BREAK {
 26584  				return TCL_OK
 26585  			}
 26586  			return rc
 26587  		}
 26588  	}
 26589  
 26590  	if isCheckNext != 0 {
 26591  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26592  		_ = rc2
 26593  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26594  
 26595  	} else {
 26596  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26597  	}
 26598  	if rc != SQLITE_OK {
 26599  		return test_session_error(tls, interp, rc, uintptr(0))
 26600  	}
 26601  
 26602  	return TCL_OK
 26603  }
 26604  
 26605  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26606  	bp := tls.Alloc(48)
 26607  	defer tls.Free(48)
 26608  
 26609  	var p uintptr = clientData
 26610  
 26611  	var rc int32
 26612  
 26613  	if objc < 2 {
 26614  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26615  		return TCL_ERROR
 26616  	}
 26617  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26618  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 26619  	if rc != TCL_OK {
 26620  		return rc
 26621  	}
 26622  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26623  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26624  		return TCL_ERROR
 26625  	}
 26626  
 26627  	switch *(*int32)(unsafe.Pointer(bp)) {
 26628  	case 0:
 26629  		{
 26630  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 26631  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 26632  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 26633  			break
 26634  
 26635  		}
 26636  
 26637  	case 1:
 26638  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26639  		break
 26640  
 26641  	default:
 26642  		{
 26643  			libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26644  			libc.Xmemset(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 26645  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 26646  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26647  
 26648  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 26649  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 26650  					*(*uintptr)(unsafe.Pointer(&struct {
 26651  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26652  					}{testStreamInput})), bp+8,
 26653  					*(*uintptr)(unsafe.Pointer(&struct {
 26654  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26655  					}{testStreamOutput})), bp+32)
 26656  			} else {
 26657  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 26658  			}
 26659  
 26660  			if rc == SQLITE_OK {
 26661  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 26662  			}
 26663  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 26664  			break
 26665  
 26666  		}
 26667  	}
 26668  
 26669  	if rc != SQLITE_OK {
 26670  		return test_session_error(tls, interp, rc, uintptr(0))
 26671  	}
 26672  	return TCL_OK
 26673  }
 26674  
 26675  type RebaseSubcmd = struct {
 26676  	FzSub        uintptr
 26677  	FnArg        int32
 26678  	F__ccgo_pad1 [4]byte
 26679  	FzMsg        uintptr
 26680  	FiSub        int32
 26681  	F__ccgo_pad2 [4]byte
 26682  }
 26683  
 26684  var aSub1 = [4]RebaseSubcmd{
 26685  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 26686  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26687  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 26688  	{},
 26689  }
 26690  
 26691  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 26692  	var p uintptr = clientData
 26693  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 26694  }
 26695  
 26696  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26697  	bp := tls.Alloc(8)
 26698  	defer tls.Free(8)
 26699  
 26700  	var rc int32
 26701  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 26702  	if objc != 2 {
 26703  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 26704  		return SQLITE_ERROR
 26705  	}
 26706  
 26707  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 26708  	if rc != SQLITE_OK {
 26709  		return test_session_error(tls, interp, rc, uintptr(0))
 26710  	}
 26711  
 26712  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 26713  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26714  	}{test_rebaser_cmd})),
 26715  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 26716  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26717  	return TCL_OK
 26718  }
 26719  
 26720  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26721  	bp := tls.Alloc(8)
 26722  	defer tls.Free(8)
 26723  
 26724  	var rc int32
 26725  
 26726  	if objc != 3 {
 26727  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 26728  		return SQLITE_ERROR
 26729  	}
 26730  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26731  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 26732  	if rc != TCL_OK {
 26733  		return rc
 26734  	}
 26735  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 26736  		return TCL_ERROR
 26737  	}
 26738  
 26739  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 26740  	if rc != SQLITE_OK {
 26741  		return test_session_error(tls, interp, rc, uintptr(0))
 26742  	}
 26743  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 26744  	return TCL_OK
 26745  }
 26746  
 26747  type ConfigOpt = struct {
 26748  	FzSub        uintptr
 26749  	Fop          int32
 26750  	F__ccgo_pad1 [4]byte
 26751  }
 26752  
 26753  var aSub2 = [3]ConfigOpt{
 26754  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 26755  	{FzSub: ts + 2758},
 26756  	{},
 26757  }
 26758  
 26759  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 26760  	bp := tls.Alloc(160)
 26761  	defer tls.Free(160)
 26762  
 26763  	*(*[10]struct {
 26764  		FzCmd  uintptr
 26765  		FxProc uintptr
 26766  	})(unsafe.Pointer(bp)) = [10]struct {
 26767  		FzCmd  uintptr
 26768  		FxProc uintptr
 26769  	}{
 26770  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26771  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26772  		}{test_sqlite3session}))},
 26773  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26774  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26775  		}{test_sqlite3session_foreach}))},
 26776  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26777  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26778  		}{test_sqlite3changeset_invert}))},
 26779  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26780  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26781  		}{test_sqlite3changeset_concat}))},
 26782  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26783  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26784  		}{test_sqlite3changeset_apply}))},
 26785  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26786  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26787  		}{test_sqlite3changeset_apply_v2}))},
 26788  		{FzCmd: ts + 10770,
 26789  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26790  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26791  			}{test_sqlite3changeset_apply_replace_all}))},
 26792  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26793  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26794  		}{test_sql_exec_changeset}))},
 26795  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26796  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26797  		}{test_sqlite3rebaser_create}))},
 26798  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26799  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26800  		}{test_sqlite3session_config}))},
 26801  	}
 26802  	var i int32
 26803  
 26804  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 26805  		FzCmd  uintptr
 26806  		FxProc uintptr
 26807  	}{}))/uint64(unsafe.Sizeof(struct {
 26808  		FzCmd  uintptr
 26809  		FxProc uintptr
 26810  	}{})); i++ {
 26811  		var p uintptr = bp + uintptr(i)*16
 26812  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 26813  			FzCmd  uintptr
 26814  			FxProc uintptr
 26815  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 26816  			FzCmd  uintptr
 26817  			FxProc uintptr
 26818  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 26819  	}
 26820  
 26821  	return TCL_OK
 26822  }
 26823  
 26824  type sig_atomic_t = int32
 26825  
 26826  type sigcontext = struct {
 26827  	F__sc_unused int32
 26828  	Fsc_mask     int32
 26829  	Fsc_sp       uint64
 26830  	Fsc_lr       uint64
 26831  	Fsc_elr      uint64
 26832  	Fsc_spsr     uint64
 26833  	Fsc_x        [30]uint64
 26834  	Fsc_cookie   int64
 26835  }
 26836  
 26837  type sigval = struct {
 26838  	F__ccgo_pad1 [0]uint64
 26839  	Fsival_int   int32
 26840  	F__ccgo_pad2 [4]byte
 26841  }
 26842  
 26843  type siginfo_t = struct {
 26844  	Fsi_signo    int32
 26845  	Fsi_code     int32
 26846  	Fsi_errno    int32
 26847  	F__ccgo_pad1 [4]byte
 26848  	F_data       struct {
 26849  		F__ccgo_pad1 [0]uint64
 26850  		F_pad        [29]int32
 26851  		F__ccgo_pad2 [4]byte
 26852  	}
 26853  }
 26854  
 26855  type sigaction = struct {
 26856  	F__sigaction_u struct{ F__sa_handler uintptr }
 26857  	Fsa_mask       sigset_t
 26858  	Fsa_flags      int32
 26859  }
 26860  
 26861  type sig_t = uintptr
 26862  
 26863  type sigvec = struct {
 26864  	Fsv_handler uintptr
 26865  	Fsv_mask    int32
 26866  	Fsv_flags   int32
 26867  }
 26868  
 26869  type sigaltstack = struct {
 26870  	Fss_sp       uintptr
 26871  	Fss_size     size_t
 26872  	Fss_flags    int32
 26873  	F__ccgo_pad1 [4]byte
 26874  }
 26875  
 26876  type stack_t = sigaltstack
 26877  
 26878  type ucontext_t = sigcontext
 26879  
 26880  type SqliteDb = struct {
 26881  	Fdb             uintptr
 26882  	Finterp         uintptr
 26883  	FzBusy          uintptr
 26884  	FzCommit        uintptr
 26885  	FzTrace         uintptr
 26886  	FzTraceV2       uintptr
 26887  	FzProfile       uintptr
 26888  	FzProgress      uintptr
 26889  	FzBindFallback  uintptr
 26890  	FzAuth          uintptr
 26891  	FdisableAuth    int32
 26892  	F__ccgo_pad1    [4]byte
 26893  	FzNull          uintptr
 26894  	FpFunc          uintptr
 26895  	FpUpdateHook    uintptr
 26896  	FpPreUpdateHook uintptr
 26897  	FpRollbackHook  uintptr
 26898  	FpWalHook       uintptr
 26899  	FpUnlockNotify  uintptr
 26900  	FpCollate       uintptr
 26901  	Frc             int32
 26902  	F__ccgo_pad2    [4]byte
 26903  	FpCollateNeeded uintptr
 26904  	FstmtList       uintptr
 26905  	FstmtLast       uintptr
 26906  	FmaxStmt        int32
 26907  	FnStmt          int32
 26908  	FpIncrblob      uintptr
 26909  	FnStep          int32
 26910  	FnSort          int32
 26911  	FnIndex         int32
 26912  	FnVMStep        int32
 26913  	FnTransaction   int32
 26914  	FopenFlags      int32
 26915  	FnRef           int32
 26916  	FbLegacyPrepare int32
 26917  }
 26918  
 26919  type SqlFunc1 = struct {
 26920  	Finterp      uintptr
 26921  	FpScript     uintptr
 26922  	FpDb         uintptr
 26923  	FuseEvalObjv int32
 26924  	FeType       int32
 26925  	FzName       uintptr
 26926  	FpNext       uintptr
 26927  }
 26928  
 26929  type SqlFunc = SqlFunc1
 26930  
 26931  type SqlCollate1 = struct {
 26932  	Finterp  uintptr
 26933  	FzScript uintptr
 26934  	FpNext   uintptr
 26935  }
 26936  
 26937  type SqlCollate = SqlCollate1
 26938  
 26939  type SqlPreparedStmt1 = struct {
 26940  	FpNext       uintptr
 26941  	FpPrev       uintptr
 26942  	FpStmt       uintptr
 26943  	FnSql        int32
 26944  	F__ccgo_pad1 [4]byte
 26945  	FzSql        uintptr
 26946  	FnParm       int32
 26947  	F__ccgo_pad2 [4]byte
 26948  	FapParm      uintptr
 26949  }
 26950  
 26951  type SqlPreparedStmt = SqlPreparedStmt1
 26952  
 26953  type IncrblobChannel1 = struct {
 26954  	FpBlob       uintptr
 26955  	FpDb         uintptr
 26956  	FiSeek       int32
 26957  	F__ccgo_pad1 [4]byte
 26958  	Fchannel     Tcl_Channel
 26959  	FpNext       uintptr
 26960  	FpPrev       uintptr
 26961  }
 26962  
 26963  type IncrblobChannel = IncrblobChannel1
 26964  
 26965  func strlen30(tls *libc.TLS, z uintptr) int32 {
 26966  	var z2 uintptr = z
 26967  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 26968  		z2++
 26969  	}
 26970  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 26971  }
 26972  
 26973  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 26974  	var p uintptr
 26975  	var pNext uintptr
 26976  
 26977  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 26978  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 26979  
 26980  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 26981  	}
 26982  }
 26983  
 26984  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 26985  	var p uintptr = instanceData
 26986  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 26987  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 26988  
 26989  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 26990  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 26991  	}
 26992  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 26993  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 26994  	}
 26995  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 26996  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 26997  	}
 26998  
 26999  	tcl.XTcl_Free(tls, p)
 27000  
 27001  	if rc != SQLITE_OK {
 27002  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 27003  		return TCL_ERROR
 27004  	}
 27005  	return TCL_OK
 27006  }
 27007  
 27008  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 27009  	var p uintptr = instanceData
 27010  	var nRead int32 = bufSize
 27011  	var nBlob int32
 27012  	var rc int32
 27013  
 27014  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27015  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 27016  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27017  	}
 27018  	if nRead <= 0 {
 27019  		return 0
 27020  	}
 27021  
 27022  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27023  	if rc != SQLITE_OK {
 27024  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 27025  		return -1
 27026  	}
 27027  
 27028  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 27029  	return nRead
 27030  }
 27031  
 27032  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 27033  	var p uintptr = instanceData
 27034  	var nWrite int32 = toWrite
 27035  	var nBlob int32
 27036  	var rc int32
 27037  
 27038  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27039  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 27040  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 27041  		return -1
 27042  	}
 27043  	if nWrite <= 0 {
 27044  		return 0
 27045  	}
 27046  
 27047  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27048  	if rc != SQLITE_OK {
 27049  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 27050  		return -1
 27051  	}
 27052  
 27053  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 27054  	return nWrite
 27055  }
 27056  
 27057  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 27058  	var p uintptr = instanceData
 27059  
 27060  	switch seekMode {
 27061  	case SEEK_SET:
 27062  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 27063  		break
 27064  	case SEEK_CUR:
 27065  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 27066  		break
 27067  	case SEEK_END:
 27068  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 27069  		break
 27070  
 27071  	default:
 27072  	}
 27073  
 27074  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27075  }
 27076  
 27077  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 27078  }
 27079  
 27080  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 27081  	return TCL_ERROR
 27082  }
 27083  
 27084  var IncrblobChannelType = Tcl_ChannelType{
 27085  	FtypeName:      ts + 10868,
 27086  	Fversion:       uintptr(0x2),
 27087  	FcloseProc:     0,
 27088  	FinputProc:     0,
 27089  	FoutputProc:    0,
 27090  	FseekProc:      0,
 27091  	FwatchProc:     0,
 27092  	FgetHandleProc: 0,
 27093  }
 27094  
 27095  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 27096  	bp := tls.Alloc(80)
 27097  	defer tls.Free(80)
 27098  
 27099  	var p uintptr
 27100  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 27101  
 27102  	var rc int32
 27103  	var flags int32 = int32(1)<<1 | func() int32 {
 27104  		if isReadonly != 0 {
 27105  			return 0
 27106  		}
 27107  		return int32(1) << 2
 27108  	}()
 27109  
 27110  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 27111  	if rc != SQLITE_OK {
 27112  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 27113  		return TCL_ERROR
 27114  	}
 27115  
 27116  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 27117  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 27118  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 27119  
 27120  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 27121  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 27122  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27123  
 27124  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 27125  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 27126  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27127  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 27128  	}
 27129  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 27130  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 27131  
 27132  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 27133  	return TCL_OK
 27134  }
 27135  
 27136  var count int32 = 0
 27137  
 27138  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 27139  	bp := tls.Alloc(4)
 27140  	defer tls.Free(4)
 27141  
 27142  	var z uintptr
 27143  
 27144  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 27145  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 27146  		var c int32 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 27147  		if c == '$' || c == '[' || c == ';' {
 27148  			return 0
 27149  		}
 27150  	}
 27151  	return 1
 27152  }
 27153  
 27154  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 27155  	var p uintptr
 27156  	var pNew uintptr
 27157  	var nName int32 = strlen30(tls, zName)
 27158  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 27159  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 27160  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1))
 27161  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 27162  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 27163  			tcl.XTcl_Free(tls, pNew)
 27164  			return p
 27165  		}
 27166  	}
 27167  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27168  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 27169  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 27170  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27171  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 27172  	return pNew
 27173  }
 27174  
 27175  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 27176  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 27177  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 27178  	}
 27179  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 27180  	tcl.XTcl_Free(tls, pStmt)
 27181  }
 27182  
 27183  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 27184  	var pPreStmt uintptr
 27185  	var pNext uintptr
 27186  
 27187  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 27188  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 27189  		dbFreeStmt(tls, pPreStmt)
 27190  	}
 27191  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 27192  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 27193  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 27194  }
 27195  
 27196  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27197  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 27198  }
 27199  
 27200  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27201  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 27202  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 27203  		flushStmtCache(tls, pDb)
 27204  		closeIncrblobChannels(tls, pDb)
 27205  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 27206  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 27207  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27208  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 27209  
 27210  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27211  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 27212  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27213  					tcl.XTclFreeObj(tls, _objPtr)
 27214  				}
 27215  			}
 27216  			tcl.XTcl_Free(tls, pFunc)
 27217  		}
 27218  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 27219  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 27220  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 27221  			tcl.XTcl_Free(tls, pCollate)
 27222  		}
 27223  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 27224  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 27225  		}
 27226  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 27227  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 27228  		}
 27229  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 27230  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 27231  		}
 27232  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 27233  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 27234  		}
 27235  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 27236  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 27237  		}
 27238  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 27239  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 27240  		}
 27241  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 27242  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 27243  		}
 27244  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 27245  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27246  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 27247  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27248  					tcl.XTclFreeObj(tls, _objPtr)
 27249  				}
 27250  			}
 27251  		}
 27252  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 27253  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27254  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 27255  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27256  					tcl.XTclFreeObj(tls, _objPtr)
 27257  				}
 27258  			}
 27259  		}
 27260  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 27261  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27262  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 27263  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27264  					tcl.XTclFreeObj(tls, _objPtr)
 27265  				}
 27266  			}
 27267  		}
 27268  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 27269  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 27270  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 27271  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27272  					tcl.XTclFreeObj(tls, _objPtr)
 27273  				}
 27274  			}
 27275  		}
 27276  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 27277  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 27278  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 27279  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27280  					tcl.XTclFreeObj(tls, _objPtr)
 27281  				}
 27282  			}
 27283  		}
 27284  		tcl.XTcl_Free(tls, pDb)
 27285  	}
 27286  }
 27287  
 27288  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 27289  	var pDb uintptr = db
 27290  	delDatabaseRef(tls, pDb)
 27291  }
 27292  
 27293  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 27294  	bp := tls.Alloc(70)
 27295  	defer tls.Free(70)
 27296  
 27297  	var pDb uintptr = cd
 27298  	var rc int32
 27299  
 27300  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 27301  	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)))
 27302  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27303  		return 0
 27304  	}
 27305  	return 1
 27306  }
 27307  
 27308  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 27309  	var pDb uintptr = cd
 27310  	var rc int32
 27311  
 27312  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 27313  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27314  		return 1
 27315  	}
 27316  	return 0
 27317  }
 27318  
 27319  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 27320  	bp := tls.Alloc(216)
 27321  	defer tls.Free(216)
 27322  
 27323  	var pDb uintptr = cd
 27324  
 27325  	tcl.XTcl_DStringInit(tls, bp)
 27326  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 27327  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 27328  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27329  	tcl.XTcl_DStringFree(tls, bp)
 27330  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27331  }
 27332  
 27333  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 27334  	var pDb uintptr = cd
 27335  	var pCmd uintptr
 27336  
 27337  	switch type1 {
 27338  	case uint32(SQLITE_TRACE_STMT):
 27339  		{
 27340  			var pStmt uintptr = pd
 27341  			var zSql uintptr = xd
 27342  
 27343  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27344  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27345  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27346  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27347  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27348  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 27349  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27350  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27351  				var _objPtr uintptr = pCmd
 27352  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27353  					tcl.XTclFreeObj(tls, _objPtr)
 27354  				}
 27355  			}
 27356  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27357  			break
 27358  
 27359  		}
 27360  	case uint32(SQLITE_TRACE_PROFILE):
 27361  		{
 27362  			var pStmt uintptr = pd
 27363  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 27364  
 27365  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27366  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27367  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27368  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27369  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27370  				tcl.XTcl_NewWideIntObj(tls, ns))
 27371  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27372  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27373  				var _objPtr uintptr = pCmd
 27374  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27375  					tcl.XTclFreeObj(tls, _objPtr)
 27376  				}
 27377  			}
 27378  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27379  			break
 27380  
 27381  		}
 27382  	case uint32(SQLITE_TRACE_ROW):
 27383  		{
 27384  			var pStmt uintptr = pd
 27385  
 27386  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27387  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27388  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27389  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27390  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27391  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27392  				var _objPtr uintptr = pCmd
 27393  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27394  					tcl.XTclFreeObj(tls, _objPtr)
 27395  				}
 27396  			}
 27397  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27398  			break
 27399  
 27400  		}
 27401  	case uint32(SQLITE_TRACE_CLOSE):
 27402  		{
 27403  			var db uintptr = pd
 27404  
 27405  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27406  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27407  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27408  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 27409  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27410  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27411  				var _objPtr uintptr = pCmd
 27412  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27413  					tcl.XTclFreeObj(tls, _objPtr)
 27414  				}
 27415  			}
 27416  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27417  			break
 27418  
 27419  		}
 27420  	}
 27421  	return SQLITE_OK
 27422  }
 27423  
 27424  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 27425  	bp := tls.Alloc(328)
 27426  	defer tls.Free(328)
 27427  
 27428  	var pDb uintptr = cd
 27429  
 27430  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]int8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 27431  	tcl.XTcl_DStringInit(tls, bp+112)
 27432  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 27433  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 27434  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 27435  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 27436  	tcl.XTcl_DStringFree(tls, bp+112)
 27437  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27438  }
 27439  
 27440  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 27441  	var pDb uintptr = cd
 27442  	var rc int32
 27443  
 27444  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 27445  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27446  		return 1
 27447  	}
 27448  	return 0
 27449  }
 27450  
 27451  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 27452  	var pDb uintptr = clientData
 27453  
 27454  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 27455  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27456  	}
 27457  }
 27458  
 27459  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 27460  	bp := tls.Alloc(4)
 27461  	defer tls.Free(4)
 27462  
 27463  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 27464  	var p uintptr
 27465  	var pDb uintptr = clientData
 27466  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27467  
 27468  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 27469  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 27470  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27471  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 27472  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 27473  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 27474  		tcl.XTcl_BackgroundError(tls, interp)
 27475  	}
 27476  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27477  		var _objPtr uintptr = p
 27478  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27479  			tcl.XTclFreeObj(tls, _objPtr)
 27480  		}
 27481  	}
 27482  
 27483  	return *(*int32)(unsafe.Pointer(bp))
 27484  }
 27485  
 27486  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 27487  	bp := tls.Alloc(80)
 27488  	defer tls.Free(80)
 27489  
 27490  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 27491  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 27492  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 27493  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 27494  }
 27495  
 27496  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 27497  	var i int32
 27498  	for i = 0; i < nArg; i++ {
 27499  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 27500  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 27501  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 27502  
 27503  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 27504  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27505  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 27506  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27507  				tcl.XTclFreeObj(tls, _objPtr)
 27508  			}
 27509  		}
 27510  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 27511  	}
 27512  }
 27513  
 27514  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 27515  	var pDb uintptr = p
 27516  	var pCmd uintptr
 27517  
 27518  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 27519  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27520  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 27521  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27522  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 27523  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 27524  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 27525  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27526  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27527  		var _objPtr uintptr = pCmd
 27528  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27529  			tcl.XTclFreeObj(tls, _objPtr)
 27530  		}
 27531  	}
 27532  }
 27533  
 27534  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 27535  
 27536  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 27537  	var pDb uintptr = p
 27538  	var pCmd uintptr
 27539  
 27540  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 27541  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27542  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 27543  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27544  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 27545  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 27546  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27547  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27548  		var _objPtr uintptr = pCmd
 27549  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27550  			tcl.XTclFreeObj(tls, _objPtr)
 27551  		}
 27552  	}
 27553  }
 27554  
 27555  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 27556  
 27557  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 27558  	var pDb uintptr = pCtx
 27559  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 27560  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 27561  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 27562  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 27563  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27564  		var _objPtr uintptr = pScript
 27565  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27566  			tcl.XTclFreeObj(tls, _objPtr)
 27567  		}
 27568  	}
 27569  }
 27570  
 27571  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 27572  	var p uintptr = pCtx
 27573  	var pCmd uintptr
 27574  
 27575  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 27576  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27577  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 27578  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 27579  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27580  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27581  		var _objPtr uintptr = pCmd
 27582  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27583  			tcl.XTclFreeObj(tls, _objPtr)
 27584  		}
 27585  	}
 27586  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 27587  }
 27588  
 27589  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 27590  	bp := tls.Alloc(40)
 27591  	defer tls.Free(40)
 27592  
 27593  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 27594  	var pCmd uintptr
 27595  	var i int32
 27596  	var rc int32
 27597  
 27598  	if argc == 0 {
 27599  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 27600  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27601  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 27602  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27603  			var _objPtr uintptr = pCmd
 27604  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27605  				tcl.XTclFreeObj(tls, _objPtr)
 27606  			}
 27607  		}
 27608  	} else {
 27609  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 27610  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27611  			return
 27612  		}
 27613  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 27614  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27615  		for i = 0; i < argc; i++ {
 27616  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 27617  			var pVal uintptr
 27618  
 27619  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 27620  			case SQLITE_BLOB:
 27621  				{
 27622  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 27623  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 27624  					break
 27625  
 27626  				}
 27627  				fallthrough
 27628  			case SQLITE_INTEGER:
 27629  				{
 27630  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 27631  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 27632  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 27633  					} else {
 27634  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 27635  					}
 27636  					break
 27637  
 27638  				}
 27639  				fallthrough
 27640  			case SQLITE_FLOAT:
 27641  				{
 27642  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 27643  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 27644  					break
 27645  
 27646  				}
 27647  				fallthrough
 27648  			case SQLITE_NULL:
 27649  				{
 27650  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 27651  					break
 27652  
 27653  				}
 27654  				fallthrough
 27655  			default:
 27656  				{
 27657  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 27658  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 27659  					break
 27660  
 27661  				}
 27662  			}
 27663  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 27664  			if rc != 0 {
 27665  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27666  					var _objPtr uintptr = pCmd
 27667  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27668  						tcl.XTclFreeObj(tls, _objPtr)
 27669  					}
 27670  				}
 27671  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27672  				return
 27673  			}
 27674  		}
 27675  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 27676  			tcl.XTcl_GetString(tls, pCmd)
 27677  		}
 27678  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27679  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27680  			var _objPtr uintptr = pCmd
 27681  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27682  				tcl.XTclFreeObj(tls, _objPtr)
 27683  			}
 27684  		}
 27685  	}
 27686  
 27687  	if rc != 0 && rc != TCL_RETURN {
 27688  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27689  	} else {
 27690  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 27691  
 27692  		var data uintptr
 27693  		var zType uintptr = func() uintptr {
 27694  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 27695  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 27696  			}
 27697  			return ts + 584
 27698  		}()
 27699  		var c int8 = *(*int8)(unsafe.Pointer(zType))
 27700  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 27701  
 27702  		if eType == SQLITE_NULL {
 27703  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 27704  				eType = SQLITE_BLOB
 27705  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 27706  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 27707  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 27708  				eType = SQLITE_INTEGER
 27709  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 27710  				eType = SQLITE_FLOAT
 27711  			} else {
 27712  				eType = SQLITE_TEXT
 27713  			}
 27714  		}
 27715  
 27716  		switch eType {
 27717  		case SQLITE_BLOB:
 27718  			{
 27719  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 27720  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 27721  				break
 27722  
 27723  			}
 27724  			fallthrough
 27725  		case SQLITE_INTEGER:
 27726  			{
 27727  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 27728  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 27729  					break
 27730  				}
 27731  
 27732  			}
 27733  			fallthrough
 27734  		case SQLITE_FLOAT:
 27735  			{
 27736  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 27737  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 27738  					break
 27739  				}
 27740  
 27741  			}
 27742  			fallthrough
 27743  		default:
 27744  			{
 27745  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 27746  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 27747  				break
 27748  
 27749  			}
 27750  		}
 27751  
 27752  	}
 27753  }
 27754  
 27755  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 27756  	bp := tls.Alloc(216)
 27757  	defer tls.Free(216)
 27758  
 27759  	var zCode uintptr
 27760  
 27761  	var rc int32
 27762  	var zReply uintptr
 27763  
 27764  	var pDb uintptr = pArg
 27765  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 27766  		return SQLITE_OK
 27767  	}
 27768  
 27769  	switch code {
 27770  	case SQLITE_COPY:
 27771  		zCode = ts + 10944
 27772  		break
 27773  	case SQLITE_CREATE_INDEX:
 27774  		zCode = ts + 10956
 27775  		break
 27776  	case SQLITE_CREATE_TABLE:
 27777  		zCode = ts + 10976
 27778  		break
 27779  	case SQLITE_CREATE_TEMP_INDEX:
 27780  		zCode = ts + 10996
 27781  		break
 27782  	case SQLITE_CREATE_TEMP_TABLE:
 27783  		zCode = ts + 11021
 27784  		break
 27785  	case SQLITE_CREATE_TEMP_TRIGGER:
 27786  		zCode = ts + 11046
 27787  		break
 27788  	case SQLITE_CREATE_TEMP_VIEW:
 27789  		zCode = ts + 11073
 27790  		break
 27791  	case SQLITE_CREATE_TRIGGER:
 27792  		zCode = ts + 11097
 27793  		break
 27794  	case SQLITE_CREATE_VIEW:
 27795  		zCode = ts + 11119
 27796  		break
 27797  	case SQLITE_DELETE:
 27798  		zCode = ts + 11138
 27799  		break
 27800  	case SQLITE_DROP_INDEX:
 27801  		zCode = ts + 11152
 27802  		break
 27803  	case SQLITE_DROP_TABLE:
 27804  		zCode = ts + 11170
 27805  		break
 27806  	case SQLITE_DROP_TEMP_INDEX:
 27807  		zCode = ts + 11188
 27808  		break
 27809  	case SQLITE_DROP_TEMP_TABLE:
 27810  		zCode = ts + 11211
 27811  		break
 27812  	case SQLITE_DROP_TEMP_TRIGGER:
 27813  		zCode = ts + 11234
 27814  		break
 27815  	case SQLITE_DROP_TEMP_VIEW:
 27816  		zCode = ts + 11259
 27817  		break
 27818  	case SQLITE_DROP_TRIGGER:
 27819  		zCode = ts + 11281
 27820  		break
 27821  	case SQLITE_DROP_VIEW:
 27822  		zCode = ts + 11301
 27823  		break
 27824  	case SQLITE_INSERT:
 27825  		zCode = ts + 11318
 27826  		break
 27827  	case SQLITE_PRAGMA:
 27828  		zCode = ts + 11332
 27829  		break
 27830  	case SQLITE_READ:
 27831  		zCode = ts + 11346
 27832  		break
 27833  	case SQLITE_SELECT:
 27834  		zCode = ts + 11358
 27835  		break
 27836  	case SQLITE_TRANSACTION:
 27837  		zCode = ts + 11372
 27838  		break
 27839  	case SQLITE_UPDATE:
 27840  		zCode = ts + 11391
 27841  		break
 27842  	case SQLITE_ATTACH:
 27843  		zCode = ts + 11405
 27844  		break
 27845  	case SQLITE_DETACH:
 27846  		zCode = ts + 11419
 27847  		break
 27848  	case SQLITE_ALTER_TABLE:
 27849  		zCode = ts + 11433
 27850  		break
 27851  	case SQLITE_REINDEX:
 27852  		zCode = ts + 11452
 27853  		break
 27854  	case SQLITE_ANALYZE:
 27855  		zCode = ts + 11467
 27856  		break
 27857  	case SQLITE_CREATE_VTABLE:
 27858  		zCode = ts + 11482
 27859  		break
 27860  	case SQLITE_DROP_VTABLE:
 27861  		zCode = ts + 11503
 27862  		break
 27863  	case SQLITE_FUNCTION:
 27864  		zCode = ts + 11522
 27865  		break
 27866  	case SQLITE_SAVEPOINT:
 27867  		zCode = ts + 11538
 27868  		break
 27869  	case SQLITE_RECURSIVE:
 27870  		zCode = ts + 11555
 27871  		break
 27872  	default:
 27873  		zCode = ts + 11572
 27874  		break
 27875  	}
 27876  	tcl.XTcl_DStringInit(tls, bp)
 27877  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 27878  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 27879  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27880  		if zArg1 != 0 {
 27881  			return zArg1
 27882  		}
 27883  		return ts + 584
 27884  	}())
 27885  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27886  		if zArg2 != 0 {
 27887  			return zArg2
 27888  		}
 27889  		return ts + 584
 27890  	}())
 27891  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27892  		if zArg3 != 0 {
 27893  			return zArg3
 27894  		}
 27895  		return ts + 584
 27896  	}())
 27897  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27898  		if zArg4 != 0 {
 27899  			return zArg4
 27900  		}
 27901  		return ts + 584
 27902  	}())
 27903  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27904  	tcl.XTcl_DStringFree(tls, bp)
 27905  	if rc == TCL_OK {
 27906  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27907  	} else {
 27908  		zReply = ts + 11577
 27909  	}
 27910  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 27911  		rc = SQLITE_OK
 27912  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 27913  		rc = SQLITE_DENY
 27914  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 27915  		rc = SQLITE_IGNORE
 27916  	} else {
 27917  		rc = 999
 27918  	}
 27919  	return rc
 27920  }
 27921  
 27922  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 27923  	var zLine uintptr
 27924  	var nLine int32
 27925  	var n int32
 27926  
 27927  	nLine = 100
 27928  	zLine = libc.Xmalloc(tls, uint64(nLine))
 27929  	if zLine == uintptr(0) {
 27930  		return uintptr(0)
 27931  	}
 27932  	n = 0
 27933  	for 1 != 0 {
 27934  		if n+100 > nLine {
 27935  			nLine = nLine*2 + 100
 27936  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 27937  			if zLine == uintptr(0) {
 27938  				return uintptr(0)
 27939  			}
 27940  		}
 27941  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 27942  			if n == 0 {
 27943  				libc.Xfree(tls, zLine)
 27944  				return uintptr(0)
 27945  			}
 27946  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 27947  			break
 27948  		}
 27949  		for *(*int8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 27950  			n++
 27951  		}
 27952  		if n > 0 && int32(*(*int8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 27953  			n--
 27954  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 27955  			break
 27956  		}
 27957  	}
 27958  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 27959  	return zLine
 27960  }
 27961  
 27962  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 27963  	bp := tls.Alloc(16)
 27964  	defer tls.Free(16)
 27965  
 27966  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 27967  	var rc int32 = result
 27968  	var zEnd uintptr
 27969  
 27970  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 27971  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 27972  
 27973  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 27974  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 27975  		if rc != TCL_ERROR {
 27976  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 27977  			rc = TCL_ERROR
 27978  		}
 27979  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 27980  	}
 27981  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 27982  
 27983  	delDatabaseRef(tls, pDb)
 27984  	return rc
 27985  }
 27986  
 27987  var azEnd = [4]uintptr{
 27988  	ts + 11603,
 27989  	ts + 11628,
 27990  	ts + 11635,
 27991  	ts + 7824,
 27992  }
 27993  
 27994  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 27995  	var prepFlags uint32 = uint32(0)
 27996  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 27997  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 27998  	}
 27999  
 28000  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 28001  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 28002  	}
 28003  
 28004  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 28005  }
 28006  
 28007  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 28008  	bp := tls.Alloc(32)
 28009  	defer tls.Free(32)
 28010  
 28011  	var zSql uintptr = zIn
 28012  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28013  	var pPreStmt uintptr
 28014  	var nSql int32
 28015  	var nVar int32 = 0
 28016  	var iParm int32 = 0
 28017  	var c int8
 28018  	var i int32
 28019  	var needResultReset int32 = 0
 28020  	var rc int32 = SQLITE_OK
 28021  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28022  
 28023  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 28024  
 28025  	for int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 28026  		zSql++
 28027  	}
 28028  	nSql = strlen30(tls, zSql)
 28029  
 28030  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 28031  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 28032  		if nSql >= n &&
 28033  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 28034  			(int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 28035  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28036  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 28037  
 28038  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 28039  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28040  			} else {
 28041  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28042  			}
 28043  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 28044  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28045  			} else {
 28046  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28047  			}
 28048  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28049  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28050  			break
 28051  		}
 28052  	}
 28053  
 28054  	if pPreStmt == uintptr(0) {
 28055  		var nByte int32
 28056  
 28057  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 28058  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28059  			return TCL_ERROR
 28060  		}
 28061  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 28062  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 28063  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28064  				return TCL_ERROR
 28065  			} else {
 28066  				return TCL_OK
 28067  			}
 28068  		}
 28069  
 28070  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28071  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 28072  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 28073  		libc.Xmemset(tls, pPreStmt, 0, uint64(nByte))
 28074  
 28075  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 28076  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 28077  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28078  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 28079  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 28080  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 28081  			libc.Xmemcpy(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 28082  			*(*int8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = int8(0)
 28083  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 28084  		}
 28085  	}
 28086  
 28087  	for i = 1; i <= nVar; i++ {
 28088  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28089  		if zVar != uintptr(0) && (int32(*(*int8)(unsafe.Pointer(zVar))) == '$' || int32(*(*int8)(unsafe.Pointer(zVar))) == ':' || int32(*(*int8)(unsafe.Pointer(zVar))) == '@') {
 28090  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 28091  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 28092  				var pCmd uintptr
 28093  				var rx int32
 28094  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 28095  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28096  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 28097  				if needResultReset != 0 {
 28098  					tcl.XTcl_ResetResult(tls, interp)
 28099  				}
 28100  				needResultReset = 1
 28101  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 28102  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28103  					var _objPtr uintptr = pCmd
 28104  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28105  						tcl.XTclFreeObj(tls, _objPtr)
 28106  					}
 28107  				}
 28108  				if rx == TCL_OK {
 28109  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 28110  				} else if rx == TCL_ERROR {
 28111  					rc = TCL_ERROR
 28112  					break
 28113  				} else {
 28114  					pVar = uintptr(0)
 28115  				}
 28116  			}
 28117  			if pVar != 0 {
 28118  				var data uintptr
 28119  				var zType uintptr = func() uintptr {
 28120  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28121  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28122  					}
 28123  					return ts + 584
 28124  				}()
 28125  				c = *(*int8)(unsafe.Pointer(zType))
 28126  				if int32(*(*int8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28127  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 28128  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28129  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28130  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28131  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 28132  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 28133  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 28134  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28135  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 28136  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 28137  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28138  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 28139  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28140  				} else {
 28141  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 28142  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28143  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28144  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28145  				}
 28146  			} else {
 28147  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28148  			}
 28149  			if needResultReset != 0 {
 28150  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28151  			}
 28152  		}
 28153  	}
 28154  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 28155  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 28156  	if needResultReset != 0 && rc == TCL_OK {
 28157  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28158  	}
 28159  
 28160  	return rc
 28161  }
 28162  
 28163  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 28164  	var i int32
 28165  
 28166  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 28167  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28168  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8))
 28169  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28170  				tcl.XTclFreeObj(tls, _objPtr)
 28171  			}
 28172  		}
 28173  	}
 28174  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 28175  
 28176  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 28177  		dbFreeStmt(tls, pPreStmt)
 28178  	} else {
 28179  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 28180  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 28181  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 28182  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 28183  		}
 28184  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 28185  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 28186  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 28187  		} else {
 28188  		}
 28189  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 28190  
 28191  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 28192  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 28193  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 28194  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 28195  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28196  			dbFreeStmt(tls, pLast)
 28197  		}
 28198  	}
 28199  }
 28200  
 28201  type DbEvalContext1 = struct {
 28202  	FpDb       uintptr
 28203  	FpSql      uintptr
 28204  	FzSql      uintptr
 28205  	FpPreStmt  uintptr
 28206  	FnCol      int32
 28207  	FevalFlags int32
 28208  	FpArray    uintptr
 28209  	FapColName uintptr
 28210  }
 28211  
 28212  type DbEvalContext = DbEvalContext1
 28213  
 28214  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 28215  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 28216  		var i int32
 28217  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 28218  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28219  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8))
 28220  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28221  					tcl.XTclFreeObj(tls, _objPtr)
 28222  				}
 28223  			}
 28224  		}
 28225  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 28226  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 28227  	}
 28228  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 28229  }
 28230  
 28231  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 28232  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})))
 28233  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 28234  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 28235  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 28236  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 28237  	if pArray != 0 {
 28238  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 28239  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 28240  	}
 28241  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 28242  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28243  }
 28244  
 28245  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 28246  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 28247  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28248  		var i int32
 28249  		var nCol int32
 28250  		var apColName uintptr = uintptr(0)
 28251  
 28252  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 28253  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 28254  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 28255  			for i = 0; i < nCol; i++ {
 28256  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 28257  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 28258  			}
 28259  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 28260  		}
 28261  
 28262  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28263  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 28264  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 28265  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 28266  
 28267  			for i = 0; i < nCol; i++ {
 28268  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 28269  			}
 28270  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 28271  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 28272  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28273  				var _objPtr uintptr = pStar
 28274  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28275  					tcl.XTclFreeObj(tls, _objPtr)
 28276  				}
 28277  			}
 28278  		}
 28279  	}
 28280  
 28281  	if papColName != 0 {
 28282  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 28283  	}
 28284  	if pnCol != 0 {
 28285  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 28286  	}
 28287  }
 28288  
 28289  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 28290  	var zPrevSql uintptr = uintptr(0)
 28291  
 28292  	for *(*int8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28293  		var rc int32
 28294  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 28295  			zPrevSql = func() uintptr {
 28296  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 28297  					return uintptr(0)
 28298  				}
 28299  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 28300  			}()
 28301  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 28302  			if rc != TCL_OK {
 28303  				return rc
 28304  			}
 28305  		} else {
 28306  			var rcs int32
 28307  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 28308  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 28309  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28310  
 28311  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 28312  			if rcs == SQLITE_ROW {
 28313  				return TCL_OK
 28314  			}
 28315  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28316  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 28317  			}
 28318  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 28319  
 28320  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 28321  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 28322  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 28323  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 28324  			dbReleaseColumnNames(tls, p)
 28325  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28326  
 28327  			if rcs != SQLITE_OK {
 28328  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 28329  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 28330  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 28331  					continue
 28332  				}
 28333  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 28334  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28335  				return TCL_ERROR
 28336  			} else {
 28337  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 28338  			}
 28339  		}
 28340  	}
 28341  
 28342  	return TCL_BREAK
 28343  }
 28344  
 28345  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 28346  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28347  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 28348  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 28349  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28350  	}
 28351  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28352  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28353  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28354  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28355  				tcl.XTclFreeObj(tls, _objPtr)
 28356  			}
 28357  		}
 28358  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 28359  	}
 28360  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28361  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 28362  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28363  			tcl.XTclFreeObj(tls, _objPtr)
 28364  		}
 28365  	}
 28366  	dbReleaseColumnNames(tls, p)
 28367  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28368  }
 28369  
 28370  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 28371  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28372  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 28373  	case SQLITE_BLOB:
 28374  		{
 28375  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 28376  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 28377  			if !(zBlob != 0) {
 28378  				bytes = 0
 28379  			}
 28380  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 28381  
 28382  		}
 28383  	case SQLITE_INTEGER:
 28384  		{
 28385  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 28386  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 28387  				return tcl.XTcl_NewIntObj(tls, int32(v))
 28388  			} else {
 28389  				return tcl.XTcl_NewWideIntObj(tls, v)
 28390  			}
 28391  
 28392  		}
 28393  		fallthrough
 28394  	case SQLITE_FLOAT:
 28395  		{
 28396  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 28397  
 28398  		}
 28399  	case SQLITE_NULL:
 28400  		{
 28401  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28402  
 28403  		}
 28404  	}
 28405  
 28406  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 28407  }
 28408  
 28409  func DbUseNre(tls *libc.TLS) int32 {
 28410  	bp := tls.Alloc(8)
 28411  	defer tls.Free(8)
 28412  
 28413  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 28414  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 28415  }
 28416  
 28417  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28418  	bp := tls.Alloc(16)
 28419  	defer tls.Free(16)
 28420  
 28421  	var rc int32 = result
 28422  
 28423  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 28424  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 28425  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28426  
 28427  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 28428  		var i int32
 28429  
 28430  		dbEvalRowInfo(tls, p, bp, bp+8)
 28431  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 28432  			if pArray == uintptr(0) {
 28433  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 28434  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 28435  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 28436  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 28437  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 28438  			} else {
 28439  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 28440  			}
 28441  		}
 28442  
 28443  		if DbUseNre(tls) != 0 {
 28444  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 28445  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 28446  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 28447  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 28448  		} else {
 28449  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 28450  		}
 28451  	}
 28452  
 28453  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28454  		var _objPtr uintptr = pScript
 28455  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28456  			tcl.XTclFreeObj(tls, _objPtr)
 28457  		}
 28458  	}
 28459  	dbEvalFinalize(tls, p)
 28460  	tcl.XTcl_Free(tls, p)
 28461  
 28462  	if rc == TCL_OK || rc == TCL_BREAK {
 28463  		tcl.XTcl_ResetResult(tls, interp)
 28464  		rc = TCL_OK
 28465  	}
 28466  	return rc
 28467  }
 28468  
 28469  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 28470  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 28471  
 28472  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 28473  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 28474  		if pArg != 0 {
 28475  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28476  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 28477  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28478  					tcl.XTclFreeObj(tls, _objPtr)
 28479  				}
 28480  			}
 28481  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 28482  		}
 28483  	}
 28484  	if pArg != 0 {
 28485  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 28486  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 28487  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 28488  		}
 28489  	}
 28490  
 28491  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 28492  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 28493  			return *(*uintptr)(unsafe.Pointer(&struct {
 28494  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 28495  			}{DbPreUpdateHandler}))
 28496  		}
 28497  		return uintptr(0)
 28498  	}(), pDb)
 28499  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 28500  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 28501  			return *(*uintptr)(unsafe.Pointer(&struct {
 28502  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 28503  			}{DbUpdateHandler}))
 28504  		}
 28505  		return uintptr(0)
 28506  	}(), pDb)
 28507  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 28508  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 28509  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 28510  		}
 28511  		return uintptr(0)
 28512  	}(), pDb)
 28513  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 28514  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 28515  			return *(*uintptr)(unsafe.Pointer(&struct {
 28516  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 28517  			}{DbWalHandler}))
 28518  		}
 28519  		return uintptr(0)
 28520  	}(), pDb)
 28521  }
 28522  
 28523  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28524  	bp := tls.Alloc(1588)
 28525  	defer tls.Free(1588)
 28526  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 28527  
 28528  	var pDb uintptr
 28529  
 28530  	var rc int32
 28531  	var zAuth uintptr
 28532  
 28533  	var zDestFile uintptr
 28534  	var zSrcDb uintptr
 28535  
 28536  	var pBackup uintptr
 28537  	var zCallback uintptr
 28538  
 28539  	var zBusy uintptr
 28540  
 28541  	var subCmd uintptr
 28542  
 28543  	var pResult uintptr
 28544  	var pCollate uintptr
 28545  	var zName uintptr
 28546  	var zScript uintptr
 28547  
 28548  	var _objPtr uintptr
 28549  	var zCommit uintptr
 28550  
 28551  	var pResult1 uintptr
 28552  	var isComplete int32
 28553  
 28554  	var zOpt uintptr
 28555  
 28556  	var pResult2 uintptr
 28557  	var ii int32
 28558  	var zErr uintptr
 28559  	var nErr int32
 28560  	var z uintptr
 28561  	var zTable uintptr
 28562  	var zFile uintptr
 28563  	var zConflict uintptr
 28564  
 28565  	var nCol int32
 28566  	var nByte int32
 28567  	var i int32
 28568  	var j int32
 28569  	var nSep int32
 28570  	var nNull int32
 28571  	var zSql uintptr
 28572  	var zLine uintptr
 28573  	var azCol uintptr
 28574  	var zCommit1 uintptr
 28575  	var in uintptr
 28576  	var lineno int32
 28577  
 28578  	var pResult3 uintptr
 28579  
 28580  	var zSep uintptr
 28581  	var zNull uintptr
 28582  
 28583  	var z1 uintptr
 28584  	var flags int32
 28585  	var zSchema uintptr
 28586  	var pValue uintptr
 28587  	var pBA uintptr
 28588  	var pData uintptr
 28589  
 28590  	var xrc int32
 28591  
 28592  	var i1 int32
 28593  
 28594  	var pResult4 uintptr
 28595  
 28596  	var i2 int32
 28597  
 28598  	var _objPtr1 uintptr
 28599  
 28600  	var pRet uintptr
 28601  
 28602  	var p uintptr
 28603  	var pArray uintptr
 28604  	var pScript uintptr
 28605  	var evalFlags int32
 28606  	var zOpt1 uintptr
 28607  
 28608  	var z2 uintptr
 28609  	var n1 int32
 28610  	var _objPtr2 uintptr
 28611  	var flags1 int32
 28612  	var pFunc uintptr
 28613  	var pScript1 uintptr
 28614  	var zName1 uintptr
 28615  
 28616  	var i3 int32
 28617  
 28618  	var isReadonly1 int32
 28619  	var zDb uintptr
 28620  	var zTable1 uintptr
 28621  	var zColumn uintptr
 28622  
 28623  	var zNull1 uintptr
 28624  	var pResult5 uintptr
 28625  	var rowid Tcl_WideInt
 28626  	var zProgress uintptr
 28627  
 28628  	var zProfile uintptr
 28629  
 28630  	var zSrcFile uintptr
 28631  	var zDestDb uintptr
 28632  
 28633  	var pBackup1 uintptr
 28634  	var nTimeout int32
 28635  	var needFree int32
 28636  	var zSchema1 uintptr
 28637  
 28638  	var pData1 uintptr
 28639  	var v2 int32
 28640  	var zOp uintptr
 28641  
 28642  	var pResult6 uintptr
 28643  	var zTrace uintptr
 28644  
 28645  	var _objPtr3 uintptr
 28646  	var _objPtr4 uintptr
 28647  
 28648  	var pError uintptr
 28649  
 28650  	var i4 int32
 28651  	var zTraceV2 uintptr
 28652  
 28653  	var wMask Tcl_WideInt
 28654  
 28655  	var pScript2 uintptr
 28656  	var zBegin uintptr
 28657  	var _objPtr5 uintptr
 28658  	var xNotify uintptr
 28659  	var pNotifyArg uintptr
 28660  	var nCol2 int32
 28661  	var pRet1 uintptr
 28662  	var pObj1 uintptr
 28663  
 28664  	var ppHook uintptr
 28665  
 28666  	var zArg uintptr
 28667  	var i5 int32
 28668  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 28669  	rc = TCL_OK
 28670  
 28671  	if !(objc < 2) {
 28672  		goto __1
 28673  	}
 28674  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 28675  	return TCL_ERROR
 28676  __1:
 28677  	;
 28678  	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) {
 28679  		goto __2
 28680  	}
 28681  	return TCL_ERROR
 28682  __2:
 28683  	;
 28684  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 28685  	case uint32(0):
 28686  		goto __4
 28687  
 28688  	case uint32(1):
 28689  		goto __5
 28690  
 28691  	case uint32(2):
 28692  		goto __6
 28693  
 28694  	case uint32(3):
 28695  		goto __7
 28696  
 28697  	case uint32(4):
 28698  		goto __8
 28699  
 28700  	case uint32(5):
 28701  		goto __9
 28702  
 28703  	case uint32(6):
 28704  		goto __10
 28705  
 28706  	case uint32(7):
 28707  		goto __11
 28708  
 28709  	case uint32(8):
 28710  		goto __12
 28711  
 28712  	case uint32(9):
 28713  		goto __13
 28714  
 28715  	case uint32(10):
 28716  		goto __14
 28717  
 28718  	case uint32(11):
 28719  		goto __15
 28720  
 28721  	case uint32(12):
 28722  		goto __16
 28723  
 28724  	case uint32(13):
 28725  		goto __17
 28726  
 28727  	case uint32(14):
 28728  		goto __18
 28729  
 28730  	case uint32(15):
 28731  		goto __19
 28732  
 28733  	case uint32(16):
 28734  		goto __20
 28735  
 28736  	case uint32(18):
 28737  		goto __21
 28738  	case uint32(24):
 28739  		goto __22
 28740  
 28741  	case uint32(17):
 28742  		goto __23
 28743  
 28744  	case uint32(19):
 28745  		goto __24
 28746  
 28747  	case uint32(20):
 28748  		goto __25
 28749  
 28750  	case uint32(21):
 28751  		goto __26
 28752  
 28753  	case uint32(23):
 28754  		goto __27
 28755  
 28756  	case uint32(22):
 28757  		goto __28
 28758  
 28759  	case uint32(27):
 28760  		goto __29
 28761  
 28762  	case uint32(26):
 28763  		goto __30
 28764  
 28765  	case uint32(28):
 28766  		goto __31
 28767  
 28768  	case uint32(29):
 28769  		goto __32
 28770  
 28771  	case uint32(31):
 28772  		goto __33
 28773  
 28774  	case uint32(32):
 28775  		goto __34
 28776  
 28777  	case uint32(33):
 28778  		goto __35
 28779  
 28780  	case uint32(34):
 28781  		goto __36
 28782  
 28783  	case uint32(35):
 28784  		goto __37
 28785  
 28786  	case uint32(36):
 28787  		goto __38
 28788  
 28789  	case uint32(37):
 28790  		goto __39
 28791  
 28792  	case uint32(38):
 28793  		goto __40
 28794  
 28795  	case uint32(25):
 28796  		goto __41
 28797  
 28798  	case uint32(41):
 28799  		goto __42
 28800  	case uint32(39):
 28801  		goto __43
 28802  	case uint32(30):
 28803  		goto __44
 28804  
 28805  	case uint32(40):
 28806  		goto __45
 28807  	}
 28808  	goto __3
 28809  
 28810  __4:
 28811  	if !(objc > 3) {
 28812  		goto __46
 28813  	}
 28814  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 28815  	return TCL_ERROR
 28816  	goto __47
 28817  __46:
 28818  	if !(objc == 2) {
 28819  		goto __48
 28820  	}
 28821  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28822  		goto __50
 28823  	}
 28824  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 28825  __50:
 28826  	;
 28827  	goto __49
 28828  __48:
 28829  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28830  		goto __51
 28831  	}
 28832  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 28833  __51:
 28834  	;
 28835  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 28836  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 28837  		goto __52
 28838  	}
 28839  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 28840  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 28841  	goto __53
 28842  __52:
 28843  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 28844  __53:
 28845  	;
 28846  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28847  		goto __54
 28848  	}
 28849  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 28850  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 28851  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 28852  	}{auth_callback})), pDb)
 28853  	goto __55
 28854  __54:
 28855  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 28856  __55:
 28857  	;
 28858  __49:
 28859  	;
 28860  __47:
 28861  	;
 28862  	goto __3
 28863  
 28864  __5:
 28865  	if !(objc == 3) {
 28866  		goto __56
 28867  	}
 28868  	zSrcDb = ts + 85
 28869  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28870  	goto __57
 28871  __56:
 28872  	if !(objc == 4) {
 28873  		goto __58
 28874  	}
 28875  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28876  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 28877  	goto __59
 28878  __58:
 28879  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 28880  	return TCL_ERROR
 28881  __59:
 28882  	;
 28883  __57:
 28884  	;
 28885  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 28886  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 28887  	if !(rc != SQLITE_OK) {
 28888  		goto __60
 28889  	}
 28890  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 28891  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28892  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28893  	return TCL_ERROR
 28894  __60:
 28895  	;
 28896  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 28897  	if !(pBackup == uintptr(0)) {
 28898  		goto __61
 28899  	}
 28900  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 28901  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28902  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28903  	return TCL_ERROR
 28904  __61:
 28905  	;
 28906  __62:
 28907  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 28908  		goto __63
 28909  	}
 28910  	goto __62
 28911  __63:
 28912  	;
 28913  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 28914  	if !(rc == SQLITE_DONE) {
 28915  		goto __64
 28916  	}
 28917  	rc = TCL_OK
 28918  	goto __65
 28919  __64:
 28920  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 28921  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28922  	rc = TCL_ERROR
 28923  __65:
 28924  	;
 28925  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28926  	goto __3
 28927  
 28928  __6:
 28929  	if !(objc > 3) {
 28930  		goto __66
 28931  	}
 28932  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 28933  	return TCL_ERROR
 28934  	goto __67
 28935  __66:
 28936  	if !(objc == 2) {
 28937  		goto __68
 28938  	}
 28939  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 28940  		goto __70
 28941  	}
 28942  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 28943  __70:
 28944  	;
 28945  	goto __69
 28946  __68:
 28947  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 28948  		goto __71
 28949  	}
 28950  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 28951  __71:
 28952  	;
 28953  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 28954  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 28955  		goto __72
 28956  	}
 28957  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 28958  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 28959  	goto __73
 28960  __72:
 28961  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 28962  __73:
 28963  	;
 28964  __69:
 28965  	;
 28966  __67:
 28967  	;
 28968  	goto __3
 28969  
 28970  __7:
 28971  	if !(objc > 3) {
 28972  		goto __74
 28973  	}
 28974  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 28975  	return TCL_ERROR
 28976  	goto __75
 28977  __74:
 28978  	if !(objc == 2) {
 28979  		goto __76
 28980  	}
 28981  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 28982  		goto __78
 28983  	}
 28984  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 28985  __78:
 28986  	;
 28987  	goto __77
 28988  __76:
 28989  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 28990  		goto __79
 28991  	}
 28992  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 28993  __79:
 28994  	;
 28995  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 28996  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 28997  		goto __80
 28998  	}
 28999  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29000  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29001  	goto __81
 29002  __80:
 29003  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 29004  __81:
 29005  	;
 29006  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29007  		goto __82
 29008  	}
 29009  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29010  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29011  		f func(*libc.TLS, uintptr, int32) int32
 29012  	}{DbBusyHandler})), pDb)
 29013  	goto __83
 29014  __82:
 29015  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29016  __83:
 29017  	;
 29018  __77:
 29019  	;
 29020  __75:
 29021  	;
 29022  	goto __3
 29023  
 29024  __8:
 29025  	if !(objc <= 2) {
 29026  		goto __84
 29027  	}
 29028  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 29029  	return TCL_ERROR
 29030  __84:
 29031  	;
 29032  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29033  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 29034  		goto __85
 29035  	}
 29036  	if !(objc != 3) {
 29037  		goto __87
 29038  	}
 29039  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 29040  	return TCL_ERROR
 29041  	goto __88
 29042  __87:
 29043  	flushStmtCache(tls, pDb)
 29044  __88:
 29045  	;
 29046  	goto __86
 29047  __85:
 29048  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 29049  		goto __89
 29050  	}
 29051  	if !(objc != 4) {
 29052  		goto __91
 29053  	}
 29054  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 29055  	return TCL_ERROR
 29056  	goto __92
 29057  __91:
 29058  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 29059  		goto __93
 29060  	}
 29061  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 29062  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 29063  	return TCL_ERROR
 29064  	goto __94
 29065  __93:
 29066  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 29067  		goto __95
 29068  	}
 29069  	flushStmtCache(tls, pDb)
 29070  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 29071  	goto __96
 29072  __95:
 29073  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 29074  		goto __97
 29075  	}
 29076  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 29077  __97:
 29078  	;
 29079  __96:
 29080  	;
 29081  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 29082  __94:
 29083  	;
 29084  __92:
 29085  	;
 29086  	goto __90
 29087  __89:
 29088  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 29089  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 29090  		uintptr(0)))
 29091  	return TCL_ERROR
 29092  __90:
 29093  	;
 29094  __86:
 29095  	;
 29096  	goto __3
 29097  
 29098  __9:
 29099  	if !(objc != 2) {
 29100  		goto __98
 29101  	}
 29102  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 29103  	return TCL_ERROR
 29104  __98:
 29105  	;
 29106  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 29107  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 29108  	goto __3
 29109  
 29110  __10:
 29111  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 29112  	goto __3
 29113  
 29114  __11:
 29115  	if !(objc != 4) {
 29116  		goto __99
 29117  	}
 29118  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 29119  	return TCL_ERROR
 29120  __99:
 29121  	;
 29122  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29123  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 29124  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 29125  	if !(pCollate == uintptr(0)) {
 29126  		goto __100
 29127  	}
 29128  	return TCL_ERROR
 29129  __100:
 29130  	;
 29131  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 29132  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 29133  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 29134  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 29135  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29136  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 29137  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 29138  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 29139  		}{tclSqlCollate}))) != 0) {
 29140  		goto __101
 29141  	}
 29142  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 29143  	return TCL_ERROR
 29144  __101:
 29145  	;
 29146  	goto __3
 29147  
 29148  __12:
 29149  	if !(objc != 3) {
 29150  		goto __102
 29151  	}
 29152  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 29153  	return TCL_ERROR
 29154  __102:
 29155  	;
 29156  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 29157  		goto __103
 29158  	}
 29159  __104:
 29160  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 29161  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 29162  		goto __107
 29163  	}
 29164  	tcl.XTclFreeObj(tls, _objPtr)
 29165  __107:
 29166  	;
 29167  	goto __105
 29168  __105:
 29169  	if 0 != 0 {
 29170  		goto __104
 29171  	}
 29172  	goto __106
 29173  __106:
 29174  	;
 29175  __103:
 29176  	;
 29177  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29178  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 29179  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 29180  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 29181  	}{tclCollateNeeded})))
 29182  	goto __3
 29183  
 29184  __13:
 29185  	if !(objc > 3) {
 29186  		goto __108
 29187  	}
 29188  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29189  	return TCL_ERROR
 29190  	goto __109
 29191  __108:
 29192  	if !(objc == 2) {
 29193  		goto __110
 29194  	}
 29195  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29196  		goto __112
 29197  	}
 29198  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 29199  __112:
 29200  	;
 29201  	goto __111
 29202  __110:
 29203  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29204  		goto __113
 29205  	}
 29206  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 29207  __113:
 29208  	;
 29209  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 29210  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 29211  		goto __114
 29212  	}
 29213  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29214  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29215  	goto __115
 29216  __114:
 29217  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 29218  __115:
 29219  	;
 29220  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29221  		goto __116
 29222  	}
 29223  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29224  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29225  		f func(*libc.TLS, uintptr) int32
 29226  	}{DbCommitHandler})), pDb)
 29227  	goto __117
 29228  __116:
 29229  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29230  __117:
 29231  	;
 29232  __111:
 29233  	;
 29234  __109:
 29235  	;
 29236  	goto __3
 29237  
 29238  __14:
 29239  	if !(objc != 3) {
 29240  		goto __118
 29241  	}
 29242  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29243  	return TCL_ERROR
 29244  __118:
 29245  	;
 29246  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 29247  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 29248  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 29249  	goto __3
 29250  
 29251  __15:
 29252  	if !(objc > 4) {
 29253  		goto __119
 29254  	}
 29255  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 29256  	return TCL_ERROR
 29257  __119:
 29258  	;
 29259  	if !(objc == 2) {
 29260  		goto __120
 29261  	}
 29262  
 29263  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 29264  	ii = 0
 29265  __122:
 29266  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29267  		goto __124
 29268  	}
 29269  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 29270  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 29271  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29272  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 29273  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29274  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 29275  	goto __123
 29276  __123:
 29277  	ii++
 29278  	goto __122
 29279  	goto __124
 29280  __124:
 29281  	;
 29282  	goto __121
 29283  __120:
 29284  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29285  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 29286  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 29287  	if !(int32(*(*int8)(unsafe.Pointer(zOpt))) == '-') {
 29288  		goto __125
 29289  	}
 29290  	zOpt++
 29291  __125:
 29292  	;
 29293  	ii = 0
 29294  __126:
 29295  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29296  		goto __128
 29297  	}
 29298  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 29299  		goto __129
 29300  	}
 29301  	goto __128
 29302  __129:
 29303  	;
 29304  	goto __127
 29305  __127:
 29306  	ii++
 29307  	goto __126
 29308  	goto __128
 29309  __128:
 29310  	;
 29311  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29312  		goto __130
 29313  	}
 29314  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 29315  		ts+11945, uintptr(0)))
 29316  	return TCL_ERROR
 29317  __130:
 29318  	;
 29319  	if !(objc == 4) {
 29320  		goto __131
 29321  	}
 29322  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 29323  		goto __132
 29324  	}
 29325  	return TCL_ERROR
 29326  __132:
 29327  	;
 29328  __131:
 29329  	;
 29330  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 29331  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 29332  __121:
 29333  	;
 29334  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 29335  	goto __3
 29336  
 29337  __16:
 29338  	lineno = 0
 29339  	if !(objc < 5 || objc > 7) {
 29340  		goto __133
 29341  	}
 29342  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29343  		ts+11947)
 29344  	return TCL_ERROR
 29345  __133:
 29346  	;
 29347  	if !(objc >= 6) {
 29348  		goto __134
 29349  	}
 29350  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 29351  	goto __135
 29352  __134:
 29353  	zSep = ts + 12009
 29354  __135:
 29355  	;
 29356  	if !(objc >= 7) {
 29357  		goto __136
 29358  	}
 29359  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 29360  	goto __137
 29361  __136:
 29362  	zNull = ts + 584
 29363  __137:
 29364  	;
 29365  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29366  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 29367  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 29368  	nSep = strlen30(tls, zSep)
 29369  	nNull = strlen30(tls, zNull)
 29370  	if !(nSep == 0) {
 29371  		goto __138
 29372  	}
 29373  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 29374  		uintptr(0)))
 29375  	return TCL_ERROR
 29376  __138:
 29377  	;
 29378  	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) {
 29379  		goto __139
 29380  	}
 29381  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 29382  		ts+12099, uintptr(0)))
 29383  	return TCL_ERROR
 29384  __139:
 29385  	;
 29386  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 29387  	if !(zSql == uintptr(0)) {
 29388  		goto __140
 29389  	}
 29390  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 29391  	return TCL_ERROR
 29392  __140:
 29393  	;
 29394  	nByte = strlen30(tls, zSql)
 29395  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29396  	sqlite3.Xsqlite3_free(tls, zSql)
 29397  	if !(rc != 0) {
 29398  		goto __141
 29399  	}
 29400  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29401  	nCol = 0
 29402  	goto __142
 29403  __141:
 29404  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29405  __142:
 29406  	;
 29407  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29408  	if !(nCol == 0) {
 29409  		goto __143
 29410  	}
 29411  	return TCL_ERROR
 29412  __143:
 29413  	;
 29414  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 29415  	if !(zSql == uintptr(0)) {
 29416  		goto __144
 29417  	}
 29418  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 29419  	return TCL_ERROR
 29420  __144:
 29421  	;
 29422  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 29423  		libc.VaList(bp+384, zConflict, zTable))
 29424  	j = strlen30(tls, zSql)
 29425  	i = 1
 29426  __145:
 29427  	if !(i < nCol) {
 29428  		goto __147
 29429  	}
 29430  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(',')
 29431  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 29432  	goto __146
 29433  __146:
 29434  	i++
 29435  	goto __145
 29436  	goto __147
 29437  __147:
 29438  	;
 29439  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(')')
 29440  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 29441  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29442  	libc.Xfree(tls, zSql)
 29443  	if !(rc != 0) {
 29444  		goto __148
 29445  	}
 29446  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29447  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29448  	return TCL_ERROR
 29449  __148:
 29450  	;
 29451  	in = libc.Xfopen(tls, zFile, ts+4402)
 29452  	if !(in == uintptr(0)) {
 29453  		goto __149
 29454  	}
 29455  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 29456  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29457  	return TCL_ERROR
 29458  __149:
 29459  	;
 29460  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 29461  	if !(azCol == uintptr(0)) {
 29462  		goto __150
 29463  	}
 29464  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 29465  	libc.Xfclose(tls, in)
 29466  	return TCL_ERROR
 29467  __150:
 29468  	;
 29469  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 29470  	zCommit1 = ts + 11628
 29471  __151:
 29472  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 29473  		goto __152
 29474  	}
 29475  	lineno++
 29476  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 29477  	i = 0
 29478  	z = zLine
 29479  __153:
 29480  	if !(*(*int8)(unsafe.Pointer(z)) != 0) {
 29481  		goto __155
 29482  	}
 29483  	if !(int32(*(*int8)(unsafe.Pointer(z))) == int32(*(*int8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 29484  		goto __156
 29485  	}
 29486  	*(*int8)(unsafe.Pointer(z)) = int8(0)
 29487  	i++
 29488  	if !(i < nCol) {
 29489  		goto __157
 29490  	}
 29491  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 29492  	z += uintptr(nSep - 1)
 29493  __157:
 29494  	;
 29495  __156:
 29496  	;
 29497  	goto __154
 29498  __154:
 29499  	z++
 29500  	goto __153
 29501  	goto __155
 29502  __155:
 29503  	;
 29504  	if !(i+1 != nCol) {
 29505  		goto __158
 29506  	}
 29507  	nErr = strlen30(tls, zFile) + 200
 29508  	zErr = libc.Xmalloc(tls, uint64(nErr))
 29509  	if !(zErr != 0) {
 29510  		goto __159
 29511  	}
 29512  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 29513  		ts+12315,
 29514  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 29515  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 29516  	libc.Xfree(tls, zErr)
 29517  __159:
 29518  	;
 29519  	zCommit1 = ts + 7824
 29520  	goto __152
 29521  __158:
 29522  	;
 29523  	i = 0
 29524  __160:
 29525  	if !(i < nCol) {
 29526  		goto __162
 29527  	}
 29528  
 29529  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 29530  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 29531  		goto __163
 29532  	}
 29533  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 29534  	goto __164
 29535  __163:
 29536  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 29537  __164:
 29538  	;
 29539  	goto __161
 29540  __161:
 29541  	i++
 29542  	goto __160
 29543  	goto __162
 29544  __162:
 29545  	;
 29546  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29547  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29548  	libc.Xfree(tls, zLine)
 29549  	if !(rc != SQLITE_OK) {
 29550  		goto __165
 29551  	}
 29552  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29553  	zCommit1 = ts + 7824
 29554  	goto __152
 29555  __165:
 29556  	;
 29557  	goto __151
 29558  __152:
 29559  	;
 29560  	libc.Xfree(tls, azCol)
 29561  	libc.Xfclose(tls, in)
 29562  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29563  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 29564  
 29565  	if !(int32(*(*int8)(unsafe.Pointer(zCommit1))) == 'C') {
 29566  		goto __166
 29567  	}
 29568  
 29569  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 29570  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 29571  	rc = TCL_OK
 29572  	goto __167
 29573  __166:
 29574  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 29575  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 29576  		uintptr(0)))
 29577  	rc = TCL_ERROR
 29578  __167:
 29579  	;
 29580  	goto __3
 29581  
 29582  __17:
 29583  	zSchema = uintptr(0)
 29584  	pValue = uintptr(0)
 29585  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 29586  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 29587  
 29588  	if !(objc < 3) {
 29589  		goto __168
 29590  	}
 29591  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 29592  	rc = TCL_ERROR
 29593  	goto __3
 29594  __168:
 29595  	;
 29596  	i1 = 2
 29597  __169:
 29598  	if !(i1 < objc-1) {
 29599  		goto __171
 29600  	}
 29601  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 29602  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 29603  		goto __172
 29604  	}
 29605  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 29606  	if !(rc != 0) {
 29607  		goto __173
 29608  	}
 29609  	goto deserialize_error
 29610  __173:
 29611  	;
 29612  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 29613  	goto __170
 29614  __172:
 29615  	;
 29616  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 29617  		goto __174
 29618  	}
 29619  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 29620  	if !(rc != 0) {
 29621  		goto __175
 29622  	}
 29623  	goto deserialize_error
 29624  __175:
 29625  	;
 29626  	goto __170
 29627  __174:
 29628  	;
 29629  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*int8)(unsafe.Pointer(z1))) != '-') {
 29630  		goto __176
 29631  	}
 29632  	zSchema = z1
 29633  	goto __170
 29634  __176:
 29635  	;
 29636  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 29637  	rc = TCL_ERROR
 29638  	goto deserialize_error
 29639  	goto __170
 29640  __170:
 29641  	i1++
 29642  	goto __169
 29643  	goto __171
 29644  __171:
 29645  	;
 29646  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29647  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 29648  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 29649  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 29650  		goto __177
 29651  	}
 29652  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 29653  	rc = TCL_ERROR
 29654  	goto __178
 29655  __177:
 29656  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 29657  		goto __179
 29658  	}
 29659  	libc.Xmemcpy(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 29660  __179:
 29661  	;
 29662  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 29663  		goto __180
 29664  	}
 29665  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 29666  	goto __181
 29667  __180:
 29668  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 29669  __181:
 29670  	;
 29671  	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))
 29672  	if !(xrc != 0) {
 29673  		goto __182
 29674  	}
 29675  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 29676  	rc = TCL_ERROR
 29677  __182:
 29678  	;
 29679  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 29680  		goto __183
 29681  	}
 29682  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 29683  __183:
 29684  	;
 29685  __178:
 29686  	;
 29687  deserialize_error:
 29688  	goto __3
 29689  
 29690  __18:
 29691  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 29692  		uintptr(0)))
 29693  	return TCL_ERROR
 29694  
 29695  __19:
 29696  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 29697  	goto __3
 29698  
 29699  __20:
 29700  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 29701  	goto __3
 29702  
 29703  __21:
 29704  __22:
 29705  	pResult4 = uintptr(0)
 29706  	if !(objc != 3) {
 29707  		goto __184
 29708  	}
 29709  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29710  	return TCL_ERROR
 29711  __184:
 29712  	;
 29713  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 29714  	rc = dbEvalStep(tls, bp+1176)
 29715  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 29716  		goto __185
 29717  	}
 29718  	if !(rc == TCL_OK) {
 29719  		goto __187
 29720  	}
 29721  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 29722  	goto __188
 29723  __187:
 29724  	if !(rc == TCL_BREAK) {
 29725  		goto __189
 29726  	}
 29727  	tcl.XTcl_ResetResult(tls, interp)
 29728  __189:
 29729  	;
 29730  __188:
 29731  	;
 29732  	goto __186
 29733  __185:
 29734  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 29735  		goto __190
 29736  	}
 29737  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 29738  __190:
 29739  	;
 29740  __186:
 29741  	;
 29742  	dbEvalFinalize(tls, bp+1176)
 29743  	if !(pResult4 != 0) {
 29744  		goto __191
 29745  	}
 29746  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 29747  __191:
 29748  	;
 29749  	if !(rc == TCL_BREAK) {
 29750  		goto __192
 29751  	}
 29752  	rc = TCL_OK
 29753  __192:
 29754  	;
 29755  	goto __3
 29756  
 29757  __23:
 29758  	evalFlags = 0
 29759  __193:
 29760  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*int8)(unsafe.Pointer(zOpt1))) == '-') {
 29761  		goto __194
 29762  	}
 29763  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 29764  		goto __195
 29765  	}
 29766  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 29767  	goto __196
 29768  __195:
 29769  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 29770  	return TCL_ERROR
 29771  __196:
 29772  	;
 29773  	objc--
 29774  	objv += 8
 29775  	goto __193
 29776  __194:
 29777  	;
 29778  	if !(objc < 3 || objc > 5) {
 29779  		goto __197
 29780  	}
 29781  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29782  		ts+12569)
 29783  	return TCL_ERROR
 29784  __197:
 29785  	;
 29786  	if !(objc == 3) {
 29787  		goto __198
 29788  	}
 29789  	pRet = tcl.XTcl_NewObj(tls)
 29790  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 29791  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 29792  __200:
 29793  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 29794  		goto __201
 29795  	}
 29796  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 29797  	i2 = 0
 29798  __202:
 29799  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 29800  		goto __204
 29801  	}
 29802  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 29803  	goto __203
 29804  __203:
 29805  	i2++
 29806  	goto __202
 29807  	goto __204
 29808  __204:
 29809  	;
 29810  	goto __200
 29811  __201:
 29812  	;
 29813  	dbEvalFinalize(tls, bp+1232)
 29814  	if !(rc == TCL_BREAK) {
 29815  		goto __205
 29816  	}
 29817  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 29818  	rc = TCL_OK
 29819  __205:
 29820  	;
 29821  __206:
 29822  	_objPtr1 = pRet
 29823  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 29824  		goto __209
 29825  	}
 29826  	tcl.XTclFreeObj(tls, _objPtr1)
 29827  __209:
 29828  	;
 29829  	goto __207
 29830  __207:
 29831  	if 0 != 0 {
 29832  		goto __206
 29833  	}
 29834  	goto __208
 29835  __208:
 29836  	;
 29837  	goto __199
 29838  __198:
 29839  	pArray = uintptr(0)
 29840  
 29841  	if !(objc >= 5 && *(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 29842  		goto __210
 29843  	}
 29844  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 29845  __210:
 29846  	;
 29847  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29848  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 29849  
 29850  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 29851  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 29852  
 29853  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 29854  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 29855  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 29856  __199:
 29857  	;
 29858  	goto __3
 29859  
 29860  __24:
 29861  	flags1 = SQLITE_UTF8
 29862  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 29863  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 29864  	if !(objc < 4) {
 29865  		goto __211
 29866  	}
 29867  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 29868  	return TCL_ERROR
 29869  __211:
 29870  	;
 29871  	i3 = 3
 29872  __212:
 29873  	if !(i3 < objc-1) {
 29874  		goto __214
 29875  	}
 29876  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 29877  	n1 = strlen30(tls, z2)
 29878  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 29879  		goto __215
 29880  	}
 29881  	if !(i3 == objc-2) {
 29882  		goto __217
 29883  	}
 29884  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 29885  	return TCL_ERROR
 29886  __217:
 29887  	;
 29888  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 29889  		goto __218
 29890  	}
 29891  	return TCL_ERROR
 29892  __218:
 29893  	;
 29894  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 29895  		goto __219
 29896  	}
 29897  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 29898  		uintptr(0)))
 29899  	return TCL_ERROR
 29900  __219:
 29901  	;
 29902  	i3++
 29903  	goto __216
 29904  __215:
 29905  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 29906  		goto __220
 29907  	}
 29908  	flags1 = flags1 | SQLITE_DETERMINISTIC
 29909  	goto __221
 29910  __220:
 29911  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 29912  		goto __222
 29913  	}
 29914  	flags1 = flags1 | SQLITE_DIRECTONLY
 29915  	goto __223
 29916  __222:
 29917  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 29918  		goto __224
 29919  	}
 29920  	flags1 = flags1 | SQLITE_INNOCUOUS
 29921  	goto __225
 29922  __224:
 29923  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 29924  		goto __226
 29925  	}
 29926  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 29927  
 29928  	if !(i3 == objc-2) {
 29929  		goto __228
 29930  	}
 29931  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 29932  	return TCL_ERROR
 29933  __228:
 29934  	;
 29935  	i3++
 29936  	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) {
 29937  		goto __229
 29938  	}
 29939  	return TCL_ERROR
 29940  __229:
 29941  	;
 29942  	*(*int32)(unsafe.Pointer(bp + 1368))++
 29943  	goto __227
 29944  __226:
 29945  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 29946  		ts+12783, uintptr(0)))
 29947  	return TCL_ERROR
 29948  __227:
 29949  	;
 29950  __225:
 29951  	;
 29952  __223:
 29953  	;
 29954  __221:
 29955  	;
 29956  __216:
 29957  	;
 29958  	goto __213
 29959  __213:
 29960  	i3++
 29961  	goto __212
 29962  	goto __214
 29963  __214:
 29964  	;
 29965  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29966  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29967  	pFunc = findSqlFunc(tls, pDb, zName1)
 29968  	if !(pFunc == uintptr(0)) {
 29969  		goto __230
 29970  	}
 29971  	return TCL_ERROR
 29972  __230:
 29973  	;
 29974  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 29975  		goto __231
 29976  	}
 29977  __232:
 29978  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 29979  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 29980  		goto __235
 29981  	}
 29982  	tcl.XTclFreeObj(tls, _objPtr2)
 29983  __235:
 29984  	;
 29985  	goto __233
 29986  __233:
 29987  	if 0 != 0 {
 29988  		goto __232
 29989  	}
 29990  	goto __234
 29991  __234:
 29992  	;
 29993  __231:
 29994  	;
 29995  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 29996  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 29997  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 29998  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 29999  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 30000  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 30001  			f func(*libc.TLS, uintptr, int32, uintptr)
 30002  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 30003  	if !(rc != SQLITE_OK) {
 30004  		goto __236
 30005  	}
 30006  	rc = TCL_ERROR
 30007  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30008  __236:
 30009  	;
 30010  	goto __3
 30011  
 30012  __25:
 30013  	isReadonly1 = 0
 30014  	zDb = ts + 85
 30015  
 30016  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 30017  		goto __237
 30018  	}
 30019  	isReadonly1 = 1
 30020  __237:
 30021  	;
 30022  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 30023  		goto __238
 30024  	}
 30025  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 30026  	return TCL_ERROR
 30027  __238:
 30028  	;
 30029  	if !(objc == 6+isReadonly1) {
 30030  		goto __239
 30031  	}
 30032  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 30033  __239:
 30034  	;
 30035  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 30036  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 30037  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 30038  
 30039  	if !(rc == TCL_OK) {
 30040  		goto __240
 30041  	}
 30042  	rc = createIncrblobChannel(tls,
 30043  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 30044  __240:
 30045  	;
 30046  	goto __3
 30047  
 30048  __26:
 30049  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30050  	goto __3
 30051  
 30052  __27:
 30053  	if !(objc != 2 && objc != 3) {
 30054  		goto __241
 30055  	}
 30056  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 30057  	return TCL_ERROR
 30058  __241:
 30059  	;
 30060  	if !(objc == 3) {
 30061  		goto __242
 30062  	}
 30063  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 30064  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 30065  		goto __243
 30066  	}
 30067  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30068  __243:
 30069  	;
 30070  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 30071  		goto __244
 30072  	}
 30073  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 30074  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))))
 30075  	*(*int8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = int8(0)
 30076  	goto __245
 30077  __244:
 30078  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 30079  __245:
 30080  	;
 30081  __242:
 30082  	;
 30083  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 30084  	goto __3
 30085  
 30086  __28:
 30087  	if !(objc != 2) {
 30088  		goto __246
 30089  	}
 30090  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30091  	return TCL_ERROR
 30092  __246:
 30093  	;
 30094  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30095  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 30096  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 30097  	goto __3
 30098  
 30099  __29:
 30100  	if !(objc == 2) {
 30101  		goto __247
 30102  	}
 30103  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30104  		goto __249
 30105  	}
 30106  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 30107  __249:
 30108  	;
 30109  	goto __248
 30110  __247:
 30111  	if !(objc == 4) {
 30112  		goto __250
 30113  	}
 30114  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 30115  		goto __252
 30116  	}
 30117  	return TCL_ERROR
 30118  __252:
 30119  	;
 30120  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30121  		goto __253
 30122  	}
 30123  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30124  __253:
 30125  	;
 30126  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 30127  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 30128  		goto __254
 30129  	}
 30130  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30131  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30132  	goto __255
 30133  __254:
 30134  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 30135  __255:
 30136  	;
 30137  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30138  		goto __256
 30139  	}
 30140  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30141  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 30142  		f func(*libc.TLS, uintptr) int32
 30143  	}{DbProgressHandler})), pDb)
 30144  	goto __257
 30145  __256:
 30146  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 30147  __257:
 30148  	;
 30149  	goto __251
 30150  __250:
 30151  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 30152  	return TCL_ERROR
 30153  __251:
 30154  	;
 30155  __248:
 30156  	;
 30157  	goto __3
 30158  
 30159  __30:
 30160  	if !(objc > 3) {
 30161  		goto __258
 30162  	}
 30163  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30164  	return TCL_ERROR
 30165  	goto __259
 30166  __258:
 30167  	if !(objc == 2) {
 30168  		goto __260
 30169  	}
 30170  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30171  		goto __262
 30172  	}
 30173  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 30174  __262:
 30175  	;
 30176  	goto __261
 30177  __260:
 30178  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30179  		goto __263
 30180  	}
 30181  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30182  __263:
 30183  	;
 30184  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 30185  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 30186  		goto __264
 30187  	}
 30188  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30189  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30190  	goto __265
 30191  __264:
 30192  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 30193  __265:
 30194  	;
 30195  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30196  		goto __266
 30197  	}
 30198  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30199  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30200  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 30201  	}{DbProfileHandler})), pDb)
 30202  	goto __267
 30203  __266:
 30204  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30205  __267:
 30206  	;
 30207  __261:
 30208  	;
 30209  __259:
 30210  	;
 30211  	goto __3
 30212  
 30213  __31:
 30214  	if !(objc != 3) {
 30215  		goto __268
 30216  	}
 30217  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 30218  	return TCL_ERROR
 30219  __268:
 30220  	;
 30221  	goto __3
 30222  
 30223  __32:
 30224  	nTimeout = 0
 30225  
 30226  	if !(objc == 3) {
 30227  		goto __269
 30228  	}
 30229  	zDestDb = ts + 85
 30230  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30231  	goto __270
 30232  __269:
 30233  	if !(objc == 4) {
 30234  		goto __271
 30235  	}
 30236  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30237  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 30238  	goto __272
 30239  __271:
 30240  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 30241  	return TCL_ERROR
 30242  __272:
 30243  	;
 30244  __270:
 30245  	;
 30246  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 30247  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 30248  	if !(rc != SQLITE_OK) {
 30249  		goto __273
 30250  	}
 30251  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 30252  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 30253  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30254  	return TCL_ERROR
 30255  __273:
 30256  	;
 30257  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 30258  	if !(pBackup1 == uintptr(0)) {
 30259  		goto __274
 30260  	}
 30261  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 30262  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30263  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30264  	return TCL_ERROR
 30265  __274:
 30266  	;
 30267  __275:
 30268  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 30269  		rc == SQLITE_BUSY) {
 30270  		goto __276
 30271  	}
 30272  	if !(rc == SQLITE_BUSY) {
 30273  		goto __277
 30274  	}
 30275  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 30276  		goto __278
 30277  	}
 30278  	goto __276
 30279  __278:
 30280  	;
 30281  	sqlite3.Xsqlite3_sleep(tls, 100)
 30282  __277:
 30283  	;
 30284  	goto __275
 30285  __276:
 30286  	;
 30287  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 30288  	if !(rc == SQLITE_DONE) {
 30289  		goto __279
 30290  	}
 30291  	rc = TCL_OK
 30292  	goto __280
 30293  __279:
 30294  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 30295  		goto __281
 30296  	}
 30297  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 30298  		uintptr(0)))
 30299  	rc = TCL_ERROR
 30300  	goto __282
 30301  __281:
 30302  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 30303  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30304  	rc = TCL_ERROR
 30305  __282:
 30306  	;
 30307  __280:
 30308  	;
 30309  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30310  	goto __3
 30311  
 30312  __33:
 30313  	if objc >= 3 {
 30314  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30315  	} else {
 30316  		zSchema1 = ts + 85
 30317  	}
 30318  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 30319  	if !(objc != 2 && objc != 3) {
 30320  		goto __283
 30321  	}
 30322  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 30323  	rc = TCL_ERROR
 30324  	goto __284
 30325  __283:
 30326  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 30327  	if !(pData1 != 0) {
 30328  		goto __285
 30329  	}
 30330  	needFree = 0
 30331  	goto __286
 30332  __285:
 30333  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 30334  	needFree = 1
 30335  __286:
 30336  	;
 30337  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 30338  	if !(needFree != 0) {
 30339  		goto __287
 30340  	}
 30341  	sqlite3.Xsqlite3_free(tls, pData1)
 30342  __287:
 30343  	;
 30344  __284:
 30345  	;
 30346  	goto __3
 30347  
 30348  __34:
 30349  	if !(objc != 3) {
 30350  		goto __288
 30351  	}
 30352  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 30353  	return TCL_ERROR
 30354  __288:
 30355  	;
 30356  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30357  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 30358  		goto __289
 30359  	}
 30360  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 30361  	goto __290
 30362  __289:
 30363  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 30364  		goto __291
 30365  	}
 30366  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 30367  	goto __292
 30368  __291:
 30369  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 30370  		goto __293
 30371  	}
 30372  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 30373  	goto __294
 30374  __293:
 30375  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 30376  		goto __295
 30377  	}
 30378  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 30379  	goto __296
 30380  __295:
 30381  	tcl.XTcl_AppendResult(tls, interp,
 30382  		libc.VaList(bp+888, ts+13061,
 30383  			uintptr(0)))
 30384  	return TCL_ERROR
 30385  __296:
 30386  	;
 30387  __294:
 30388  	;
 30389  __292:
 30390  	;
 30391  __290:
 30392  	;
 30393  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 30394  	goto __3
 30395  
 30396  __35:
 30397  	if !(objc != 3) {
 30398  		goto __297
 30399  	}
 30400  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 30401  	return TCL_ERROR
 30402  __297:
 30403  	;
 30404  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 30405  		goto __298
 30406  	}
 30407  	return TCL_ERROR
 30408  __298:
 30409  	;
 30410  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 30411  	goto __3
 30412  
 30413  __36:
 30414  	if !(objc != 2) {
 30415  		goto __299
 30416  	}
 30417  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30418  	return TCL_ERROR
 30419  __299:
 30420  	;
 30421  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 30422  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30423  	goto __3
 30424  
 30425  __37:
 30426  	if !(objc > 3) {
 30427  		goto __300
 30428  	}
 30429  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30430  	return TCL_ERROR
 30431  	goto __301
 30432  __300:
 30433  	if !(objc == 2) {
 30434  		goto __302
 30435  	}
 30436  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30437  		goto __304
 30438  	}
 30439  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 30440  __304:
 30441  	;
 30442  	goto __303
 30443  __302:
 30444  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30445  		goto __305
 30446  	}
 30447  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 30448  __305:
 30449  	;
 30450  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 30451  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 30452  		goto __306
 30453  	}
 30454  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30455  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30456  	goto __307
 30457  __306:
 30458  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 30459  __307:
 30460  	;
 30461  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30462  		goto __308
 30463  	}
 30464  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30465  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30466  		f func(*libc.TLS, uintptr, uintptr)
 30467  	}{DbTraceHandler})), pDb)
 30468  	goto __309
 30469  __308:
 30470  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30471  __309:
 30472  	;
 30473  __303:
 30474  	;
 30475  __301:
 30476  	;
 30477  	goto __3
 30478  
 30479  __38:
 30480  	if !(objc > 4) {
 30481  		goto __310
 30482  	}
 30483  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 30484  	return TCL_ERROR
 30485  	goto __311
 30486  __310:
 30487  	if !(objc == 2) {
 30488  		goto __312
 30489  	}
 30490  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30491  		goto __314
 30492  	}
 30493  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 30494  __314:
 30495  	;
 30496  	goto __313
 30497  __312:
 30498  	wMask = int64(0)
 30499  	if !(objc == 4) {
 30500  		goto __315
 30501  	}
 30502  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 30503  		goto __317
 30504  	}
 30505  	return TCL_ERROR
 30506  __317:
 30507  	;
 30508  	i4 = 0
 30509  __318:
 30510  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 30511  		goto __320
 30512  	}
 30513  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 30514  		goto __321
 30515  	}
 30516  	return TCL_ERROR
 30517  __321:
 30518  	;
 30519  	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) {
 30520  		goto __322
 30521  	}
 30522  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 30523  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 30524  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 30525  		goto __324
 30526  	}
 30527  __326:
 30528  	_objPtr3 = pError
 30529  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 30530  		goto __329
 30531  	}
 30532  	tcl.XTclFreeObj(tls, _objPtr3)
 30533  __329:
 30534  	;
 30535  	goto __327
 30536  __327:
 30537  	if 0 != 0 {
 30538  		goto __326
 30539  	}
 30540  	goto __328
 30541  __328:
 30542  	;
 30543  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 30544  	goto __325
 30545  __324:
 30546  	tcl.XTcl_SetObjResult(tls, interp, pError)
 30547  __330:
 30548  	_objPtr4 = pError
 30549  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 30550  		goto __333
 30551  	}
 30552  	tcl.XTclFreeObj(tls, _objPtr4)
 30553  __333:
 30554  	;
 30555  	goto __331
 30556  __331:
 30557  	if 0 != 0 {
 30558  		goto __330
 30559  	}
 30560  	goto __332
 30561  __332:
 30562  	;
 30563  	return TCL_ERROR
 30564  __325:
 30565  	;
 30566  	goto __323
 30567  __322:
 30568  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 30569  	case uint32(0):
 30570  		goto __335
 30571  	case uint32(1):
 30572  		goto __336
 30573  	case uint32(2):
 30574  		goto __337
 30575  	case uint32(3):
 30576  		goto __338
 30577  	}
 30578  	goto __334
 30579  __335:
 30580  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 30581  	goto __334
 30582  __336:
 30583  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 30584  	goto __334
 30585  __337:
 30586  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 30587  	goto __334
 30588  __338:
 30589  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 30590  	goto __334
 30591  __334:
 30592  	;
 30593  __323:
 30594  	;
 30595  	goto __319
 30596  __319:
 30597  	i4++
 30598  	goto __318
 30599  	goto __320
 30600  __320:
 30601  	;
 30602  	goto __316
 30603  __315:
 30604  	wMask = int64(SQLITE_TRACE_STMT)
 30605  __316:
 30606  	;
 30607  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30608  		goto __339
 30609  	}
 30610  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 30611  __339:
 30612  	;
 30613  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 30614  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 30615  		goto __340
 30616  	}
 30617  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 30618  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 30619  	goto __341
 30620  __340:
 30621  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 30622  __341:
 30623  	;
 30624  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30625  		goto __342
 30626  	}
 30627  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30628  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 30629  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 30630  	}{DbTraceV2Handler})), pDb)
 30631  	goto __343
 30632  __342:
 30633  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 30634  __343:
 30635  	;
 30636  __313:
 30637  	;
 30638  __311:
 30639  	;
 30640  	goto __3
 30641  
 30642  __39:
 30643  	zBegin = ts + 13159
 30644  	if !(objc != 3 && objc != 4) {
 30645  		goto __344
 30646  	}
 30647  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 30648  	return TCL_ERROR
 30649  __344:
 30650  	;
 30651  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 30652  		goto __345
 30653  	}
 30654  	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) {
 30655  		goto __346
 30656  	}
 30657  	return TCL_ERROR
 30658  __346:
 30659  	;
 30660  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 30661  	case uint32(0):
 30662  		goto __348
 30663  	case uint32(1):
 30664  		goto __349
 30665  	case uint32(2):
 30666  		goto __350
 30667  	}
 30668  	goto __347
 30669  __348:
 30670  	;
 30671  	goto __347
 30672  __349:
 30673  	zBegin = ts + 13217
 30674  	goto __347
 30675  __350:
 30676  	zBegin = ts + 13233
 30677  	goto __347
 30678  __347:
 30679  	;
 30680  __345:
 30681  	;
 30682  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30683  
 30684  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 30685  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 30686  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 30687  	if !(rc != SQLITE_OK) {
 30688  		goto __351
 30689  	}
 30690  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30691  	return TCL_ERROR
 30692  __351:
 30693  	;
 30694  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 30695  
 30696  	addDatabaseRef(tls, pDb)
 30697  	if !(DbUseNre(tls) != 0) {
 30698  		goto __352
 30699  	}
 30700  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 30701  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 30702  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1464)), uintptr(0), uintptr(0), uintptr(0))
 30703  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 30704  	goto __353
 30705  __352:
 30706  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 30707  __353:
 30708  	;
 30709  	goto __3
 30710  
 30711  __40:
 30712  	if !(objc != 2 && objc != 3) {
 30713  		goto __354
 30714  	}
 30715  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 30716  	rc = TCL_ERROR
 30717  	goto __355
 30718  __354:
 30719  	xNotify = uintptr(0)
 30720  	pNotifyArg = uintptr(0)
 30721  
 30722  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 30723  		goto __356
 30724  	}
 30725  __357:
 30726  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 30727  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 30728  		goto __360
 30729  	}
 30730  	tcl.XTclFreeObj(tls, _objPtr5)
 30731  __360:
 30732  	;
 30733  	goto __358
 30734  __358:
 30735  	if 0 != 0 {
 30736  		goto __357
 30737  	}
 30738  	goto __359
 30739  __359:
 30740  	;
 30741  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 30742  __356:
 30743  	;
 30744  	if !(objc == 3) {
 30745  		goto __361
 30746  	}
 30747  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 30748  		f func(*libc.TLS, uintptr, int32)
 30749  	}{DbUnlockNotify}))
 30750  	pNotifyArg = pDb
 30751  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 30752  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 30753  __361:
 30754  	;
 30755  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 30756  		goto __362
 30757  	}
 30758  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30759  	rc = TCL_ERROR
 30760  __362:
 30761  	;
 30762  __355:
 30763  	;
 30764  	goto __3
 30765  
 30766  __41:
 30767  	if !(objc < 3) {
 30768  		goto __363
 30769  	}
 30770  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 30771  __363:
 30772  	;
 30773  	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) {
 30774  		goto __364
 30775  	}
 30776  	return TCL_ERROR
 30777  __364:
 30778  	;
 30779  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 30780  	case uint32(0):
 30781  		goto __366
 30782  
 30783  	case uint32(2):
 30784  		goto __367
 30785  
 30786  	case uint32(1):
 30787  		goto __368
 30788  
 30789  	case uint32(3):
 30790  		goto __369
 30791  	case uint32(4):
 30792  		goto __370
 30793  	}
 30794  	goto __365
 30795  __366:
 30796  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30797  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 30798  	goto __365
 30799  
 30800  __367:
 30801  	if !(objc > 4) {
 30802  		goto __371
 30803  	}
 30804  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 30805  	return TCL_ERROR
 30806  __371:
 30807  	;
 30808  	DbHookCmd(tls, interp, pDb, func() uintptr {
 30809  		if objc == 4 {
 30810  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 30811  		}
 30812  		return uintptr(0)
 30813  	}(), pDb+112)
 30814  	goto __365
 30815  
 30816  __368:
 30817  	if !(objc != 3) {
 30818  		goto __372
 30819  	}
 30820  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 30821  	return TCL_ERROR
 30822  __372:
 30823  	;
 30824  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30825  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 30826  	goto __365
 30827  
 30828  __369:
 30829  __370:
 30830  	if !(objc != 4) {
 30831  		goto __373
 30832  	}
 30833  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 30834  	return TCL_ERROR
 30835  __373:
 30836  	;
 30837  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 30838  		goto __374
 30839  	}
 30840  	return TCL_ERROR
 30841  __374:
 30842  	;
 30843  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 30844  		goto __375
 30845  	}
 30846  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 30847  	goto __376
 30848  __375:
 30849  	;
 30850  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 30851  __376:
 30852  	;
 30853  	if !(rc == SQLITE_OK) {
 30854  		goto __377
 30855  	}
 30856  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 30857  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 30858  	goto __378
 30859  __377:
 30860  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30861  	return TCL_ERROR
 30862  __378:
 30863  	;
 30864  __365:
 30865  	;
 30866  	goto __3
 30867  
 30868  __42:
 30869  __43:
 30870  __44:
 30871  	ppHook = uintptr(0)
 30872  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 30873  		goto __379
 30874  	}
 30875  	ppHook = pDb + 128
 30876  __379:
 30877  	;
 30878  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 30879  		goto __380
 30880  	}
 30881  	ppHook = pDb + 104
 30882  __380:
 30883  	;
 30884  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 30885  		goto __381
 30886  	}
 30887  	ppHook = pDb + 120
 30888  __381:
 30889  	;
 30890  	if !(objc > 3) {
 30891  		goto __382
 30892  	}
 30893  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 30894  	return TCL_ERROR
 30895  __382:
 30896  	;
 30897  	DbHookCmd(tls, interp, pDb, func() uintptr {
 30898  		if objc == 3 {
 30899  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 30900  		}
 30901  		return uintptr(0)
 30902  	}(), ppHook)
 30903  	goto __3
 30904  
 30905  __45:
 30906  	i5 = 2
 30907  __383:
 30908  	if !(i5 < objc) {
 30909  		goto __385
 30910  	}
 30911  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 30912  
 30913  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 30914  		goto __386
 30915  	}
 30916  	i5++
 30917  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 30918  		goto __388
 30919  	}
 30920  	return TCL_ERROR
 30921  __388:
 30922  	;
 30923  	goto __387
 30924  __386:
 30925  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 30926  		goto __389
 30927  	}
 30928  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+1488, ts+9889,
 30929  		libc.VaList(bp+984, func() uintptr {
 30930  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 30931  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 30932  			}
 30933  			return uintptr(0)
 30934  		}()))
 30935  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 30936  	goto __390
 30937  __389:
 30938  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 30939  	return TCL_ERROR
 30940  __390:
 30941  	;
 30942  __387:
 30943  	;
 30944  	goto __384
 30945  __384:
 30946  	i5++
 30947  	goto __383
 30948  	goto __385
 30949  __385:
 30950  	;
 30951  	if !(i5 == 2) {
 30952  		goto __391
 30953  	}
 30954  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 30955  __391:
 30956  	;
 30957  	goto __3
 30958  
 30959  __3:
 30960  	;
 30961  	return rc
 30962  }
 30963  
 30964  type DbConfigChoices = struct {
 30965  	FzName       uintptr
 30966  	Fop          int32
 30967  	F__ccgo_pad1 [4]byte
 30968  }
 30969  
 30970  var DB_strs = [43]uintptr{
 30971  	ts + 13351, ts + 13362, ts + 13369,
 30972  	ts + 13383, ts + 13388, ts + 13394,
 30973  	ts + 9490, ts + 13402, ts + 13410,
 30974  	ts + 13427, ts + 13439, ts + 13448,
 30975  	ts + 13455, ts + 13460, ts + 13472,
 30976  	ts + 13494, ts + 13504, ts + 4896,
 30977  	ts + 13516, ts + 13523, ts + 10868,
 30978  	ts + 13532, ts + 13542, ts + 13560,
 30979  	ts + 13570, ts + 13580, ts + 13590,
 30980  	ts + 9564, ts + 13598, ts + 13604,
 30981  	ts + 13612, ts + 13626, ts + 13636,
 30982  	ts + 13643, ts + 13651, ts + 13665,
 30983  	ts + 13671, ts + 13680, ts + 13692,
 30984  	ts + 13706, ts + 13718, ts + 13726,
 30985  	uintptr(0),
 30986  }
 30987  var aDbConfig = [16]DbConfigChoices{
 30988  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 30989  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 30990  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 30991  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 30992  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 30993  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 30994  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 30995  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 30996  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 30997  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 30998  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 30999  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 31000  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 31001  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 31002  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 31003  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 31004  }
 31005  var TTYPE_strs = [5]uintptr{
 31006  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 31007  }
 31008  var TTYPE_strs1 = [4]uintptr{
 31009  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 31010  }
 31011  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 31012  
 31013  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31014  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31015  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31016  	}{DbObjCmd})), cd, objc, objv)
 31017  }
 31018  
 31019  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 31020  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 31021  		ts+14017)
 31022  	return TCL_ERROR
 31023  }
 31024  
 31025  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31026  	bp := tls.Alloc(336)
 31027  	defer tls.Free(336)
 31028  
 31029  	var p uintptr
 31030  	var zArg uintptr
 31031  	var zErrMsg uintptr
 31032  	var i int32
 31033  	var zFile uintptr = uintptr(0)
 31034  	var zVfs uintptr = uintptr(0)
 31035  	var flags int32
 31036  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 31037  
 31038  	var rc int32
 31039  
 31040  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 31041  
 31042  	if objc == 1 {
 31043  		return sqliteCmdUsage(tls, interp, objv)
 31044  	}
 31045  	if objc == 2 {
 31046  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31047  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 31048  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 31049  			return TCL_OK
 31050  		}
 31051  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 31052  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 31053  			return TCL_OK
 31054  		}
 31055  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 31056  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 31057  			return TCL_OK
 31058  		}
 31059  		if int32(*(*int8)(unsafe.Pointer(zArg))) == '-' {
 31060  			return sqliteCmdUsage(tls, interp, objv)
 31061  		}
 31062  	}
 31063  	for i = 2; i < objc; i++ {
 31064  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31065  		if int32(*(*int8)(unsafe.Pointer(zArg))) != '-' {
 31066  			if zFile != uintptr(0) {
 31067  				return sqliteCmdUsage(tls, interp, objv)
 31068  			}
 31069  			zFile = zArg
 31070  			continue
 31071  		}
 31072  		if i == objc-1 {
 31073  			return sqliteCmdUsage(tls, interp, objv)
 31074  		}
 31075  		i++
 31076  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 31077  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 31078  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31079  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 31080  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 31081  				return TCL_ERROR
 31082  			}
 31083  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 31084  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 31085  				flags = flags | SQLITE_OPEN_READONLY
 31086  			} else {
 31087  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 31088  				flags = flags | SQLITE_OPEN_READWRITE
 31089  			}
 31090  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 31091  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 31092  				return TCL_ERROR
 31093  			}
 31094  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 31095  				flags = flags | SQLITE_OPEN_CREATE
 31096  			} else {
 31097  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 31098  			}
 31099  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 31100  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 31101  				return TCL_ERROR
 31102  			}
 31103  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 31104  				flags = flags | SQLITE_OPEN_NOFOLLOW
 31105  			} else {
 31106  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 31107  			}
 31108  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 31109  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 31110  				return TCL_ERROR
 31111  			}
 31112  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 31113  				flags = flags | SQLITE_OPEN_NOMUTEX
 31114  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31115  			} else {
 31116  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31117  			}
 31118  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 31119  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 31120  				return TCL_ERROR
 31121  			}
 31122  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 31123  				flags = flags | SQLITE_OPEN_FULLMUTEX
 31124  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31125  			} else {
 31126  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31127  			}
 31128  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 31129  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 31130  				return TCL_ERROR
 31131  			}
 31132  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 31133  				flags = flags | SQLITE_OPEN_URI
 31134  			} else {
 31135  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 31136  			}
 31137  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 31138  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 31139  				return TCL_ERROR
 31140  			}
 31141  		} else {
 31142  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 31143  			return TCL_ERROR
 31144  		}
 31145  	}
 31146  	zErrMsg = uintptr(0)
 31147  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 31148  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})))
 31149  	if zFile == uintptr(0) {
 31150  		zFile = ts + 584
 31151  	}
 31152  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31153  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 31154  	}
 31155  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 31156  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31157  		tcl.XTcl_DStringFree(tls, bp+120)
 31158  	}
 31159  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 31160  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 31161  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 31162  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 31163  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 31164  		}
 31165  	} else {
 31166  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 31167  	}
 31168  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 31169  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 31170  		tcl.XTcl_Free(tls, p)
 31171  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 31172  		return TCL_ERROR
 31173  	}
 31174  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 31175  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 31176  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 31177  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31178  	if DbUseNre(tls) != 0 {
 31179  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31180  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31181  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 31182  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31183  		}{DbObjCmd})),
 31184  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31185  	} else {
 31186  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31187  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31188  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31189  	}
 31190  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 31191  	return TCL_OK
 31192  }
 31193  
 31194  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31195  	var rc int32
 31196  	if 1 != 0 {
 31197  		rc = TCL_OK
 31198  	} else {
 31199  		rc = TCL_ERROR
 31200  	}
 31201  	if rc == TCL_OK {
 31202  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 31203  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31204  		}{DbMain})), uintptr(0), uintptr(0))
 31205  
 31206  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 31207  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31208  		}{DbMain})), uintptr(0), uintptr(0))
 31209  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 31210  	}
 31211  	return rc
 31212  }
 31213  
 31214  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31215  	return Sqlite3_Init(tls, interp)
 31216  }
 31217  
 31218  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31219  	return TCL_OK
 31220  }
 31221  
 31222  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31223  	return TCL_OK
 31224  }
 31225  
 31226  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 31227  	return TCL_ERROR
 31228  }
 31229  
 31230  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31231  	return TCL_ERROR
 31232  }
 31233  
 31234  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31235  	return Sqlite3_Init(tls, interp)
 31236  }
 31237  
 31238  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31239  	return Sqlite3_Init(tls, interp)
 31240  }
 31241  
 31242  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31243  	return TCL_OK
 31244  }
 31245  
 31246  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31247  	return TCL_OK
 31248  }
 31249  
 31250  func tclsh_main_loop(tls *libc.TLS) uintptr {
 31251  	return uintptr(unsafe.Pointer(&zMainloop))
 31252  }
 31253  
 31254  var zMainloop = *(*[431]int8)(unsafe.Pointer(ts + 14289))
 31255  
 31256  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 31257  	bp := tls.Alloc(64)
 31258  	defer tls.Free(64)
 31259  
 31260  	var interp uintptr
 31261  	var i int32
 31262  	var zScript uintptr = uintptr(0)
 31263  
 31264  	if libc.Xgetenv(tls, ts+14720) != 0 {
 31265  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 31266  			libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152,
 31267  				ts+14739,
 31268  				libc.VaList(bp, libc.Xgetpid(tls)))
 31269  			libc.Xfgetc(tls, uintptr(unsafe.Pointer(&libc.X__sF)))
 31270  		} else {
 31271  			libc.Xraise(tls, SIGTRAP)
 31272  		}
 31273  	}
 31274  
 31275  	sqlite3.Xsqlite3_shutdown(tls)
 31276  
 31277  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31278  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 31279  	interp = tcl.XTcl_CreateInterp(tls)
 31280  	Sqlite3_Init(tls, interp)
 31281  
 31282  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 31283  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 31284  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 31285  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 31286  	for i = 1; i < argc; i++ {
 31287  		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)
 31288  	}
 31289  	zScript = sqlite3TestInit(tls, interp)
 31290  	if zScript == uintptr(0) {
 31291  		zScript = tclsh_main_loop(tls)
 31292  	}
 31293  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 31294  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 31295  		if zInfo == uintptr(0) {
 31296  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 31297  		}
 31298  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 31299  		return 1
 31300  	}
 31301  	return 0
 31302  }
 31303  
 31304  type sqlite3_value = sqlite3_value1
 31305  
 31306  type sqlite3_context = sqlite3_context1
 31307  type PreUpdate = PreUpdate1
 31308  
 31309  type Vdbe = Vdbe1
 31310  
 31311  type Mem = sqlite3_value1
 31312  
 31313  type Op = VdbeOp1
 31314  
 31315  type Bool = uint32
 31316  
 31317  type AuxData1 = struct {
 31318  	FiAuxOp     int32
 31319  	FiAuxArg    int32
 31320  	FpAux       uintptr
 31321  	FxDeleteAux uintptr
 31322  	FpNextAux   uintptr
 31323  }
 31324  
 31325  type AuxData = AuxData1
 31326  
 31327  type VdbeCursor1 = struct {
 31328  	FeCurType       u8
 31329  	FiDb            i8
 31330  	FnullRow        u8
 31331  	FdeferredMoveto u8
 31332  	FisTable        u8
 31333  	F__ccgo_pad1    [3]byte
 31334  	FisEphemeral    uint8
 31335  	F__ccgo_pad2    [1]byte
 31336  	FseekHit        u16
 31337  	F__ccgo_pad3    [4]byte
 31338  	Fub             struct{ FpBtx uintptr }
 31339  	FseqCount       i64
 31340  	FcacheStatus    u32
 31341  	FseekResult     int32
 31342  	FpAltCursor     uintptr
 31343  	Fuc             struct{ FpCursor uintptr }
 31344  	FpKeyInfo       uintptr
 31345  	FiHdrOffset     u32
 31346  	FpgnoRoot       Pgno
 31347  	FnField         i16
 31348  	FnHdrParsed     u16
 31349  	F__ccgo_pad4    [4]byte
 31350  	FmovetoTarget   i64
 31351  	FaOffset        uintptr
 31352  	FaRow           uintptr
 31353  	FpayloadSize    u32
 31354  	FszRow          u32
 31355  	FaType          [1]u32
 31356  	F__ccgo_pad5    [4]byte
 31357  }
 31358  
 31359  type VdbeCursor = VdbeCursor1
 31360  
 31361  type VdbeFrame1 = struct {
 31362  	Fv         uintptr
 31363  	FpParent   uintptr
 31364  	FaOp       uintptr
 31365  	FanExec    uintptr
 31366  	FaMem      uintptr
 31367  	FapCsr     uintptr
 31368  	FaOnce     uintptr
 31369  	Ftoken     uintptr
 31370  	FlastRowid i64
 31371  	FpAuxData  uintptr
 31372  	FnCursor   int32
 31373  	Fpc        int32
 31374  	FnOp       int32
 31375  	FnMem      int32
 31376  	FnChildMem int32
 31377  	FnChildCsr int32
 31378  	FnChange   i64
 31379  	FnDbChange i64
 31380  }
 31381  
 31382  type VdbeFrame = VdbeFrame1
 31383  
 31384  type MemValue = struct{ Fr float64 }
 31385  
 31386  type bft = uint32
 31387  
 31388  type ScanStatus1 = struct {
 31389  	FaddrExplain int32
 31390  	FaddrLoop    int32
 31391  	FaddrVisit   int32
 31392  	FiSelectID   int32
 31393  	FnEst        LogEst
 31394  	F__ccgo_pad1 [6]byte
 31395  	FzName       uintptr
 31396  }
 31397  
 31398  type ScanStatus = ScanStatus1
 31399  
 31400  type DblquoteStr1 = struct {
 31401  	FpNextStr uintptr
 31402  	Fz        [8]int8
 31403  }
 31404  
 31405  type DblquoteStr = DblquoteStr1
 31406  
 31407  type ValueList1 = struct {
 31408  	FpCsr uintptr
 31409  	FpOut uintptr
 31410  }
 31411  
 31412  type ValueList = ValueList1
 31413  
 31414  func testHexToInt(tls *libc.TLS, h int32) int32 {
 31415  	if h >= '0' && h <= '9' {
 31416  		return h - '0'
 31417  	} else if h >= 'a' && h <= 'f' {
 31418  		return h - 'a' + 10
 31419  	} else {
 31420  		return h - 'A' + 10
 31421  	}
 31422  	return int32(0)
 31423  }
 31424  
 31425  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 31426  	bp := tls.Alloc(20)
 31427  	defer tls.Free(20)
 31428  
 31429  	if int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 'x' {
 31430  		z += uintptr(2)
 31431  	}
 31432  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 31433  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 31434  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(z)))))
 31435  		z++
 31436  	}
 31437  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 31438  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 31439  	} else {
 31440  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 31441  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 31442  	}
 31443  	return *(*uintptr)(unsafe.Pointer(bp))
 31444  }
 31445  
 31446  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31447  	bp := tls.Alloc(212)
 31448  	defer tls.Free(212)
 31449  
 31450  	var p uintptr
 31451  
 31452  	if objc != 2 {
 31453  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 31454  		return TCL_ERROR
 31455  	}
 31456  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 31457  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 31458  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 31459  		return TCL_ERROR
 31460  	}
 31461  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 31462  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 31463  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 31464  	return TCL_OK
 31465  }
 31466  
 31467  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 31468  	bp := tls.Alloc(64)
 31469  	defer tls.Free(64)
 31470  
 31471  	var p uintptr
 31472  
 31473  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 31474  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 31475  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 31476  	} else {
 31477  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 31478  	}
 31479  	return TCL_OK
 31480  }
 31481  
 31482  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 31483  	bp := tls.Alloc(248)
 31484  	defer tls.Free(248)
 31485  
 31486  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 31487  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 31488  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 31489  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+48,
 31490  			ts+14879,
 31491  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 31492  		tcl.XTcl_ResetResult(tls, interp)
 31493  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 31494  		return 1
 31495  	}
 31496  	return 0
 31497  }
 31498  
 31499  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 31500  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 31501  	return TCL_OK
 31502  }
 31503  
 31504  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 31505  	bp := tls.Alloc(8)
 31506  	defer tls.Free(8)
 31507  
 31508  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 31509  	return TCL_OK
 31510  }
 31511  
 31512  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 31513  	var str uintptr = pArg
 31514  	var i int32
 31515  
 31516  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 31517  		for i = 0; i < argc; i++ {
 31518  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 31519  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 31520  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 31521  				}
 31522  				return ts + 5846
 31523  			}())
 31524  		}
 31525  	}
 31526  	for i = 0; i < argc; i++ {
 31527  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 31528  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 31529  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 31530  			}
 31531  			return ts + 5846
 31532  		}())
 31533  	}
 31534  	return 0
 31535  }
 31536  
 31537  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31538  	return TCL_OK
 31539  }
 31540  
 31541  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31542  	var res int32 = 0
 31543  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 31544  		res = 1
 31545  	}
 31546  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 31547  	return TCL_OK
 31548  }
 31549  
 31550  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31551  	bp := tls.Alloc(310)
 31552  	defer tls.Free(310)
 31553  
 31554  	var rc int32
 31555  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 31556  	var zSql uintptr
 31557  
 31558  	if argc != 4 {
 31559  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31560  			ts+14975, 0))
 31561  		return TCL_ERROR
 31562  	}
 31563  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 31564  		return TCL_ERROR
 31565  	}
 31566  	tcl.XTcl_DStringInit(tls, bp+56)
 31567  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 31568  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 31569  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31570  	}{exec_printf_cb})), bp+56, bp+272)
 31571  	sqlite3.Xsqlite3_free(tls, zSql)
 31572  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 31573  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 31574  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31575  		if rc == SQLITE_OK {
 31576  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 31577  		}
 31578  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 31579  	}())
 31580  	tcl.XTcl_DStringFree(tls, bp+56)
 31581  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 31582  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 31583  	}
 31584  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 31585  		return TCL_ERROR
 31586  	}
 31587  	return TCL_OK
 31588  }
 31589  
 31590  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31591  	bp := tls.Alloc(806)
 31592  	defer tls.Free(806)
 31593  
 31594  	var rc int32
 31595  	var i int32
 31596  	var j int32
 31597  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 31598  	var zHex uintptr
 31599  
 31600  	if argc != 3 {
 31601  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31602  			ts+14993, 0))
 31603  		return TCL_ERROR
 31604  	}
 31605  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 31606  		return TCL_ERROR
 31607  	}
 31608  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 31609  	i = libc.AssignInt32(&j, 0)
 31610  __1:
 31611  	if !(uint64(i) < uint64(unsafe.Sizeof([501]int8{}))-uint64(1) && *(*int8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 31612  		goto __3
 31613  	}
 31614  	{
 31615  		if int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 31616  			*(*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))))))
 31617  			j = j + 2
 31618  		} else {
 31619  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*int8)(unsafe.Pointer(zHex + uintptr(j)))
 31620  		}
 31621  
 31622  	}
 31623  	goto __2
 31624  __2:
 31625  	i++
 31626  	j++
 31627  	goto __1
 31628  	goto __3
 31629  __3:
 31630  	;
 31631  	*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(0)
 31632  	tcl.XTcl_DStringInit(tls, bp+552)
 31633  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 31634  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31635  	}{exec_printf_cb})), bp+552, bp+768)
 31636  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 31637  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 31638  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31639  		if rc == SQLITE_OK {
 31640  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 31641  		}
 31642  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 31643  	}())
 31644  	tcl.XTcl_DStringFree(tls, bp+552)
 31645  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 31646  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 31647  	}
 31648  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 31649  		return TCL_ERROR
 31650  	}
 31651  	return TCL_OK
 31652  }
 31653  
 31654  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31655  	bp := tls.Alloc(40)
 31656  	defer tls.Free(40)
 31657  
 31658  	if argc != 2 {
 31659  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31660  			ts+15001, 0))
 31661  		return TCL_ERROR
 31662  	}
 31663  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31664  		return TCL_ERROR
 31665  	}
 31666  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 31667  	return TCL_OK
 31668  }
 31669  
 31670  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31671  	bp := tls.Alloc(40)
 31672  	defer tls.Free(40)
 31673  
 31674  	if argc != 2 {
 31675  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31676  			ts+15001, 0))
 31677  		return TCL_ERROR
 31678  	}
 31679  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31680  		return TCL_ERROR
 31681  	}
 31682  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 31683  	return TCL_OK
 31684  }
 31685  
 31686  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31687  	bp := tls.Alloc(310)
 31688  	defer tls.Free(310)
 31689  
 31690  	var rc int32
 31691  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 31692  	var zSql uintptr
 31693  	var i int32
 31694  	var j int32
 31695  
 31696  	if argc != 3 {
 31697  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31698  			ts+15005, 0))
 31699  		return TCL_ERROR
 31700  	}
 31701  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 31702  		return TCL_ERROR
 31703  	}
 31704  	tcl.XTcl_DStringInit(tls, bp+56)
 31705  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 31706  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 31707  		if int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 31708  			*(*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))))))
 31709  			i = i + 3
 31710  		} else {
 31711  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 31712  		}
 31713  	}
 31714  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 31715  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 31716  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31717  	}{exec_printf_cb})), bp+56, bp+272)
 31718  	sqlite3.Xsqlite3_free(tls, zSql)
 31719  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 31720  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 31721  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31722  		if rc == SQLITE_OK {
 31723  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 31724  		}
 31725  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 31726  	}())
 31727  	tcl.XTcl_DStringFree(tls, bp+56)
 31728  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 31729  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 31730  	}
 31731  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 31732  		return TCL_ERROR
 31733  	}
 31734  	return TCL_OK
 31735  }
 31736  
 31737  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31738  	bp := tls.Alloc(48)
 31739  	defer tls.Free(48)
 31740  
 31741  	var rc int32
 31742  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 31743  	if argc != 3 {
 31744  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31745  			ts+15005, 0))
 31746  		return TCL_ERROR
 31747  	}
 31748  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31749  		return TCL_ERROR
 31750  	}
 31751  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 31752  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 31753  		return TCL_ERROR
 31754  	}
 31755  	return TCL_OK
 31756  }
 31757  
 31758  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31759  	bp := tls.Alloc(40)
 31760  	defer tls.Free(40)
 31761  
 31762  	var zResult uintptr = uintptr(0)
 31763  	var i int32
 31764  
 31765  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 31766  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 31767  	}
 31768  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 31769  	sqlite3.Xsqlite3_free(tls, zResult)
 31770  	return TCL_OK
 31771  }
 31772  
 31773  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31774  	bp := tls.Alloc(20)
 31775  	defer tls.Free(20)
 31776  
 31777  	var zStr uintptr
 31778  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 31779  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 31780  	sqlite3.Xsqlite3_free(tls, zStr)
 31781  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 31782  	return TCL_OK
 31783  }
 31784  
 31785  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31786  	bp := tls.Alloc(124)
 31787  	defer tls.Free(124)
 31788  
 31789  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 31790  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 31791  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 31792  	if uint64(n) > uint64(unsafe.Sizeof([100]int8{})) {
 31793  		n = int32(unsafe.Sizeof([100]int8{}))
 31794  	}
 31795  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+15025, 0)
 31796  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 31797  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 31798  	return TCL_OK
 31799  }
 31800  
 31801  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31802  	bp := tls.Alloc(350)
 31803  	defer tls.Free(350)
 31804  
 31805  	var rc int32
 31806  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 31807  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 31808  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 31809  
 31810  	var i int32
 31811  
 31812  	var zSql uintptr
 31813  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 31814  	if argc == 5 {
 31815  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 31816  			return TCL_ERROR
 31817  		}
 31818  	}
 31819  	if argc != 4 && argc != 5 {
 31820  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31821  			ts+15052, 0))
 31822  		return TCL_ERROR
 31823  	}
 31824  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 31825  		return TCL_ERROR
 31826  	}
 31827  	tcl.XTcl_DStringInit(tls, bp+80)
 31828  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 31829  	if argc == 5 {
 31830  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 31831  	} else {
 31832  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 31833  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 31834  	}
 31835  	sqlite3.Xsqlite3_free(tls, zSql)
 31836  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 31837  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 31838  	if rc == SQLITE_OK {
 31839  		if argc == 4 {
 31840  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 31841  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 31842  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 31843  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 31844  		}
 31845  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 31846  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31847  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 31848  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 31849  				}
 31850  				return ts + 5846
 31851  			}())
 31852  		}
 31853  	} else {
 31854  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 31855  	}
 31856  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 31857  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 31858  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 31859  	}
 31860  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 31861  		return TCL_ERROR
 31862  	}
 31863  	return TCL_OK
 31864  }
 31865  
 31866  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31867  	bp := tls.Alloc(94)
 31868  	defer tls.Free(94)
 31869  
 31870  	if argc != 2 {
 31871  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 31872  		return TCL_ERROR
 31873  	}
 31874  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 31875  		return TCL_ERROR
 31876  	}
 31877  	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)))))
 31878  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 31879  	return SQLITE_OK
 31880  }
 31881  
 31882  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31883  	return TCL_OK
 31884  }
 31885  
 31886  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31887  	return TCL_OK
 31888  }
 31889  
 31890  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31891  	bp := tls.Alloc(40)
 31892  	defer tls.Free(40)
 31893  
 31894  	var rc int32
 31895  	if argc != 2 {
 31896  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31897  			ts+15083, 0))
 31898  		return TCL_ERROR
 31899  	}
 31900  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31901  		return TCL_ERROR
 31902  	}
 31903  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 31904  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 31905  	return TCL_OK
 31906  }
 31907  
 31908  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31909  	bp := tls.Alloc(40)
 31910  	defer tls.Free(40)
 31911  
 31912  	var rc int32
 31913  	if argc != 2 {
 31914  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31915  			ts+15083, 0))
 31916  		return TCL_ERROR
 31917  	}
 31918  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31919  		return TCL_ERROR
 31920  	}
 31921  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 31922  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 31923  	return TCL_OK
 31924  }
 31925  
 31926  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 31927  	var i int32
 31928  	for i = 0; i < argc; i++ {
 31929  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 31930  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 31931  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 31932  				n, libc.UintptrFromInt32(-1))
 31933  			break
 31934  		}
 31935  	}
 31936  }
 31937  
 31938  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 31939  	bp := tls.Alloc(208)
 31940  	defer tls.Free(208)
 31941  
 31942  	var z uintptr
 31943  	var i int32
 31944  
 31945  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31946  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]int8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 31947  		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))))))
 31948  	}
 31949  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = int8(0)
 31950  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 31951  }
 31952  
 31953  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 31954  	bp := tls.Alloc(408)
 31955  	defer tls.Free(408)
 31956  
 31957  	var z uintptr
 31958  	var i int32
 31959  
 31960  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31961  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]int8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 31962  		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))
 31963  	}
 31964  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = int8(0)
 31965  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 31966  }
 31967  
 31968  type dstr = struct {
 31969  	FnAlloc int32
 31970  	FnUsed  int32
 31971  	Fz      uintptr
 31972  }
 31973  
 31974  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 31975  	var n int32 = int32(libc.Xstrlen(tls, z))
 31976  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 31977  		var zNew uintptr
 31978  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 31979  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 31980  		if zNew == uintptr(0) {
 31981  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 31982  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(dstr{})))
 31983  			return
 31984  		}
 31985  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 31986  	}
 31987  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 31988  		*(*int8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = int8(divider)
 31989  	}
 31990  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1))
 31991  	*(*int32)(unsafe.Pointer(p + 4)) += n
 31992  }
 31993  
 31994  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 31995  	var p uintptr = pData
 31996  	var i int32
 31997  	for i = 0; i < argc; i++ {
 31998  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 31999  			dstrAppend(tls, p, ts+5846, ' ')
 32000  		} else {
 32001  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 32002  		}
 32003  	}
 32004  	return 0
 32005  }
 32006  
 32007  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32008  	bp := tls.Alloc(16)
 32009  	defer tls.Free(16)
 32010  
 32011  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})))
 32012  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 32013  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 32014  		*(*uintptr)(unsafe.Pointer(&struct {
 32015  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32016  		}{execFuncCallback})), bp, uintptr(0))
 32017  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 32018  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 32019  }
 32020  
 32021  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32022  	var nText int32
 32023  	var zText1 uintptr
 32024  	var zText2 uintptr
 32025  	var zText3 uintptr
 32026  
 32027  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32028  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32029  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32030  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32031  
 32032  	if zText1 != zText2 || zText2 != zText3 {
 32033  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 32034  	} else {
 32035  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 32036  		libc.Xmemcpy(tls, zCopy, zText1, uint64(nText))
 32037  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 32038  	}
 32039  }
 32040  
 32041  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32042  	var p1 uintptr
 32043  	var p2 uintptr
 32044  	var zCmd uintptr
 32045  	if argc != 4 {
 32046  		return
 32047  	}
 32048  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32049  	if zCmd == uintptr(0) {
 32050  		return
 32051  	}
 32052  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32053  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32054  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32055  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32056  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32057  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32058  	} else {
 32059  		return
 32060  	}
 32061  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 32062  	if zCmd == uintptr(0) {
 32063  		return
 32064  	}
 32065  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 32066  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32067  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 32068  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32069  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 32070  	} else {
 32071  		return
 32072  	}
 32073  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32074  	if zCmd == uintptr(0) {
 32075  		return
 32076  	}
 32077  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32078  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32079  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32080  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32081  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32082  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32083  	} else {
 32084  		return
 32085  	}
 32086  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 32087  }
 32088  
 32089  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32090  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 32091  }
 32092  
 32093  var cnt int32 = 0
 32094  
 32095  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32096  	bp := tls.Alloc(8)
 32097  	defer tls.Free(8)
 32098  
 32099  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32100  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 32101  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 32102  }
 32103  
 32104  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32105  	bp := tls.Alloc(40)
 32106  	defer tls.Free(40)
 32107  
 32108  	var rc int32
 32109  
 32110  	if argc != 2 {
 32111  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32112  			ts+15078, 0))
 32113  		return TCL_ERROR
 32114  	}
 32115  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32116  		return TCL_ERROR
 32117  	}
 32118  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 32119  		*(*uintptr)(unsafe.Pointer(&struct {
 32120  			f func(*libc.TLS, uintptr, int32, uintptr)
 32121  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 32122  	if rc == SQLITE_OK {
 32123  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32124  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32125  				f func(*libc.TLS, uintptr, int32, uintptr)
 32126  			}{hex8Func})), uintptr(0), uintptr(0))
 32127  	}
 32128  	if rc == SQLITE_OK {
 32129  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 32130  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32131  				f func(*libc.TLS, uintptr, int32, uintptr)
 32132  			}{hex16Func})), uintptr(0), uintptr(0))
 32133  	}
 32134  	if rc == SQLITE_OK {
 32135  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 32136  			*(*uintptr)(unsafe.Pointer(&struct {
 32137  				f func(*libc.TLS, uintptr, int32, uintptr)
 32138  			}{tkt2213Function})), uintptr(0), uintptr(0))
 32139  	}
 32140  	if rc == SQLITE_OK {
 32141  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 32142  			*(*uintptr)(unsafe.Pointer(&struct {
 32143  				f func(*libc.TLS, uintptr, int32, uintptr)
 32144  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 32145  	}
 32146  
 32147  	if rc == SQLITE_OK {
 32148  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 32149  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32150  				f func(*libc.TLS, uintptr, int32, uintptr)
 32151  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32152  	}
 32153  	if rc == SQLITE_OK {
 32154  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32155  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32156  				f func(*libc.TLS, uintptr, int32, uintptr)
 32157  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32158  	}
 32159  
 32160  	if rc == SQLITE_OK {
 32161  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 32162  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32163  				f func(*libc.TLS, uintptr, int32, uintptr)
 32164  			}{intrealFunction})), uintptr(0), uintptr(0))
 32165  	}
 32166  
 32167  	if rc == SQLITE_OK {
 32168  		var zUtf16 uintptr
 32169  		var pVal uintptr
 32170  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32171  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32172  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 32173  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 32174  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 32175  			rc = SQLITE_NOMEM
 32176  		} else {
 32177  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 32178  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 32179  					f func(*libc.TLS, uintptr, int32, uintptr)
 32180  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 32181  		}
 32182  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 32183  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32184  	}
 32185  
 32186  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32187  		return TCL_ERROR
 32188  	}
 32189  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32190  	return TCL_OK
 32191  }
 32192  
 32193  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32194  	bp := tls.Alloc(40)
 32195  	defer tls.Free(40)
 32196  
 32197  	if argc < 2 {
 32198  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32199  			ts+15078, 0))
 32200  		return TCL_ERROR
 32201  	}
 32202  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32203  		return TCL_ERROR
 32204  	}
 32205  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 32206  		if argc > 2 {
 32207  			return argv + uintptr(2)*8
 32208  		}
 32209  		return uintptr(0)
 32210  	}())
 32211  	return TCL_OK
 32212  }
 32213  
 32214  type t1CountCtx1 = struct{ Fn int32 }
 32215  
 32216  type t1CountCtx = t1CountCtx1
 32217  
 32218  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32219  	bp := tls.Alloc(9)
 32220  	defer tls.Free(9)
 32221  
 32222  	var p uintptr
 32223  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32224  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 32225  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 32226  	}
 32227  	if argc > 0 {
 32228  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32229  		if v == 40 {
 32230  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 32231  		} else if v == 41 {
 32232  			*(*[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)}
 32233  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 32234  		}
 32235  	}
 32236  }
 32237  
 32238  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 32239  	var p uintptr
 32240  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32241  	if p != 0 {
 32242  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 32243  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 32244  		} else {
 32245  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 32246  				if p != 0 {
 32247  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 32248  				}
 32249  				return 0
 32250  			}())
 32251  		}
 32252  	}
 32253  }
 32254  
 32255  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32256  }
 32257  
 32258  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 32259  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 32260  }
 32261  
 32262  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32263  	bp := tls.Alloc(40)
 32264  	defer tls.Free(40)
 32265  
 32266  	var rc int32
 32267  	if argc != 2 {
 32268  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32269  			ts+15083, 0))
 32270  		return TCL_ERROR
 32271  	}
 32272  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32273  		return TCL_ERROR
 32274  	}
 32275  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 32276  		*(*uintptr)(unsafe.Pointer(&struct {
 32277  			f func(*libc.TLS, uintptr, int32, uintptr)
 32278  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32279  	if rc == SQLITE_OK {
 32280  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 32281  			*(*uintptr)(unsafe.Pointer(&struct {
 32282  				f func(*libc.TLS, uintptr, int32, uintptr)
 32283  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32284  	}
 32285  	if rc == SQLITE_OK {
 32286  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 32287  			*(*uintptr)(unsafe.Pointer(&struct {
 32288  				f func(*libc.TLS, uintptr, int32, uintptr)
 32289  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 32290  	}
 32291  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32292  		return TCL_ERROR
 32293  	}
 32294  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32295  	return TCL_OK
 32296  }
 32297  
 32298  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32299  	bp := tls.Alloc(40)
 32300  	defer tls.Free(40)
 32301  
 32302  	if argc != 2 {
 32303  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32304  			ts+15307, 0))
 32305  		return TCL_ERROR
 32306  	}
 32307  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 32308  	return TCL_OK
 32309  }
 32310  
 32311  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32312  	bp := tls.Alloc(84)
 32313  	defer tls.Free(84)
 32314  
 32315  	var i int32
 32316  	var z uintptr
 32317  	if argc != 5 {
 32318  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32319  			ts+15314, 0))
 32320  		return TCL_ERROR
 32321  	}
 32322  	for i = 2; i < 5; i++ {
 32323  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32324  			return TCL_ERROR
 32325  		}
 32326  	}
 32327  	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))))
 32328  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32329  	sqlite3.Xsqlite3_free(tls, z)
 32330  	return TCL_OK
 32331  }
 32332  
 32333  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32334  	bp := tls.Alloc(112)
 32335  	defer tls.Free(112)
 32336  
 32337  	var i int32
 32338  
 32339  	var z uintptr
 32340  	if argc != 5 {
 32341  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32342  			ts+15314, 0))
 32343  		return TCL_ERROR
 32344  	}
 32345  	for i = 2; i < 5; i++ {
 32346  		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 {
 32347  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 32348  			return TCL_ERROR
 32349  		}
 32350  	}
 32351  	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))))
 32352  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32353  	sqlite3.Xsqlite3_free(tls, z)
 32354  	return TCL_OK
 32355  }
 32356  
 32357  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32358  	bp := tls.Alloc(112)
 32359  	defer tls.Free(112)
 32360  
 32361  	var i int32
 32362  
 32363  	var z uintptr
 32364  	if argc != 5 {
 32365  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32366  			ts+15314, 0))
 32367  		return TCL_ERROR
 32368  	}
 32369  	for i = 2; i < 5; i++ {
 32370  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32371  			return TCL_ERROR
 32372  		}
 32373  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 32374  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 32375  	}
 32376  	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))))
 32377  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32378  	sqlite3.Xsqlite3_free(tls, z)
 32379  	return TCL_OK
 32380  }
 32381  
 32382  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32383  	bp := tls.Alloc(84)
 32384  	defer tls.Free(84)
 32385  
 32386  	var i int32
 32387  	var z uintptr
 32388  	if argc < 4 || argc > 5 {
 32389  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32390  			ts+15374, 0))
 32391  		return TCL_ERROR
 32392  	}
 32393  	for i = 2; i < 4; i++ {
 32394  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32395  			return TCL_ERROR
 32396  		}
 32397  	}
 32398  	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 {
 32399  		if argc > 4 {
 32400  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 32401  		}
 32402  		return uintptr(0)
 32403  	}()))
 32404  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32405  	sqlite3.Xsqlite3_free(tls, z)
 32406  	return TCL_OK
 32407  }
 32408  
 32409  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32410  	bp := tls.Alloc(104)
 32411  	defer tls.Free(104)
 32412  
 32413  	var i int32
 32414  
 32415  	var z uintptr
 32416  	if argc < 5 || argc > 6 {
 32417  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32418  			ts+15400, 0))
 32419  		return TCL_ERROR
 32420  	}
 32421  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 32422  		return TCL_ERROR
 32423  	}
 32424  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 32425  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 32426  		return TCL_ERROR
 32427  	}
 32428  	for i = 3; i < 5; i++ {
 32429  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 32430  			return TCL_ERROR
 32431  		}
 32432  	}
 32433  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 32434  	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 {
 32435  		if argc > 4 {
 32436  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 32437  		}
 32438  		return uintptr(0)
 32439  	}()))
 32440  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32441  	sqlite3.Xsqlite3_free(tls, z)
 32442  	return TCL_OK
 32443  }
 32444  
 32445  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32446  	bp := tls.Alloc(96)
 32447  	defer tls.Free(96)
 32448  
 32449  	var i int32
 32450  
 32451  	var z uintptr
 32452  	if argc != 5 {
 32453  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32454  			ts+15453, 0))
 32455  		return TCL_ERROR
 32456  	}
 32457  	for i = 2; i < 4; i++ {
 32458  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32459  			return TCL_ERROR
 32460  		}
 32461  	}
 32462  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 32463  		return TCL_ERROR
 32464  	}
 32465  	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))))
 32466  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32467  	sqlite3.Xsqlite3_free(tls, z)
 32468  	return TCL_OK
 32469  }
 32470  
 32471  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32472  	bp := tls.Alloc(72)
 32473  	defer tls.Free(72)
 32474  
 32475  	var i int32
 32476  
 32477  	var z uintptr
 32478  	if argc != 4 {
 32479  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32480  			ts+15477, 0))
 32481  		return TCL_ERROR
 32482  	}
 32483  	for i = 2; i < 4; i++ {
 32484  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 32485  			return TCL_ERROR
 32486  		}
 32487  	}
 32488  	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))))
 32489  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 32490  	sqlite3.Xsqlite3_free(tls, z)
 32491  	return TCL_OK
 32492  }
 32493  
 32494  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32495  	bp := tls.Alloc(56)
 32496  	defer tls.Free(56)
 32497  
 32498  	var z uintptr
 32499  	if argc != 3 {
 32500  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32501  			ts+15500, 0))
 32502  		return TCL_ERROR
 32503  	}
 32504  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 32505  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 32506  	sqlite3.Xsqlite3_free(tls, z)
 32507  	return TCL_OK
 32508  }
 32509  
 32510  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32511  	bp := tls.Alloc(112)
 32512  	defer tls.Free(112)
 32513  
 32514  	var z uintptr
 32515  
 32516  	if argc != 3 {
 32517  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32518  			ts+15500, 0))
 32519  		return TCL_ERROR
 32520  	}
 32521  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 32522  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 32523  		return TCL_ERROR
 32524  	}
 32525  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 32526  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 32527  	libc.Xmemcpy(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))))
 32528  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 32529  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32530  	sqlite3.Xsqlite3_free(tls, z)
 32531  	return TCL_OK
 32532  }
 32533  
 32534  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32535  	bp := tls.Alloc(4)
 32536  	defer tls.Free(4)
 32537  
 32538  	var rc int32
 32539  
 32540  	var ret int32 = 0
 32541  
 32542  	if objc != 2 && objc != 1 {
 32543  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 32544  		return TCL_ERROR
 32545  	}
 32546  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 32547  
 32548  	if objc == 2 {
 32549  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 32550  			return TCL_ERROR
 32551  		}
 32552  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 32553  		if rc != SQLITE_OK {
 32554  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 32555  			return TCL_ERROR
 32556  		}
 32557  	}
 32558  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 32559  	return TCL_OK
 32560  }
 32561  
 32562  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32563  	bp := tls.Alloc(12)
 32564  	defer tls.Free(12)
 32565  
 32566  	if objc != 3 {
 32567  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 32568  		return TCL_ERROR
 32569  	}
 32570  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 32571  		return TCL_ERROR
 32572  	}
 32573  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 32574  		return TCL_ERROR
 32575  	}
 32576  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 32577  	return TCL_OK
 32578  }
 32579  
 32580  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32581  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 32582  	return TCL_OK
 32583  }
 32584  
 32585  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32586  	bp := tls.Alloc(52)
 32587  	defer tls.Free(52)
 32588  
 32589  	var zDb uintptr
 32590  	var zTbl uintptr
 32591  	var zCol uintptr
 32592  	var rc int32
 32593  	var pRet uintptr
 32594  
 32595  	if objc != 5 && objc != 4 {
 32596  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 32597  		return TCL_ERROR
 32598  	}
 32599  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32600  		return TCL_ERROR
 32601  	}
 32602  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32603  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 32604  	if objc == 5 {
 32605  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 32606  	} else {
 32607  		zCol = uintptr(0)
 32608  	}
 32609  
 32610  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 32611  		zDb = uintptr(0)
 32612  	}
 32613  
 32614  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 32615  		bp+24, bp+32, bp+40, bp+44, bp+48)
 32616  
 32617  	if rc != SQLITE_OK {
 32618  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 32619  		return TCL_ERROR
 32620  	}
 32621  
 32622  	pRet = tcl.XTcl_NewObj(tls)
 32623  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 32624  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 32625  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 32626  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 32627  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 32628  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 32629  
 32630  	return TCL_OK
 32631  }
 32632  
 32633  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 32634  	bp := tls.Alloc(8)
 32635  	defer tls.Free(8)
 32636  
 32637  	var z uintptr
 32638  
 32639  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 32640  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 32641  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 32642  	} else {
 32643  		var channel Tcl_Channel
 32644  		var instanceData ClientData
 32645  
 32646  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 32647  		if !(channel != 0) {
 32648  			return TCL_ERROR
 32649  		}
 32650  
 32651  		tcl.XTcl_Flush(tls, channel)
 32652  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 32653  
 32654  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 32655  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 32656  	}
 32657  
 32658  	return TCL_OK
 32659  }
 32660  
 32661  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32662  	bp := tls.Alloc(16)
 32663  	defer tls.Free(16)
 32664  
 32665  	var rc int32
 32666  
 32667  	if objc != 3 {
 32668  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 32669  		return TCL_ERROR
 32670  	}
 32671  
 32672  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 32673  		return TCL_ERROR
 32674  	}
 32675  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 32676  		return TCL_ERROR
 32677  	}
 32678  
 32679  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 32680  	if rc != SQLITE_OK {
 32681  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 32682  	}
 32683  
 32684  	return func() int32 {
 32685  		if rc == SQLITE_OK {
 32686  			return TCL_OK
 32687  		}
 32688  		return TCL_ERROR
 32689  	}()
 32690  }
 32691  
 32692  type TestCollationX1 = struct {
 32693  	Finterp uintptr
 32694  	FpCmp   uintptr
 32695  	FpDel   uintptr
 32696  }
 32697  
 32698  type TestCollationX = TestCollationX1
 32699  
 32700  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 32701  	var p uintptr = pCtx
 32702  
 32703  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 32704  	if rc != TCL_OK {
 32705  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 32706  	}
 32707  
 32708  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32709  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 32710  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32711  			tcl.XTclFreeObj(tls, _objPtr)
 32712  		}
 32713  	}
 32714  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 32715  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 32716  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32717  			tcl.XTclFreeObj(tls, _objPtr)
 32718  		}
 32719  	}
 32720  	sqlite3.Xsqlite3_free(tls, p)
 32721  }
 32722  
 32723  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 32724  	bp := tls.Alloc(4)
 32725  	defer tls.Free(4)
 32726  
 32727  	var p uintptr = pCtx
 32728  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 32729  	*(*int32)(unsafe.Pointer(bp)) = 0
 32730  
 32731  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 32732  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 32733  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 32734  
 32735  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 32736  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 32737  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 32738  	}
 32739  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32740  		var _objPtr uintptr = pScript
 32741  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32742  			tcl.XTclFreeObj(tls, _objPtr)
 32743  		}
 32744  	}
 32745  
 32746  	return *(*int32)(unsafe.Pointer(bp))
 32747  }
 32748  
 32749  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32750  	bp := tls.Alloc(24)
 32751  	defer tls.Free(24)
 32752  
 32753  	var p uintptr
 32754  
 32755  	var rc int32
 32756  
 32757  	if objc != 5 {
 32758  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 32759  		return TCL_ERROR
 32760  	}
 32761  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32762  		return TCL_ERROR
 32763  	}
 32764  
 32765  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 32766  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 32767  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 32768  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 32769  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 32770  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 32771  
 32772  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 32773  		p, *(*uintptr)(unsafe.Pointer(&struct {
 32774  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 32775  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 32776  	if rc != SQLITE_MISUSE {
 32777  		tcl.XTcl_AppendResult(tls, interp,
 32778  			libc.VaList(bp, ts+15663, uintptr(0)))
 32779  		return TCL_ERROR
 32780  	}
 32781  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 32782  		p, *(*uintptr)(unsafe.Pointer(&struct {
 32783  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 32784  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 32785  	return TCL_OK
 32786  }
 32787  
 32788  type CreateFunctionV21 = struct {
 32789  	Finterp   uintptr
 32790  	FpFunc    uintptr
 32791  	FpStep    uintptr
 32792  	FpFinal   uintptr
 32793  	FpDestroy uintptr
 32794  }
 32795  
 32796  type CreateFunctionV2 = CreateFunctionV21
 32797  
 32798  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 32799  }
 32800  
 32801  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 32802  }
 32803  
 32804  func cf2Final(tls *libc.TLS, ctx uintptr) {
 32805  }
 32806  
 32807  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 32808  	var p uintptr = pUser
 32809  
 32810  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32811  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 32812  		if rc != TCL_OK {
 32813  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 32814  		}
 32815  	}
 32816  
 32817  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32818  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32819  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 32820  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32821  				tcl.XTclFreeObj(tls, _objPtr)
 32822  			}
 32823  		}
 32824  	}
 32825  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32826  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 32827  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 32828  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32829  				tcl.XTclFreeObj(tls, _objPtr)
 32830  			}
 32831  		}
 32832  	}
 32833  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32834  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 32835  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 32836  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32837  				tcl.XTclFreeObj(tls, _objPtr)
 32838  			}
 32839  		}
 32840  	}
 32841  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32842  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 32843  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 32844  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32845  				tcl.XTclFreeObj(tls, _objPtr)
 32846  			}
 32847  		}
 32848  	}
 32849  	sqlite3.Xsqlite3_free(tls, p)
 32850  }
 32851  
 32852  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32853  	bp := tls.Alloc(180)
 32854  	defer tls.Free(180)
 32855  
 32856  	var zFunc uintptr
 32857  
 32858  	var p uintptr
 32859  	var i int32
 32860  	var rc int32
 32861  
 32862  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 32863  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 32864  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 32865  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 32866  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 32867  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 32868  		{FzEnc: ts + 14193},
 32869  	}
 32870  
 32871  	if objc < 5 || objc%2 == 0 {
 32872  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 32873  		return TCL_ERROR
 32874  	}
 32875  
 32876  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32877  		return TCL_ERROR
 32878  	}
 32879  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32880  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 32881  		return TCL_ERROR
 32882  	}
 32883  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 32884  		ts+15784, 0, bp+128) != 0 {
 32885  		return TCL_ERROR
 32886  	}
 32887  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 32888  
 32889  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 32890  
 32891  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})))
 32892  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 32893  
 32894  	for i = 5; i < objc; i = i + 2 {
 32895  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 32896  		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 {
 32897  			sqlite3.Xsqlite3_free(tls, p)
 32898  			return TCL_ERROR
 32899  		}
 32900  
 32901  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 32902  		case 0:
 32903  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32904  			break
 32905  		case 1:
 32906  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32907  			break
 32908  		case 2:
 32909  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32910  			break
 32911  		case 3:
 32912  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32913  			break
 32914  		}
 32915  	}
 32916  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32917  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 32918  	}
 32919  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32920  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 32921  	}
 32922  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32923  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 32924  	}
 32925  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32926  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 32927  	}
 32928  
 32929  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32930  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 32931  	}
 32932  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32933  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 32934  	}
 32935  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32936  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 32937  	}
 32938  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32939  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 32940  	}
 32941  
 32942  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 32943  		func() uintptr {
 32944  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32945  				return *(*uintptr)(unsafe.Pointer(&struct {
 32946  					f func(*libc.TLS, uintptr, int32, uintptr)
 32947  				}{cf2Func}))
 32948  			}
 32949  			return uintptr(0)
 32950  		}(),
 32951  		func() uintptr {
 32952  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32953  				return *(*uintptr)(unsafe.Pointer(&struct {
 32954  					f func(*libc.TLS, uintptr, int32, uintptr)
 32955  				}{cf2Step}))
 32956  			}
 32957  			return uintptr(0)
 32958  		}(),
 32959  		func() uintptr {
 32960  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32961  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 32962  			}
 32963  			return uintptr(0)
 32964  		}(),
 32965  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 32966  	if rc != SQLITE_OK {
 32967  		tcl.XTcl_ResetResult(tls, interp)
 32968  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 32969  		return TCL_ERROR
 32970  	}
 32971  	return TCL_OK
 32972  }
 32973  
 32974  type EncTable = struct {
 32975  	FzEnc        uintptr
 32976  	Fenc         int32
 32977  	F__ccgo_pad1 [4]byte
 32978  }
 32979  
 32980  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32981  	bp := tls.Alloc(88)
 32982  	defer tls.Free(88)
 32983  
 32984  	var db uintptr
 32985  	_ = db
 32986  	var rc int32
 32987  	var zDb uintptr
 32988  	var zFile uintptr
 32989  	_ = zFile
 32990  	var zProc uintptr = uintptr(0)
 32991  	_ = zProc
 32992  	var zErr uintptr = uintptr(0)
 32993  
 32994  	if objc != 4 && objc != 3 {
 32995  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 32996  		return TCL_ERROR
 32997  	}
 32998  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 32999  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33000  	if objc == 4 {
 33001  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33002  	}
 33003  
 33004  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 33005  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33006  		return TCL_ERROR
 33007  	}
 33008  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 33009  
 33010  	rc = SQLITE_ERROR
 33011  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 33012  	_ = zProc
 33013  	_ = zFile
 33014  	if rc != SQLITE_OK {
 33015  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 33016  			if zErr != 0 {
 33017  				return zErr
 33018  			}
 33019  			return ts + 584
 33020  		}(), uintptr(1))
 33021  		rc = TCL_ERROR
 33022  	} else {
 33023  		rc = TCL_OK
 33024  	}
 33025  	sqlite3.Xsqlite3_free(tls, zErr)
 33026  
 33027  	return rc
 33028  }
 33029  
 33030  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33031  	bp := tls.Alloc(100)
 33032  	defer tls.Free(100)
 33033  
 33034  	var db uintptr
 33035  	_ = db
 33036  	var zDb uintptr
 33037  
 33038  	if objc != 3 {
 33039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 33040  		return TCL_ERROR
 33041  	}
 33042  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33043  
 33044  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 33045  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33046  		return TCL_ERROR
 33047  	}
 33048  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 33049  
 33050  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 33051  		return TCL_ERROR
 33052  	}
 33053  
 33054  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 33055  	return TCL_ERROR
 33056  }
 33057  
 33058  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33059  	libc.Xexit(tls, 255)
 33060  
 33061  	return TCL_OK
 33062  }
 33063  
 33064  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33065  	var zArg0 uintptr
 33066  __1:
 33067  	if !(argc >= 2) {
 33068  		goto __2
 33069  	}
 33070  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33071  	if !(zArg0 != 0) {
 33072  		goto __3
 33073  	}
 33074  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 33075  		goto __5
 33076  	}
 33077  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33078  	goto __6
 33079  __5:
 33080  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 33081  		goto __7
 33082  	}
 33083  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33084  	goto __8
 33085  __7:
 33086  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 33087  		goto __9
 33088  	}
 33089  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 33090  		libc.UintptrFromInt32(-1))
 33091  	goto __10
 33092  __9:
 33093  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 33094  		goto __11
 33095  	}
 33096  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33097  	goto __12
 33098  __11:
 33099  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 33100  		goto __13
 33101  	}
 33102  	sqlite3.Xsqlite3_result_null(tls, context)
 33103  	goto __14
 33104  __13:
 33105  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 33106  		goto __15
 33107  	}
 33108  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 33109  	goto __16
 33110  __15:
 33111  	goto error_out
 33112  __16:
 33113  	;
 33114  __14:
 33115  	;
 33116  __12:
 33117  	;
 33118  __10:
 33119  	;
 33120  __8:
 33121  	;
 33122  __6:
 33123  	;
 33124  	goto __4
 33125  __3:
 33126  	goto error_out
 33127  __4:
 33128  	;
 33129  	argc = argc - 2
 33130  	argv += 8 * uintptr(2)
 33131  	goto __1
 33132  __2:
 33133  	;
 33134  	return
 33135  
 33136  error_out:
 33137  	sqlite3.Xsqlite3_result_error(tls, context,
 33138  		ts+15915, -1)
 33139  }
 33140  
 33141  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33142  	bp := tls.Alloc(56)
 33143  	defer tls.Free(56)
 33144  
 33145  	var rc int32
 33146  	if argc != 3 {
 33147  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33148  			ts+15983, 0))
 33149  		return TCL_ERROR
 33150  	}
 33151  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 33152  		return TCL_ERROR
 33153  	}
 33154  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 33155  		*(*uintptr)(unsafe.Pointer(&struct {
 33156  			f func(*libc.TLS, uintptr, int32, uintptr)
 33157  		}{testFunc})), uintptr(0), uintptr(0))
 33158  	if rc != 0 {
 33159  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33160  		return TCL_ERROR
 33161  	}
 33162  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 33163  		return TCL_ERROR
 33164  	}
 33165  	return TCL_OK
 33166  }
 33167  
 33168  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33169  	bp := tls.Alloc(40)
 33170  	defer tls.Free(40)
 33171  
 33172  	var rc int32
 33173  	var db uintptr = uintptr(0)
 33174  
 33175  	if objc != 2 {
 33176  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33177  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33178  		return TCL_ERROR
 33179  	}
 33180  
 33181  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33182  		return TCL_ERROR
 33183  	}
 33184  
 33185  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 33186  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33187  	}
 33188  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33189  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33190  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 33191  		return TCL_ERROR
 33192  	}
 33193  	return TCL_OK
 33194  }
 33195  
 33196  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33197  	bp := tls.Alloc(16)
 33198  	defer tls.Free(16)
 33199  
 33200  	var iValue int32
 33201  	var i int32
 33202  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 33203  
 33204  	var zOpName uintptr
 33205  
 33206  	if objc != 4 {
 33207  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 33208  		return TCL_ERROR
 33209  	}
 33210  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33211  		return TCL_ERROR
 33212  	}
 33213  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33214  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33215  		FzName       uintptr
 33216  		Fop          int32
 33217  		F__ccgo_pad1 [4]byte
 33218  	}{}))); i++ {
 33219  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 33220  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 33221  			break
 33222  		}
 33223  	}
 33224  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33225  		FzName       uintptr
 33226  		Fop          int32
 33227  		F__ccgo_pad1 [4]byte
 33228  	}{}))) {
 33229  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33230  			return TCL_ERROR
 33231  		}
 33232  	}
 33233  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 33234  		return TCL_ERROR
 33235  	}
 33236  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 33237  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 33238  	return TCL_OK
 33239  }
 33240  
 33241  var aOp = [7]struct {
 33242  	FzName       uintptr
 33243  	Fop          int32
 33244  	F__ccgo_pad1 [4]byte
 33245  }{
 33246  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 33247  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 33248  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 33249  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 33250  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 33251  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 33252  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 33253  }
 33254  
 33255  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33256  	bp := tls.Alloc(12)
 33257  	defer tls.Free(12)
 33258  
 33259  	if objc != 2 {
 33260  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 33261  		return TCL_ERROR
 33262  	}
 33263  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 33264  		return TCL_ERROR
 33265  	}
 33266  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 33267  	return TCL_OK
 33268  }
 33269  
 33270  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33271  	bp := tls.Alloc(8)
 33272  	defer tls.Free(8)
 33273  
 33274  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 33275  	if objc != 1 {
 33276  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 33277  		return TCL_ERROR
 33278  	}
 33279  	(*struct {
 33280  		f func(*libc.TLS, uintptr, uintptr) int32
 33281  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 33282  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 33283  	return TCL_OK
 33284  }
 33285  
 33286  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33287  	bp := tls.Alloc(116)
 33288  	defer tls.Free(116)
 33289  
 33290  	var rc int32
 33291  
 33292  	var zName uintptr
 33293  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33294  
 33295  	if objc != 3 {
 33296  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33297  		return TCL_ERROR
 33298  	}
 33299  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33300  		return TCL_ERROR
 33301  	}
 33302  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33303  
 33304  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33305  	if rc != SQLITE_OK {
 33306  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33307  		return TCL_ERROR
 33308  	} else {
 33309  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 33310  			return TCL_ERROR
 33311  		}
 33312  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 33313  	}
 33314  	return TCL_OK
 33315  }
 33316  
 33317  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33318  	bp := tls.Alloc(8)
 33319  	defer tls.Free(8)
 33320  
 33321  	var rc int32
 33322  
 33323  	var zName uintptr
 33324  
 33325  	if objc != 3 {
 33326  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33327  		return TCL_ERROR
 33328  	}
 33329  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33330  		return TCL_ERROR
 33331  	}
 33332  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33333  
 33334  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 33335  	if rc != SQLITE_OK {
 33336  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33337  		return TCL_ERROR
 33338  	} else {
 33339  		tcl.XTcl_ResetResult(tls, interp)
 33340  	}
 33341  	return TCL_OK
 33342  }
 33343  
 33344  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33345  	bp := tls.Alloc(8)
 33346  	defer tls.Free(8)
 33347  
 33348  	var rc int32
 33349  
 33350  	var zName uintptr
 33351  	var pSnapshot uintptr
 33352  
 33353  	if objc != 4 {
 33354  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33355  		return TCL_ERROR
 33356  	}
 33357  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33358  		return TCL_ERROR
 33359  	}
 33360  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33361  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 33362  
 33363  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 33364  	if rc != SQLITE_OK {
 33365  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33366  		return TCL_ERROR
 33367  	} else {
 33368  		tcl.XTcl_ResetResult(tls, interp)
 33369  	}
 33370  	return TCL_OK
 33371  }
 33372  
 33373  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33374  	var pSnapshot uintptr
 33375  	if objc != 2 {
 33376  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 33377  		return TCL_ERROR
 33378  	}
 33379  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33380  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 33381  	return TCL_OK
 33382  }
 33383  
 33384  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33385  	var res int32
 33386  	var p1 uintptr
 33387  	var p2 uintptr
 33388  	if objc != 3 {
 33389  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 33390  		return TCL_ERROR
 33391  	}
 33392  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33393  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 33394  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 33395  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 33396  	return TCL_OK
 33397  }
 33398  
 33399  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33400  	bp := tls.Alloc(16)
 33401  	defer tls.Free(16)
 33402  
 33403  	var rc int32
 33404  
 33405  	var zName uintptr
 33406  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33407  
 33408  	if objc != 3 {
 33409  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33410  		return TCL_ERROR
 33411  	}
 33412  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33413  		return TCL_ERROR
 33414  	}
 33415  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33416  
 33417  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33418  	if rc != SQLITE_OK {
 33419  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33420  		return TCL_ERROR
 33421  	} else {
 33422  		tcl.XTcl_SetObjResult(tls, interp,
 33423  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 33424  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 33425  	}
 33426  	return TCL_OK
 33427  }
 33428  
 33429  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33430  	bp := tls.Alloc(28)
 33431  	defer tls.Free(28)
 33432  
 33433  	var rc int32
 33434  
 33435  	var zName uintptr
 33436  	var pBlob uintptr
 33437  
 33438  	if objc != 4 {
 33439  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33440  		return TCL_ERROR
 33441  	}
 33442  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33443  		return TCL_ERROR
 33444  	}
 33445  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33446  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 33447  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 33448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 33449  		return TCL_ERROR
 33450  	}
 33451  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 33452  	if rc != SQLITE_OK {
 33453  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33454  		return TCL_ERROR
 33455  	}
 33456  	return TCL_OK
 33457  }
 33458  
 33459  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33460  	bp := tls.Alloc(24)
 33461  	defer tls.Free(24)
 33462  
 33463  	var res int32
 33464  	var p1 uintptr
 33465  	var p2 uintptr
 33466  
 33467  	if objc != 3 {
 33468  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 33469  		return TCL_ERROR
 33470  	}
 33471  
 33472  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 33473  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 33474  
 33475  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 33476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 33477  		return TCL_ERROR
 33478  	}
 33479  
 33480  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 33481  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 33482  	return TCL_OK
 33483  }
 33484  
 33485  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33486  	var rc int32
 33487  	var zFile uintptr
 33488  	if objc != 2 {
 33489  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 33490  		return TCL_ERROR
 33491  	}
 33492  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33493  	rc = sqlite3_delete_database(tls, zFile)
 33494  
 33495  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33496  	return TCL_OK
 33497  }
 33498  
 33499  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33500  	bp := tls.Alloc(32)
 33501  	defer tls.Free(32)
 33502  
 33503  	var zFile uintptr = uintptr(0)
 33504  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 33505  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 33506  	var bRes int32 = 0
 33507  	var dc int32 = 0
 33508  	var rc int32
 33509  
 33510  	if objc != 2 {
 33511  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 33512  		return TCL_ERROR
 33513  	}
 33514  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33515  
 33516  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 33517  	if rc != SQLITE_OK {
 33518  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33519  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 33520  		return TCL_ERROR
 33521  	}
 33522  
 33523  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 33524  	dc = (*struct {
 33525  		f func(*libc.TLS, uintptr) int32
 33526  	})(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)))
 33527  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 33528  		bRes = 1
 33529  	}
 33530  
 33531  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 33532  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 33533  	return TCL_OK
 33534  }
 33535  
 33536  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33537  	bp := tls.Alloc(114)
 33538  	defer tls.Free(114)
 33539  
 33540  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 33541  
 33542  	if objc != 3 {
 33543  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33544  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 33545  		return TCL_ERROR
 33546  	}
 33547  
 33548  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 33549  		return TCL_ERROR
 33550  	}
 33551  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 33552  		return TCL_ERROR
 33553  	}
 33554  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 33555  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 33556  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 33557  			return TCL_ERROR
 33558  		}
 33559  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 33560  	}
 33561  	return TCL_OK
 33562  }
 33563  
 33564  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33565  	bp := tls.Alloc(40)
 33566  	defer tls.Free(40)
 33567  
 33568  	var rc int32
 33569  
 33570  	if objc != 2 {
 33571  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33572  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33573  		return TCL_ERROR
 33574  	}
 33575  
 33576  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33577  		return TCL_ERROR
 33578  	}
 33579  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33580  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 33581  	return TCL_OK
 33582  }
 33583  
 33584  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33585  	bp := tls.Alloc(40)
 33586  	defer tls.Free(40)
 33587  
 33588  	var rc int32
 33589  
 33590  	if objc != 2 {
 33591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33592  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33593  		return TCL_ERROR
 33594  	}
 33595  
 33596  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33597  		return TCL_ERROR
 33598  	}
 33599  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33600  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 33601  	return TCL_OK
 33602  }
 33603  
 33604  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33605  	bp := tls.Alloc(40)
 33606  	defer tls.Free(40)
 33607  
 33608  	var rc int32
 33609  
 33610  	if objc != 2 {
 33611  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33612  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33613  		return TCL_ERROR
 33614  	}
 33615  
 33616  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33617  		return TCL_ERROR
 33618  	}
 33619  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33620  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 33621  	return TCL_OK
 33622  }
 33623  
 33624  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33625  	bp := tls.Alloc(40)
 33626  	defer tls.Free(40)
 33627  
 33628  	if objc != 2 {
 33629  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33630  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33631  		return TCL_ERROR
 33632  	}
 33633  
 33634  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33635  		return TCL_ERROR
 33636  	}
 33637  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33638  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5) != 0)))
 33639  	return TCL_OK
 33640  }
 33641  
 33642  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33643  	bp := tls.Alloc(40)
 33644  	defer tls.Free(40)
 33645  
 33646  	var rc int32
 33647  
 33648  	if objc != 2 {
 33649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33650  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33651  		return TCL_ERROR
 33652  	}
 33653  
 33654  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33655  		return TCL_ERROR
 33656  	}
 33657  
 33658  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33659  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 33660  		return TCL_ERROR
 33661  	}
 33662  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33663  
 33664  	return TCL_OK
 33665  }
 33666  
 33667  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33668  	bp := tls.Alloc(40)
 33669  	defer tls.Free(40)
 33670  
 33671  	if objc != 2 {
 33672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33673  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33674  		return TCL_ERROR
 33675  	}
 33676  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33677  		return TCL_ERROR
 33678  	}
 33679  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 33680  	return TCL_OK
 33681  }
 33682  
 33683  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33684  	bp := tls.Alloc(48)
 33685  	defer tls.Free(48)
 33686  
 33687  	if objc != 3 {
 33688  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33689  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 33690  		return TCL_ERROR
 33691  	}
 33692  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33693  		return TCL_ERROR
 33694  	}
 33695  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 33696  		return TCL_ERROR
 33697  	}
 33698  	tcl.XTcl_SetObjResult(tls, interp,
 33699  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 33700  	return TCL_OK
 33701  }
 33702  
 33703  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33704  	bp := tls.Alloc(40)
 33705  	defer tls.Free(40)
 33706  
 33707  	if objc != 2 {
 33708  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33709  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 33710  		return TCL_ERROR
 33711  	}
 33712  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33713  		return TCL_ERROR
 33714  	}
 33715  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 33716  	return TCL_OK
 33717  }
 33718  
 33719  var sqlite_static_bind_value uintptr = uintptr(0)
 33720  var sqlite_static_bind_nbyte int32 = 0
 33721  
 33722  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33723  	bp := tls.Alloc(142)
 33724  	defer tls.Free(142)
 33725  
 33726  	var rc int32
 33727  
 33728  	if argc != 5 {
 33729  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33730  			ts+16340, 0))
 33731  		return TCL_ERROR
 33732  	}
 33733  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 33734  		return TCL_ERROR
 33735  	}
 33736  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 33737  		return TCL_ERROR
 33738  	}
 33739  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 33740  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 33741  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 33742  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 33743  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 33744  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 33745  			sqlite_static_bind_nbyte, uintptr(0))
 33746  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 33747  		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))
 33748  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 33749  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 33750  	} else {
 33751  		tcl.XTcl_AppendResult(tls, interp,
 33752  			libc.VaList(bp+32, ts+16422, 0))
 33753  		return TCL_ERROR
 33754  	}
 33755  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 33756  		return TCL_ERROR
 33757  	}
 33758  	if rc != 0 {
 33759  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 33760  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33761  		return TCL_ERROR
 33762  	}
 33763  	return TCL_OK
 33764  }
 33765  
 33766  var pTestCollateInterp uintptr
 33767  
 33768  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 33769  	bp := tls.Alloc(4)
 33770  	defer tls.Free(4)
 33771  
 33772  	var i uintptr = pTestCollateInterp
 33773  	var encin int32 = int32(pCtx)
 33774  
 33775  	var n int32
 33776  	var pVal uintptr
 33777  	var pX uintptr
 33778  
 33779  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 33780  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 33781  
 33782  	switch encin {
 33783  	case SQLITE_UTF8:
 33784  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 33785  		break
 33786  	case SQLITE_UTF16LE:
 33787  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 33788  		break
 33789  	case SQLITE_UTF16BE:
 33790  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 33791  		break
 33792  	default:
 33793  	}
 33794  
 33795  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 33796  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 33797  	if pVal != 0 {
 33798  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 33799  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 33800  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 33801  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 33802  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 33803  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 33804  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 33805  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 33806  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 33807  	}
 33808  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 33809  
 33810  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 33811  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33812  		var _objPtr uintptr = pX
 33813  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33814  			tcl.XTclFreeObj(tls, _objPtr)
 33815  		}
 33816  	}
 33817  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 33818  	return *(*int32)(unsafe.Pointer(bp))
 33819  }
 33820  
 33821  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33822  	bp := tls.Alloc(60)
 33823  	defer tls.Free(60)
 33824  
 33825  	var pVal uintptr
 33826  	var rc int32
 33827  	var zUtf16 uintptr
 33828  
 33829  	if !(objc != 5) {
 33830  		goto __1
 33831  	}
 33832  	goto bad_args
 33833  __1:
 33834  	;
 33835  	pTestCollateInterp = interp
 33836  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 33837  		goto __2
 33838  	}
 33839  	return TCL_ERROR
 33840  __2:
 33841  	;
 33842  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 33843  		goto __3
 33844  	}
 33845  	return TCL_ERROR
 33846  __3:
 33847  	;
 33848  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 33849  		uintptr(SQLITE_UTF8), func() uintptr {
 33850  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33851  				return *(*uintptr)(unsafe.Pointer(&struct {
 33852  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33853  				}{test_collate_func}))
 33854  			}
 33855  			return uintptr(0)
 33856  		}())
 33857  	if !(rc == SQLITE_OK) {
 33858  		goto __4
 33859  	}
 33860  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 33861  		goto __5
 33862  	}
 33863  	return TCL_ERROR
 33864  __5:
 33865  	;
 33866  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 33867  		uintptr(SQLITE_UTF16LE), func() uintptr {
 33868  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33869  				return *(*uintptr)(unsafe.Pointer(&struct {
 33870  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33871  				}{test_collate_func}))
 33872  			}
 33873  			return uintptr(0)
 33874  		}())
 33875  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 33876  		goto __6
 33877  	}
 33878  	return TCL_ERROR
 33879  __6:
 33880  	;
 33881  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 33882  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 33883  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 33884  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 33885  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 33886  		goto __7
 33887  	}
 33888  	rc = SQLITE_NOMEM
 33889  	goto __8
 33890  __7:
 33891  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 33892  		uintptr(SQLITE_UTF16BE), func() uintptr {
 33893  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33894  				return *(*uintptr)(unsafe.Pointer(&struct {
 33895  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33896  				}{test_collate_func}))
 33897  			}
 33898  			return uintptr(0)
 33899  		}())
 33900  __8:
 33901  	;
 33902  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 33903  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 33904  __4:
 33905  	;
 33906  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 33907  		goto __9
 33908  	}
 33909  	return TCL_ERROR
 33910  __9:
 33911  	;
 33912  	if !(rc != SQLITE_OK) {
 33913  		goto __10
 33914  	}
 33915  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 33916  	return TCL_ERROR
 33917  __10:
 33918  	;
 33919  	return TCL_OK
 33920  
 33921  bad_args:
 33922  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 33923  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 33924  	return TCL_ERROR
 33925  }
 33926  
 33927  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 33928  	var nCmp int32 = func() int32 {
 33929  		if nA > nB {
 33930  			return nB
 33931  		}
 33932  		return nA
 33933  	}()
 33934  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 33935  	if res == 0 {
 33936  		res = nA - nB
 33937  	}
 33938  	return res
 33939  }
 33940  
 33941  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33942  	bp := tls.Alloc(8)
 33943  	defer tls.Free(8)
 33944  
 33945  	var rc int32
 33946  
 33947  	if !(objc != 2) {
 33948  		goto __1
 33949  	}
 33950  	goto bad_args
 33951  __1:
 33952  	;
 33953  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 33954  		goto __2
 33955  	}
 33956  	return TCL_ERROR
 33957  __2:
 33958  	;
 33959  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 33960  		*(*uintptr)(unsafe.Pointer(&struct {
 33961  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33962  		}{test_utf16bin_collate_func})))
 33963  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 33964  		goto __3
 33965  	}
 33966  	return TCL_ERROR
 33967  __3:
 33968  	;
 33969  	return TCL_OK
 33970  
 33971  bad_args:
 33972  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 33973  	return TCL_ERROR
 33974  }
 33975  
 33976  var zNeededCollation [200]int8
 33977  var pzNeededCollation uintptr = 0
 33978  
 33979  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 33980  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 33981  	var i int32
 33982  	var z uintptr
 33983  	z = pName
 33984  	i = 0
 33985  	for ; *(*int8)(unsafe.Pointer(z)) != 0 || *(*int8)(unsafe.Pointer(z + 1)) != 0; z++ {
 33986  		if *(*int8)(unsafe.Pointer(z)) != 0 {
 33987  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*int8)(unsafe.Pointer(z))
 33988  		}
 33989  	}
 33990  	zNeededCollation[i] = int8(0)
 33991  	sqlite3.Xsqlite3_create_collation(tls,
 33992  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 33993  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33994  		}{test_collate_func})))
 33995  }
 33996  
 33997  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33998  	bp := tls.Alloc(8)
 33999  	defer tls.Free(8)
 34000  
 34001  	var rc int32
 34002  
 34003  	if !(objc != 2) {
 34004  		goto __1
 34005  	}
 34006  	goto bad_args
 34007  __1:
 34008  	;
 34009  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34010  		goto __2
 34011  	}
 34012  	return TCL_ERROR
 34013  __2:
 34014  	;
 34015  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34016  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 34017  	}{test_collate_needed_cb})))
 34018  	zNeededCollation[0] = int8(0)
 34019  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34020  		goto __3
 34021  	}
 34022  	return TCL_ERROR
 34023  __3:
 34024  	;
 34025  	return TCL_OK
 34026  
 34027  bad_args:
 34028  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34029  	return TCL_ERROR
 34030  }
 34031  
 34032  var unaligned_string_counter int32 = 0
 34033  
 34034  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 34035  	var rc int32
 34036  	var n int32
 34037  	if nKey1 < nKey2 {
 34038  		n = nKey1
 34039  	} else {
 34040  		n = nKey2
 34041  	}
 34042  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 34043  		unaligned_string_counter++
 34044  	}
 34045  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 34046  		unaligned_string_counter++
 34047  	}
 34048  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 34049  	if rc == 0 {
 34050  		rc = nKey1 - nKey2
 34051  	}
 34052  	return rc
 34053  }
 34054  
 34055  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34056  	bp := tls.Alloc(8)
 34057  	defer tls.Free(8)
 34058  
 34059  	if objc >= 2 {
 34060  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34061  			return TCL_ERROR
 34062  		}
 34063  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 34064  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34065  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34066  			}{alignmentCollFunc})))
 34067  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 34068  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34069  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34070  			}{alignmentCollFunc})))
 34071  	}
 34072  	return SQLITE_OK
 34073  }
 34074  
 34075  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34076  	var interp uintptr
 34077  	var pX uintptr
 34078  	var pVal uintptr
 34079  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34080  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34081  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34082  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34083  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34084  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34085  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34086  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34087  		var _objPtr uintptr = pX
 34088  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34089  			tcl.XTclFreeObj(tls, _objPtr)
 34090  		}
 34091  	}
 34092  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 34093  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34094  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34095  		uint8(SQLITE_UTF8), uintptr(0))
 34096  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 34097  		-1, libc.UintptrFromInt32(-1))
 34098  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34099  }
 34100  
 34101  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34102  	var interp uintptr
 34103  	var pX uintptr
 34104  	var pVal uintptr
 34105  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34106  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34107  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34108  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34109  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34110  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34111  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34112  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34113  		var _objPtr uintptr = pX
 34114  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34115  			tcl.XTclFreeObj(tls, _objPtr)
 34116  		}
 34117  	}
 34118  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34119  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34120  		uint8(SQLITE_UTF8), uintptr(0))
 34121  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 34122  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34123  }
 34124  
 34125  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34126  	var interp uintptr
 34127  	var pX uintptr
 34128  	var pVal uintptr
 34129  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34130  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34131  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34132  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34133  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34134  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34135  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34136  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34137  		var _objPtr uintptr = pX
 34138  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34139  			tcl.XTclFreeObj(tls, _objPtr)
 34140  		}
 34141  	}
 34142  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34143  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34144  		uint8(SQLITE_UTF8), uintptr(0))
 34145  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34146  		-1, libc.UintptrFromInt32(-1))
 34147  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34148  		-1, libc.UintptrFromInt32(-1))
 34149  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34150  		-1, libc.UintptrFromInt32(-1))
 34151  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34152  }
 34153  
 34154  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34155  	bp := tls.Alloc(44)
 34156  	defer tls.Free(44)
 34157  
 34158  	if !(objc != 5) {
 34159  		goto __1
 34160  	}
 34161  	goto bad_args
 34162  __1:
 34163  	;
 34164  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 34165  		goto __2
 34166  	}
 34167  	return TCL_ERROR
 34168  __2:
 34169  	;
 34170  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 34171  		goto __3
 34172  	}
 34173  	return TCL_ERROR
 34174  __3:
 34175  	;
 34176  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34177  		goto __4
 34178  	}
 34179  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 34180  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34181  			f func(*libc.TLS, uintptr, int32, uintptr)
 34182  		}{test_function_utf8})), uintptr(0), uintptr(0))
 34183  __4:
 34184  	;
 34185  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 34186  		goto __5
 34187  	}
 34188  	return TCL_ERROR
 34189  __5:
 34190  	;
 34191  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34192  		goto __6
 34193  	}
 34194  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 34195  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34196  			f func(*libc.TLS, uintptr, int32, uintptr)
 34197  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 34198  __6:
 34199  	;
 34200  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 34201  		goto __7
 34202  	}
 34203  	return TCL_ERROR
 34204  __7:
 34205  	;
 34206  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34207  		goto __8
 34208  	}
 34209  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 34210  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34211  			f func(*libc.TLS, uintptr, int32, uintptr)
 34212  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 34213  __8:
 34214  	;
 34215  	return TCL_OK
 34216  bad_args:
 34217  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34218  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34219  	return TCL_ERROR
 34220  }
 34221  
 34222  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34223  	var zCode uintptr
 34224  	var i int32
 34225  	if objc != 1 {
 34226  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 34227  	}
 34228  
 34229  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34230  	for i = 0; i < 200; i++ {
 34231  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 34232  			break
 34233  		}
 34234  	}
 34235  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 34236  	return TCL_OK
 34237  }
 34238  
 34239  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34240  	return TCL_OK
 34241  }
 34242  
 34243  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34244  	bp := tls.Alloc(16)
 34245  	defer tls.Free(16)
 34246  
 34247  	var rc int32
 34248  
 34249  	if objc != 4 {
 34250  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34251  		return TCL_ERROR
 34252  	}
 34253  
 34254  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34255  		return TCL_ERROR
 34256  	}
 34257  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 34258  		return TCL_ERROR
 34259  	}
 34260  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 34261  		return TCL_ERROR
 34262  	}
 34263  
 34264  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 34265  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 34266  		return TCL_ERROR
 34267  	}
 34268  	if rc != SQLITE_OK {
 34269  		return TCL_ERROR
 34270  	}
 34271  
 34272  	return TCL_OK
 34273  }
 34274  
 34275  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34276  	bp := tls.Alloc(40)
 34277  	defer tls.Free(40)
 34278  
 34279  	var rc int32
 34280  
 34281  	if objc != 4 {
 34282  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34283  		return TCL_ERROR
 34284  	}
 34285  
 34286  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 34287  		return TCL_ERROR
 34288  	}
 34289  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 34290  		return TCL_ERROR
 34291  	}
 34292  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 34293  		return TCL_ERROR
 34294  	}
 34295  
 34296  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 34297  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 34298  		return TCL_ERROR
 34299  	}
 34300  	if rc != SQLITE_OK {
 34301  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34302  		return TCL_ERROR
 34303  	}
 34304  
 34305  	return TCL_OK
 34306  }
 34307  
 34308  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34309  	bp := tls.Alloc(48)
 34310  	defer tls.Free(48)
 34311  
 34312  	var rc int32
 34313  
 34314  	if objc != 4 {
 34315  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34316  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34317  		return TCL_ERROR
 34318  	}
 34319  
 34320  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34321  		return TCL_ERROR
 34322  	}
 34323  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34324  		return TCL_ERROR
 34325  	}
 34326  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 34327  		return TCL_ERROR
 34328  	}
 34329  
 34330  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 34331  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34332  		return TCL_ERROR
 34333  	}
 34334  	if rc != SQLITE_OK {
 34335  		return TCL_ERROR
 34336  	}
 34337  
 34338  	return TCL_OK
 34339  }
 34340  
 34341  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34342  	var i int32
 34343  
 34344  	sqlite3.Xsqlite3_free(tls, p)
 34345  	p = uintptr(0)
 34346  	if objc > 1 {
 34347  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 34348  		if p == uintptr(0) {
 34349  			return TCL_ERROR
 34350  		}
 34351  		for i = 0; i < objc-1; i++ {
 34352  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 34353  				sqlite3.Xsqlite3_free(tls, p)
 34354  				p = uintptr(0)
 34355  				return TCL_ERROR
 34356  			}
 34357  		}
 34358  	}
 34359  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 34360  	return TCL_OK
 34361  }
 34362  
 34363  var p uintptr = uintptr(0)
 34364  
 34365  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34366  	bp := tls.Alloc(8)
 34367  	defer tls.Free(8)
 34368  
 34369  	var i int32
 34370  
 34371  	sqlite3.Xsqlite3_free(tls, p1)
 34372  	p1 = uintptr(0)
 34373  	if objc > 1 {
 34374  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 34375  		if p1 == uintptr(0) {
 34376  			return TCL_ERROR
 34377  		}
 34378  		for i = 0; i < objc-1; i++ {
 34379  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 34380  				sqlite3.Xsqlite3_free(tls, p1)
 34381  				p1 = uintptr(0)
 34382  				return TCL_ERROR
 34383  			}
 34384  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 34385  		}
 34386  	}
 34387  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 34388  	return TCL_OK
 34389  }
 34390  
 34391  var p1 uintptr = uintptr(0)
 34392  
 34393  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34394  	var i int32
 34395  
 34396  	sqlite3.Xsqlite3_free(tls, p2)
 34397  	p2 = uintptr(0)
 34398  	if objc > 1 {
 34399  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 34400  		if p2 == uintptr(0) {
 34401  			return TCL_ERROR
 34402  		}
 34403  		for i = 0; i < objc-1; i++ {
 34404  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 34405  				sqlite3.Xsqlite3_free(tls, p2)
 34406  				p2 = uintptr(0)
 34407  				return TCL_ERROR
 34408  			}
 34409  		}
 34410  	}
 34411  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 34412  	return TCL_OK
 34413  }
 34414  
 34415  var p2 uintptr = uintptr(0)
 34416  
 34417  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34418  	bp := tls.Alloc(8)
 34419  	defer tls.Free(8)
 34420  
 34421  	var i int32
 34422  
 34423  	for i = 0; i < n; i++ {
 34424  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 34425  	}
 34426  	sqlite3.Xsqlite3_free(tls, p3)
 34427  	p3 = uintptr(0)
 34428  	if objc > 1 {
 34429  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 34430  		if p3 == uintptr(0) {
 34431  			return TCL_ERROR
 34432  		}
 34433  		for i = 0; i < objc-1; i++ {
 34434  			*(*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)))))
 34435  		}
 34436  	}
 34437  	n = objc - 1
 34438  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 34439  	return TCL_OK
 34440  }
 34441  
 34442  var n int32 = 0
 34443  var p3 uintptr = uintptr(0)
 34444  
 34445  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34446  	bp := tls.Alloc(56)
 34447  	defer tls.Free(56)
 34448  
 34449  	var rc int32
 34450  
 34451  	if objc != 4 {
 34452  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34453  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34454  		return TCL_ERROR
 34455  	}
 34456  
 34457  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34458  		return TCL_ERROR
 34459  	}
 34460  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34461  		return TCL_ERROR
 34462  	}
 34463  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 34464  		return TCL_ERROR
 34465  	}
 34466  
 34467  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 34468  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34469  		return TCL_ERROR
 34470  	}
 34471  	if rc != SQLITE_OK {
 34472  		return TCL_ERROR
 34473  	}
 34474  
 34475  	return TCL_OK
 34476  }
 34477  
 34478  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34479  	bp := tls.Alloc(64)
 34480  	defer tls.Free(64)
 34481  
 34482  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 34483  	var rc int32
 34484  	var zVal uintptr
 34485  	var i int32
 34486  
 34487  	if objc != 4 {
 34488  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34489  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34490  		return TCL_ERROR
 34491  	}
 34492  
 34493  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34494  		return TCL_ERROR
 34495  	}
 34496  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34497  		return TCL_ERROR
 34498  	}
 34499  
 34500  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34501  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 34502  		FzName  uintptr
 34503  		FiUpper uint32
 34504  		FiLower uint32
 34505  	}{})); i++ {
 34506  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 34507  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 34508  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 34509  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 34510  
 34511  			libc.Xmemcpy(tls, bp+48, bp+56, uint64(8))
 34512  			break
 34513  		}
 34514  	}
 34515  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 34516  		FzName  uintptr
 34517  		FiUpper uint32
 34518  		FiLower uint32
 34519  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 34520  		return TCL_ERROR
 34521  	}
 34522  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 34523  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34524  		return TCL_ERROR
 34525  	}
 34526  	if rc != SQLITE_OK {
 34527  		return TCL_ERROR
 34528  	}
 34529  
 34530  	return TCL_OK
 34531  }
 34532  
 34533  var aSpecialFp = [10]struct {
 34534  	FzName  uintptr
 34535  	FiUpper uint32
 34536  	FiLower uint32
 34537  }{
 34538  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 34539  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 34540  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 34541  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 34542  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 34543  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 34544  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 34545  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 34546  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 34547  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 34548  }
 34549  
 34550  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34551  	bp := tls.Alloc(44)
 34552  	defer tls.Free(44)
 34553  
 34554  	var rc int32
 34555  
 34556  	if objc != 3 {
 34557  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34558  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 34559  		return TCL_ERROR
 34560  	}
 34561  
 34562  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34563  		return TCL_ERROR
 34564  	}
 34565  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34566  		return TCL_ERROR
 34567  	}
 34568  
 34569  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 34570  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34571  		return TCL_ERROR
 34572  	}
 34573  	if rc != SQLITE_OK {
 34574  		return TCL_ERROR
 34575  	}
 34576  
 34577  	return TCL_OK
 34578  }
 34579  
 34580  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34581  	bp := tls.Alloc(84)
 34582  	defer tls.Free(84)
 34583  
 34584  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 34585  
 34586  	var value uintptr
 34587  	var rc int32
 34588  	var toFree uintptr = uintptr(0)
 34589  
 34590  	if objc != 5 {
 34591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34592  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 34593  		return TCL_ERROR
 34594  	}
 34595  
 34596  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 34597  		return TCL_ERROR
 34598  	}
 34599  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 34600  		return TCL_ERROR
 34601  	}
 34602  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 34603  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 34604  		return TCL_ERROR
 34605  	}
 34606  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 34607  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 34608  		if toFree == uintptr(0) {
 34609  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 34610  			return TCL_ERROR
 34611  		}
 34612  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 34613  		*(*int8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = int8(0)
 34614  		value = toFree
 34615  	}
 34616  	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))
 34617  	libc.Xfree(tls, toFree)
 34618  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34619  		return TCL_ERROR
 34620  	}
 34621  	if rc != SQLITE_OK {
 34622  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 34623  		return TCL_ERROR
 34624  	}
 34625  
 34626  	return TCL_OK
 34627  }
 34628  
 34629  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34630  	bp := tls.Alloc(84)
 34631  	defer tls.Free(84)
 34632  
 34633  	var value uintptr
 34634  	var toFree uintptr = uintptr(0)
 34635  	var rc int32
 34636  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 34637  
 34638  	var xDel uintptr = func() uintptr {
 34639  		if objc == 6 {
 34640  			return uintptr(0)
 34641  		}
 34642  		return libc.UintptrFromInt32(-1)
 34643  	}()
 34644  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 34645  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 34646  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 34647  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 34648  
 34649  	if objc != 5 && objc != 6 {
 34650  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34651  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 34652  		return TCL_ERROR
 34653  	}
 34654  
 34655  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 34656  		return TCL_ERROR
 34657  	}
 34658  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 34659  		return TCL_ERROR
 34660  	}
 34661  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 34662  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 34663  		return TCL_ERROR
 34664  	}
 34665  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 34666  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 34667  		if toFree == uintptr(0) {
 34668  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 34669  			return TCL_ERROR
 34670  		}
 34671  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 34672  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3))
 34673  		value = toFree
 34674  	}
 34675  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 34676  	libc.Xfree(tls, toFree)
 34677  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34678  		return TCL_ERROR
 34679  	}
 34680  	if rc != SQLITE_OK {
 34681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34682  		return TCL_ERROR
 34683  	}
 34684  
 34685  	return TCL_OK
 34686  }
 34687  
 34688  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34689  	bp := tls.Alloc(284)
 34690  	defer tls.Free(284)
 34691  
 34692  	var value uintptr
 34693  	var rc int32
 34694  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 34695  
 34696  	if objc != 5 && objc != 6 {
 34697  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34698  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 34699  		return TCL_ERROR
 34700  	}
 34701  
 34702  	if objc == 6 {
 34703  		xDestructor = uintptr(0)
 34704  		objv += 8
 34705  	}
 34706  
 34707  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 34708  		return TCL_ERROR
 34709  	}
 34710  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 34711  		return TCL_ERROR
 34712  	}
 34713  
 34714  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 34715  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 34716  		return TCL_ERROR
 34717  	}
 34718  
 34719  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 34720  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+84,
 34721  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 34722  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 34723  		return TCL_ERROR
 34724  	}
 34725  
 34726  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 34727  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34728  		return TCL_ERROR
 34729  	}
 34730  	if rc != SQLITE_OK {
 34731  		return TCL_ERROR
 34732  	}
 34733  
 34734  	return TCL_OK
 34735  }
 34736  
 34737  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34738  	bp := tls.Alloc(48)
 34739  	defer tls.Free(48)
 34740  
 34741  	var z3 uintptr = uintptr(0)
 34742  	var db uintptr = uintptr(0)
 34743  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 34744  
 34745  	if objc != 5 {
 34746  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 34747  		return TCL_ERROR
 34748  	}
 34749  
 34750  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 34751  		return TCL_ERROR
 34752  	}
 34753  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 34754  		return TCL_ERROR
 34755  	}
 34756  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34757  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 34758  		return TCL_ERROR
 34759  	}
 34760  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 34761  
 34762  	if int32(*(*int8)(unsafe.Pointer(z3))) == 'n' {
 34763  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 34764  	} else if int32(*(*int8)(unsafe.Pointer(z3))) == 'o' {
 34765  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 34766  	} else {
 34767  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 34768  		return TCL_ERROR
 34769  	}
 34770  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 34771  
 34772  	return TCL_OK
 34773  }
 34774  
 34775  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34776  	bp := tls.Alloc(72)
 34777  	defer tls.Free(72)
 34778  
 34779  	var zSql uintptr = uintptr(0)
 34780  	var db uintptr = uintptr(0)
 34781  	var rc int32 = SQLITE_OK
 34782  
 34783  	if objc != 4 {
 34784  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 34785  		return TCL_ERROR
 34786  	}
 34787  
 34788  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 34789  		return TCL_ERROR
 34790  	}
 34791  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 34792  		return TCL_ERROR
 34793  	}
 34794  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34795  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34796  
 34797  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 34798  	if rc != SQLITE_OK {
 34799  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 34800  		return TCL_ERROR
 34801  	}
 34802  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 34803  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 34804  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 34805  	}
 34806  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 34807  	if rc != SQLITE_OK {
 34808  		tcl.XTcl_AppendResult(tls, interp,
 34809  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 34810  		return TCL_ERROR
 34811  	}
 34812  
 34813  	return TCL_OK
 34814  }
 34815  
 34816  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34817  	bp := tls.Alloc(112)
 34818  	defer tls.Free(112)
 34819  
 34820  	var eType int32
 34821  	var nData int32
 34822  	var aData uintptr
 34823  	var isTransient int32
 34824  	var isStatic int32
 34825  
 34826  	var i int32
 34827  	var j int32
 34828  	var rc int32
 34829  	var xDel uintptr
 34830  	var z uintptr
 34831  
 34832  	var a uintptr
 34833  
 34834  	var a1 uintptr
 34835  
 34836  	var a2 uintptr
 34837  	var v3 uintptr
 34838  	var a3 uintptr
 34839  	eType = 0
 34840  	nData = 0
 34841  	aData = uintptr(0)
 34842  	isTransient = 0
 34843  	isStatic = 0
 34844  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 34845  
 34846  	if !(aStaticData != 0) {
 34847  		goto __1
 34848  	}
 34849  
 34850  	if !(eStaticType == 3) {
 34851  		goto __2
 34852  	}
 34853  	i = 0
 34854  __3:
 34855  	if !(i < nStaticData) {
 34856  		goto __5
 34857  	}
 34858  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 34859  	goto __4
 34860  __4:
 34861  	i++
 34862  	goto __3
 34863  	goto __5
 34864  __5:
 34865  	;
 34866  __2:
 34867  	;
 34868  	sqlite3.Xsqlite3_free(tls, aStaticData)
 34869  	aStaticData = uintptr(0)
 34870  	nStaticData = 0
 34871  	eStaticType = 0
 34872  __1:
 34873  	;
 34874  	if !(objc == 1) {
 34875  		goto __6
 34876  	}
 34877  	return TCL_OK
 34878  __6:
 34879  	;
 34880  	i = 1
 34881  __7:
 34882  	if !(i < objc && int32(*(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 34883  		goto __9
 34884  	}
 34885  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 34886  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 34887  		goto __10
 34888  	}
 34889  	isTransient = 1
 34890  	xDel = libc.UintptrFromInt32(-1)
 34891  	goto __11
 34892  __10:
 34893  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 34894  		goto __12
 34895  	}
 34896  	isStatic = 1
 34897  	xDel = uintptr(0)
 34898  	goto __13
 34899  __12:
 34900  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 34901  		goto __14
 34902  	}
 34903  	eType = 0
 34904  	goto __15
 34905  __14:
 34906  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 34907  		goto __16
 34908  	}
 34909  	eType = 1
 34910  	goto __17
 34911  __16:
 34912  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 34913  		goto __18
 34914  	}
 34915  	eType = 2
 34916  	goto __19
 34917  __18:
 34918  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 34919  		goto __20
 34920  	}
 34921  	eType = 3
 34922  	goto __21
 34923  __20:
 34924  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 34925  		goto __22
 34926  	}
 34927  	goto __9
 34928  	goto __23
 34929  __22:
 34930  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 34931  	return TCL_ERROR
 34932  __23:
 34933  	;
 34934  __21:
 34935  	;
 34936  __19:
 34937  	;
 34938  __17:
 34939  	;
 34940  __15:
 34941  	;
 34942  __13:
 34943  	;
 34944  __11:
 34945  	;
 34946  	goto __8
 34947  __8:
 34948  	i++
 34949  	goto __7
 34950  	goto __9
 34951  __9:
 34952  	;
 34953  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 34954  		goto __24
 34955  	}
 34956  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 34957  		uintptr(0)))
 34958  	return TCL_ERROR
 34959  __24:
 34960  	;
 34961  	if !(isStatic != 0 && isTransient != 0) {
 34962  		goto __25
 34963  	}
 34964  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 34965  		uintptr(0)))
 34966  	return TCL_ERROR
 34967  __25:
 34968  	;
 34969  	if !(objc-i < 2) {
 34970  		goto __26
 34971  	}
 34972  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 34973  	return TCL_ERROR
 34974  __26:
 34975  	;
 34976  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 34977  		goto __27
 34978  	}
 34979  	return TCL_ERROR
 34980  __27:
 34981  	;
 34982  	i++
 34983  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 34984  		goto __28
 34985  	}
 34986  	return TCL_ERROR
 34987  __28:
 34988  	;
 34989  	i++
 34990  	nData = objc - i
 34991  	switch eType + 4*libc.Bool32(nData <= 0) {
 34992  	case 0:
 34993  		goto __30
 34994  	case 1:
 34995  		goto __31
 34996  	case 2:
 34997  		goto __32
 34998  	case 3:
 34999  		goto __33
 35000  	case 4:
 35001  		goto __34
 35002  	}
 35003  	goto __29
 35004  __30:
 35005  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 35006  	if !(a == uintptr(0)) {
 35007  		goto __35
 35008  	}
 35009  	rc = SQLITE_NOMEM
 35010  	goto carray_bind_done
 35011  __35:
 35012  	;
 35013  	j = 0
 35014  __36:
 35015  	if !(j < nData) {
 35016  		goto __38
 35017  	}
 35018  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 35019  		goto __39
 35020  	}
 35021  	sqlite3.Xsqlite3_free(tls, a)
 35022  	return TCL_ERROR
 35023  __39:
 35024  	;
 35025  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 35026  	goto __37
 35027  __37:
 35028  	j++
 35029  	goto __36
 35030  	goto __38
 35031  __38:
 35032  	;
 35033  	aData = a
 35034  	goto __29
 35035  
 35036  __31:
 35037  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 35038  	if !(a1 == uintptr(0)) {
 35039  		goto __40
 35040  	}
 35041  	rc = SQLITE_NOMEM
 35042  	goto carray_bind_done
 35043  __40:
 35044  	;
 35045  	j = 0
 35046  __41:
 35047  	if !(j < nData) {
 35048  		goto __43
 35049  	}
 35050  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 35051  		goto __44
 35052  	}
 35053  	sqlite3.Xsqlite3_free(tls, a1)
 35054  	return TCL_ERROR
 35055  __44:
 35056  	;
 35057  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 35058  	goto __42
 35059  __42:
 35060  	j++
 35061  	goto __41
 35062  	goto __43
 35063  __43:
 35064  	;
 35065  	aData = a1
 35066  	goto __29
 35067  
 35068  __32:
 35069  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 35070  	if !(a2 == uintptr(0)) {
 35071  		goto __45
 35072  	}
 35073  	rc = SQLITE_NOMEM
 35074  	goto carray_bind_done
 35075  __45:
 35076  	;
 35077  	j = 0
 35078  __46:
 35079  	if !(j < nData) {
 35080  		goto __48
 35081  	}
 35082  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 35083  		goto __49
 35084  	}
 35085  	sqlite3.Xsqlite3_free(tls, a2)
 35086  	return TCL_ERROR
 35087  __49:
 35088  	;
 35089  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 35090  	goto __47
 35091  __47:
 35092  	j++
 35093  	goto __46
 35094  	goto __48
 35095  __48:
 35096  	;
 35097  	aData = a2
 35098  	goto __29
 35099  
 35100  __33:
 35101  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 35102  	if !(a3 == uintptr(0)) {
 35103  		goto __50
 35104  	}
 35105  	rc = SQLITE_NOMEM
 35106  	goto carray_bind_done
 35107  __50:
 35108  	;
 35109  	j = 0
 35110  __51:
 35111  	if !(j < nData) {
 35112  		goto __53
 35113  	}
 35114  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 35115  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 35116  	goto __52
 35117  __52:
 35118  	j++
 35119  	goto __51
 35120  	goto __53
 35121  __53:
 35122  	;
 35123  	aData = a3
 35124  	goto __29
 35125  
 35126  __34:
 35127  	aData = ts + 584
 35128  	xDel = uintptr(0)
 35129  	isTransient = 0
 35130  	isStatic = 0
 35131  	goto __29
 35132  
 35133  __29:
 35134  	;
 35135  	if !(isStatic != 0) {
 35136  		goto __54
 35137  	}
 35138  	aStaticData = aData
 35139  	nStaticData = nData
 35140  	eStaticType = eType
 35141  __54:
 35142  	;
 35143  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 35144  	if !(isTransient != 0) {
 35145  		goto __55
 35146  	}
 35147  	if !(eType == 3) {
 35148  		goto __56
 35149  	}
 35150  	i = 0
 35151  __57:
 35152  	if !(i < nData) {
 35153  		goto __59
 35154  	}
 35155  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 35156  	goto __58
 35157  __58:
 35158  	i++
 35159  	goto __57
 35160  	goto __59
 35161  __59:
 35162  	;
 35163  __56:
 35164  	;
 35165  	sqlite3.Xsqlite3_free(tls, aData)
 35166  __55:
 35167  	;
 35168  carray_bind_done:
 35169  	if !(rc != 0) {
 35170  		goto __60
 35171  	}
 35172  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 35173  	return TCL_ERROR
 35174  __60:
 35175  	;
 35176  	return TCL_OK
 35177  }
 35178  
 35179  var aStaticData uintptr = uintptr(0)
 35180  var nStaticData int32 = 0
 35181  var eStaticType int32 = 0
 35182  
 35183  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35184  	bp := tls.Alloc(8)
 35185  	defer tls.Free(8)
 35186  
 35187  	if objc != 2 {
 35188  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35189  		return TCL_ERROR
 35190  	}
 35191  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35192  		return TCL_ERROR
 35193  	}
 35194  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35195  	return TCL_OK
 35196  }
 35197  
 35198  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35199  	bp := tls.Alloc(12)
 35200  	defer tls.Free(12)
 35201  
 35202  	if objc != 3 {
 35203  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 35204  		return TCL_ERROR
 35205  	}
 35206  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35207  		return TCL_ERROR
 35208  	}
 35209  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35210  		return TCL_ERROR
 35211  	}
 35212  	tcl.XTcl_SetObjResult(tls, interp,
 35213  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 35214  	return TCL_OK
 35215  }
 35216  
 35217  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35218  	bp := tls.Alloc(8)
 35219  	defer tls.Free(8)
 35220  
 35221  	if objc != 3 {
 35222  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 35223  		return TCL_ERROR
 35224  	}
 35225  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35226  		return TCL_ERROR
 35227  	}
 35228  	tcl.XTcl_SetObjResult(tls, interp,
 35229  		tcl.XTcl_NewIntObj(tls,
 35230  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 35231  	return TCL_OK
 35232  }
 35233  
 35234  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35235  	bp := tls.Alloc(8)
 35236  	defer tls.Free(8)
 35237  
 35238  	if objc != 2 {
 35239  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35240  		return TCL_ERROR
 35241  	}
 35242  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35243  		return TCL_ERROR
 35244  	}
 35245  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35246  	return TCL_OK
 35247  }
 35248  
 35249  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35250  	bp := tls.Alloc(4)
 35251  	defer tls.Free(4)
 35252  
 35253  	if objc != 2 {
 35254  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 35255  		return TCL_ERROR
 35256  	}
 35257  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 35258  		return TCL_ERROR
 35259  	}
 35260  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 35261  	return TCL_OK
 35262  }
 35263  
 35264  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35265  	bp := tls.Alloc(56)
 35266  	defer tls.Free(56)
 35267  
 35268  	var rc int32
 35269  
 35270  	if objc != 2 {
 35271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35272  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35273  		return TCL_ERROR
 35274  	}
 35275  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35276  		return TCL_ERROR
 35277  	}
 35278  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35279  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35280  	return TCL_OK
 35281  }
 35282  
 35283  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35284  	bp := tls.Alloc(56)
 35285  	defer tls.Free(56)
 35286  
 35287  	var rc int32
 35288  
 35289  	if objc != 2 {
 35290  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35291  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35292  		return TCL_ERROR
 35293  	}
 35294  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35295  		return TCL_ERROR
 35296  	}
 35297  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35298  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35299  	return TCL_OK
 35300  }
 35301  
 35302  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35303  	bp := tls.Alloc(40)
 35304  	defer tls.Free(40)
 35305  
 35306  	var zErr uintptr
 35307  
 35308  	if objc != 2 {
 35309  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35310  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35311  		return TCL_ERROR
 35312  	}
 35313  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35314  		return TCL_ERROR
 35315  	}
 35316  
 35317  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35318  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 35319  	return TCL_OK
 35320  }
 35321  
 35322  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35323  	bp := tls.Alloc(40)
 35324  	defer tls.Free(40)
 35325  
 35326  	var iByteOffset int32
 35327  
 35328  	if objc != 2 {
 35329  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35330  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35331  		return TCL_ERROR
 35332  	}
 35333  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35334  		return TCL_ERROR
 35335  	}
 35336  
 35337  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35338  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 35339  	return TCL_OK
 35340  }
 35341  
 35342  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35343  	bp := tls.Alloc(40)
 35344  	defer tls.Free(40)
 35345  
 35346  	var zErr uintptr
 35347  	var z uintptr
 35348  	var bytes int32 = 0
 35349  
 35350  	if objc != 2 {
 35351  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35352  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35353  		return TCL_ERROR
 35354  	}
 35355  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35356  		return TCL_ERROR
 35357  	}
 35358  
 35359  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35360  	if zErr != 0 {
 35361  		z = zErr
 35362  		for bytes = 0; *(*int8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 35363  		}
 35364  	}
 35365  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 35366  	return TCL_OK
 35367  }
 35368  
 35369  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35370  	bp := tls.Alloc(162)
 35371  	defer tls.Free(162)
 35372  
 35373  	var zSql uintptr
 35374  
 35375  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35376  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35377  
 35378  	var rc int32
 35379  
 35380  	if objc != 5 && objc != 4 {
 35381  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35382  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35383  		return TCL_ERROR
 35384  	}
 35385  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35386  		return TCL_ERROR
 35387  	}
 35388  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35389  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35390  		return TCL_ERROR
 35391  	}
 35392  
 35393  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 35394  		if objc >= 5 {
 35395  			return bp + 104
 35396  		}
 35397  		return uintptr(0)
 35398  	}())
 35399  	tcl.XTcl_ResetResult(tls, interp)
 35400  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35401  		return TCL_ERROR
 35402  	}
 35403  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 35404  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35405  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 35406  		}
 35407  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 35408  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 35409  		}
 35410  		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)
 35411  	}
 35412  	if rc != SQLITE_OK {
 35413  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35414  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35415  		return TCL_ERROR
 35416  	}
 35417  
 35418  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 35419  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 35420  			return TCL_ERROR
 35421  		}
 35422  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35423  	}
 35424  	return TCL_OK
 35425  }
 35426  
 35427  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35428  	bp := tls.Alloc(162)
 35429  	defer tls.Free(162)
 35430  
 35431  	var zSql uintptr
 35432  	var zCopy uintptr = uintptr(0)
 35433  
 35434  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35435  	var pzTail uintptr
 35436  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35437  
 35438  	var rc int32
 35439  
 35440  	if objc != 5 && objc != 4 {
 35441  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35442  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 35443  		return TCL_ERROR
 35444  	}
 35445  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35446  		return TCL_ERROR
 35447  	}
 35448  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35449  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35450  		return TCL_ERROR
 35451  	}
 35452  
 35453  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35454  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35455  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35456  	} else {
 35457  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 35458  		zCopy = libc.Xmalloc(tls, uint64(n))
 35459  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 35460  	}
 35461  	if objc >= 5 {
 35462  		pzTail = bp + 96
 35463  	} else {
 35464  		pzTail = uintptr(0)
 35465  	}
 35466  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 35467  	if objc >= 5 {
 35468  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 35469  	}
 35470  	libc.Xfree(tls, zCopy)
 35471  
 35472  	tcl.XTcl_ResetResult(tls, interp)
 35473  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35474  		return TCL_ERROR
 35475  	}
 35476  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 35477  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35478  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 35479  		}
 35480  		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)
 35481  	}
 35482  	if rc != SQLITE_OK {
 35483  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35485  		return TCL_ERROR
 35486  	}
 35487  
 35488  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 35489  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 35490  			return TCL_ERROR
 35491  		}
 35492  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35493  	}
 35494  	return TCL_OK
 35495  }
 35496  
 35497  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35498  	bp := tls.Alloc(162)
 35499  	defer tls.Free(162)
 35500  
 35501  	var zSql uintptr
 35502  	var zCopy uintptr = uintptr(0)
 35503  
 35504  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35505  	var pzTail uintptr
 35506  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35507  
 35508  	var rc int32
 35509  
 35510  	if objc != 6 && objc != 5 {
 35511  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35512  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 35513  		return TCL_ERROR
 35514  	}
 35515  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35516  		return TCL_ERROR
 35517  	}
 35518  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35519  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35520  		return TCL_ERROR
 35521  	}
 35522  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 35523  		return TCL_ERROR
 35524  	}
 35525  
 35526  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35527  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35528  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35529  	} else {
 35530  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 35531  		zCopy = libc.Xmalloc(tls, uint64(n))
 35532  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 35533  	}
 35534  	if objc >= 6 {
 35535  		pzTail = bp + 96
 35536  	} else {
 35537  		pzTail = uintptr(0)
 35538  	}
 35539  	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)
 35540  	libc.Xfree(tls, zCopy)
 35541  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 35542  
 35543  	tcl.XTcl_ResetResult(tls, interp)
 35544  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35545  		return TCL_ERROR
 35546  	}
 35547  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 35548  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35549  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 35550  		}
 35551  		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)
 35552  	}
 35553  	if rc != SQLITE_OK {
 35554  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35555  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35556  		return TCL_ERROR
 35557  	}
 35558  
 35559  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 35560  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 35561  			return TCL_ERROR
 35562  		}
 35563  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35564  	}
 35565  	return TCL_OK
 35566  }
 35567  
 35568  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35569  	bp := tls.Alloc(146)
 35570  	defer tls.Free(146)
 35571  
 35572  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 35573  
 35574  	var rc int32
 35575  
 35576  	if objc != 2 {
 35577  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35578  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 35579  		return TCL_ERROR
 35580  	}
 35581  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35582  		return TCL_ERROR
 35583  	}
 35584  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 35585  
 35586  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35587  		return TCL_ERROR
 35588  	}
 35589  	if rc != SQLITE_OK {
 35590  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 35591  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35592  		return TCL_ERROR
 35593  	}
 35594  
 35595  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 35596  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 35597  			return TCL_ERROR
 35598  		}
 35599  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 35600  	}
 35601  	return TCL_OK
 35602  }
 35603  
 35604  var zSql = *(*[10]int8)(unsafe.Pointer(ts + 17138))
 35605  
 35606  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35607  	bp := tls.Alloc(130)
 35608  	defer tls.Free(130)
 35609  
 35610  	var zSql uintptr
 35611  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 35612  	var pTail uintptr = uintptr(0)
 35613  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 35614  
 35615  	var rc int32
 35616  
 35617  	if objc != 5 && objc != 4 {
 35618  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35619  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35620  		return TCL_ERROR
 35621  	}
 35622  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35623  		return TCL_ERROR
 35624  	}
 35625  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 35626  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 35627  		return TCL_ERROR
 35628  	}
 35629  
 35630  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 35631  		if objc >= 5 {
 35632  			return bp + 72
 35633  		}
 35634  		return uintptr(0)
 35635  	}())
 35636  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 35637  		return TCL_ERROR
 35638  	}
 35639  	if rc != 0 {
 35640  		return TCL_ERROR
 35641  	}
 35642  
 35643  	if objc >= 5 {
 35644  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 35645  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 35646  		} else {
 35647  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 35648  		}
 35649  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 35650  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 35651  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 35652  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35653  			var _objPtr uintptr = pTail
 35654  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35655  				tcl.XTclFreeObj(tls, _objPtr)
 35656  			}
 35657  		}
 35658  	}
 35659  
 35660  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 35661  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 35662  			return TCL_ERROR
 35663  		}
 35664  	}
 35665  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 35666  	return TCL_OK
 35667  }
 35668  
 35669  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35670  	bp := tls.Alloc(130)
 35671  	defer tls.Free(130)
 35672  
 35673  	var zSql uintptr
 35674  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 35675  	var pTail uintptr = uintptr(0)
 35676  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 35677  
 35678  	var rc int32
 35679  
 35680  	if objc != 5 && objc != 4 {
 35681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35682  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35683  		return TCL_ERROR
 35684  	}
 35685  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35686  		return TCL_ERROR
 35687  	}
 35688  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 35689  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 35690  		return TCL_ERROR
 35691  	}
 35692  
 35693  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 35694  		if objc >= 5 {
 35695  			return bp + 72
 35696  		}
 35697  		return uintptr(0)
 35698  	}())
 35699  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 35700  		return TCL_ERROR
 35701  	}
 35702  	if rc != 0 {
 35703  		return TCL_ERROR
 35704  	}
 35705  
 35706  	if objc >= 5 {
 35707  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 35708  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 35709  		} else {
 35710  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 35711  		}
 35712  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 35713  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 35714  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 35715  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35716  			var _objPtr uintptr = pTail
 35717  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35718  				tcl.XTclFreeObj(tls, _objPtr)
 35719  			}
 35720  		}
 35721  	}
 35722  
 35723  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 35724  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 35725  			return TCL_ERROR
 35726  		}
 35727  	}
 35728  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 35729  	return TCL_OK
 35730  }
 35731  
 35732  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35733  	bp := tls.Alloc(156)
 35734  	defer tls.Free(156)
 35735  
 35736  	var zFilename uintptr
 35737  
 35738  	if objc != 3 && objc != 2 && objc != 1 {
 35739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35740  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 35741  		return TCL_ERROR
 35742  	}
 35743  
 35744  	if objc > 1 {
 35745  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35746  	} else {
 35747  		zFilename = uintptr(0)
 35748  	}
 35749  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 35750  
 35751  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 35752  		return TCL_ERROR
 35753  	}
 35754  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 35755  	return TCL_OK
 35756  }
 35757  
 35758  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35759  	bp := tls.Alloc(484)
 35760  	defer tls.Free(484)
 35761  
 35762  	var zFilename uintptr
 35763  	var zVfs uintptr
 35764  	var flags int32 = 0
 35765  
 35766  	var rc int32
 35767  
 35768  	var i int32
 35769  
 35770  	if objc != 4 {
 35771  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 35772  		return TCL_ERROR
 35773  	}
 35774  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35775  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35776  	if int32(*(*int8)(unsafe.Pointer(zVfs))) == 0x00 {
 35777  		zVfs = uintptr(0)
 35778  	}
 35779  
 35780  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 35781  	if rc != TCL_OK {
 35782  		return rc
 35783  	}
 35784  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 35785  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 35786  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 35787  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 35788  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 35789  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 35790  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 35791  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 35792  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 35793  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 35794  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 35795  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 35796  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 35797  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 35798  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 35799  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 35800  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 35801  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 35802  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 35803  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 35804  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 35805  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 35806  			{},
 35807  		}
 35808  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 35809  			ts+17631, 0, bp+368)
 35810  		if rc != TCL_OK {
 35811  			return rc
 35812  		}
 35813  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 35814  	}
 35815  
 35816  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 35817  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 35818  		return TCL_ERROR
 35819  	}
 35820  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 35821  	return TCL_OK
 35822  }
 35823  
 35824  type OpenFlag = struct {
 35825  	FzFlag       uintptr
 35826  	Fflag        int32
 35827  	F__ccgo_pad1 [4]byte
 35828  }
 35829  
 35830  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35831  	bp := tls.Alloc(156)
 35832  	defer tls.Free(156)
 35833  
 35834  	var zFilename uintptr
 35835  
 35836  	if objc != 3 {
 35837  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35838  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 35839  		return TCL_ERROR
 35840  	}
 35841  
 35842  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 35843  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 35844  
 35845  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 35846  		return TCL_ERROR
 35847  	}
 35848  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 35849  	return TCL_OK
 35850  }
 35851  
 35852  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35853  	var zBuf uintptr
 35854  
 35855  	if objc != 2 {
 35856  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 35857  		return TCL_ERROR
 35858  	}
 35859  
 35860  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 35861  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 35862  	return TCL_OK
 35863  }
 35864  
 35865  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35866  	var zSql uintptr
 35867  	var zNorm uintptr
 35868  
 35869  	if objc != 2 {
 35870  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 35871  		return TCL_ERROR
 35872  	}
 35873  
 35874  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35875  	zNorm = sqlite3_normalize(tls, zSql)
 35876  	if zNorm != 0 {
 35877  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 35878  		sqlite3.Xsqlite3_free(tls, zNorm)
 35879  	}
 35880  	return TCL_OK
 35881  }
 35882  
 35883  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35884  	bp := tls.Alloc(40)
 35885  	defer tls.Free(40)
 35886  
 35887  	var rc int32
 35888  
 35889  	if objc != 2 {
 35890  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35891  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 35892  		return TCL_ERROR
 35893  	}
 35894  
 35895  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35896  		return TCL_ERROR
 35897  	}
 35898  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35899  
 35900  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 35901  	return TCL_OK
 35902  }
 35903  
 35904  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35905  	bp := tls.Alloc(8)
 35906  	defer tls.Free(8)
 35907  
 35908  	if objc != 2 {
 35909  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35910  		return TCL_ERROR
 35911  	}
 35912  
 35913  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35914  		return TCL_ERROR
 35915  	}
 35916  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 35917  	return TCL_OK
 35918  }
 35919  
 35920  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35921  	bp := tls.Alloc(8)
 35922  	defer tls.Free(8)
 35923  
 35924  	var z uintptr
 35925  
 35926  	if objc != 2 {
 35927  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35928  		return TCL_ERROR
 35929  	}
 35930  
 35931  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35932  		return TCL_ERROR
 35933  	}
 35934  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 35935  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 35936  	sqlite3.Xsqlite3_free(tls, z)
 35937  	return TCL_OK
 35938  }
 35939  
 35940  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35941  	bp := tls.Alloc(40)
 35942  	defer tls.Free(40)
 35943  
 35944  	if objc != 2 {
 35945  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35946  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 35947  		return TCL_ERROR
 35948  	}
 35949  
 35950  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35951  		return TCL_ERROR
 35952  	}
 35953  
 35954  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 35955  	return TCL_OK
 35956  }
 35957  
 35958  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35959  	bp := tls.Alloc(44)
 35960  	defer tls.Free(44)
 35961  
 35962  	var tp int32
 35963  
 35964  	if objc != 3 {
 35965  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35966  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 35967  		return TCL_ERROR
 35968  	}
 35969  
 35970  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35971  		return TCL_ERROR
 35972  	}
 35973  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35974  		return TCL_ERROR
 35975  	}
 35976  
 35977  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 35978  	switch tp {
 35979  	case SQLITE_INTEGER:
 35980  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 35981  		break
 35982  	case SQLITE_NULL:
 35983  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 35984  		break
 35985  	case SQLITE_FLOAT:
 35986  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 35987  		break
 35988  	case SQLITE_TEXT:
 35989  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 35990  		break
 35991  	case SQLITE_BLOB:
 35992  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 35993  		break
 35994  	default:
 35995  	}
 35996  
 35997  	return TCL_OK
 35998  }
 35999  
 36000  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36001  	bp := tls.Alloc(44)
 36002  	defer tls.Free(44)
 36003  
 36004  	var iVal i64
 36005  
 36006  	if objc != 3 {
 36007  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36008  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36009  		return TCL_ERROR
 36010  	}
 36011  
 36012  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36013  		return TCL_ERROR
 36014  	}
 36015  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36016  		return TCL_ERROR
 36017  	}
 36018  
 36019  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36020  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 36021  	return TCL_OK
 36022  }
 36023  
 36024  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36025  	bp := tls.Alloc(44)
 36026  	defer tls.Free(44)
 36027  
 36028  	var len int32
 36029  	var pBlob uintptr
 36030  
 36031  	if objc != 3 {
 36032  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36033  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36034  		return TCL_ERROR
 36035  	}
 36036  
 36037  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36038  		return TCL_ERROR
 36039  	}
 36040  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36041  		return TCL_ERROR
 36042  	}
 36043  
 36044  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36045  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36046  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 36047  	return TCL_OK
 36048  }
 36049  
 36050  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36051  	bp := tls.Alloc(44)
 36052  	defer tls.Free(44)
 36053  
 36054  	var rVal float64
 36055  
 36056  	if objc != 3 {
 36057  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36058  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36059  		return TCL_ERROR
 36060  	}
 36061  
 36062  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36063  		return TCL_ERROR
 36064  	}
 36065  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36066  		return TCL_ERROR
 36067  	}
 36068  
 36069  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36070  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 36071  	return TCL_OK
 36072  }
 36073  
 36074  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36075  	bp := tls.Alloc(40)
 36076  	defer tls.Free(40)
 36077  
 36078  	if objc != 2 {
 36079  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36080  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36081  		return TCL_ERROR
 36082  	}
 36083  
 36084  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36085  		return TCL_ERROR
 36086  	}
 36087  
 36088  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36089  	return TCL_OK
 36090  }
 36091  
 36092  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36093  	bp := tls.Alloc(44)
 36094  	defer tls.Free(44)
 36095  
 36096  	var xFunc uintptr
 36097  	var zRet uintptr
 36098  
 36099  	xFunc = clientData
 36100  	if objc != 3 {
 36101  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36102  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36103  		return TCL_ERROR
 36104  	}
 36105  
 36106  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36107  		return TCL_ERROR
 36108  	}
 36109  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36110  		return TCL_ERROR
 36111  	}
 36112  	zRet = (*struct {
 36113  		f func(*libc.TLS, uintptr, int32) uintptr
 36114  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36115  	if zRet != 0 {
 36116  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 36117  	}
 36118  	return TCL_OK
 36119  }
 36120  
 36121  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36122  	var rc int32
 36123  	if objc != 1 {
 36124  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36125  		return TCL_ERROR
 36126  	}
 36127  	rc = sqlite3.Xsqlite3_global_recover(tls)
 36128  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36129  	return TCL_OK
 36130  }
 36131  
 36132  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36133  	bp := tls.Alloc(44)
 36134  	defer tls.Free(44)
 36135  
 36136  	var pRet uintptr
 36137  	var zName16 uintptr
 36138  	var xFunc uintptr
 36139  
 36140  	xFunc = clientData
 36141  	if objc != 3 {
 36142  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36143  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36144  		return TCL_ERROR
 36145  	}
 36146  
 36147  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36148  		return TCL_ERROR
 36149  	}
 36150  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36151  		return TCL_ERROR
 36152  	}
 36153  
 36154  	zName16 = (*struct {
 36155  		f func(*libc.TLS, uintptr, int32) uintptr
 36156  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36157  	if zName16 != 0 {
 36158  		var n int32
 36159  		var z uintptr = zName16
 36160  		for n = 0; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 36161  		}
 36162  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 36163  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 36164  	}
 36165  
 36166  	return TCL_OK
 36167  }
 36168  
 36169  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36170  	bp := tls.Alloc(44)
 36171  	defer tls.Free(44)
 36172  
 36173  	var xFunc uintptr
 36174  
 36175  	xFunc = clientData
 36176  	if objc != 3 {
 36177  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36178  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36179  		return TCL_ERROR
 36180  	}
 36181  
 36182  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36183  		return TCL_ERROR
 36184  	}
 36185  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36186  		return TCL_ERROR
 36187  	}
 36188  
 36189  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 36190  		f func(*libc.TLS, uintptr, int32) int32
 36191  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 36192  	return TCL_OK
 36193  }
 36194  
 36195  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36196  	bp := tls.Alloc(40)
 36197  	defer tls.Free(40)
 36198  
 36199  	if argc != 2 {
 36200  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 36201  		return TCL_ERROR
 36202  	}
 36203  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36204  		return TCL_ERROR
 36205  	}
 36206  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36207  	return TCL_OK
 36208  }
 36209  
 36210  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36211  	bp := tls.Alloc(40)
 36212  	defer tls.Free(40)
 36213  
 36214  	var rc int32
 36215  
 36216  	if argc != 3 {
 36217  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36218  			ts+17678, 0))
 36219  		return TCL_ERROR
 36220  	}
 36221  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36222  		return TCL_ERROR
 36223  	}
 36224  	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))
 36225  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36226  	return TCL_OK
 36227  }
 36228  
 36229  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36230  	bp := tls.Alloc(40)
 36231  	defer tls.Free(40)
 36232  
 36233  	var rc int32
 36234  
 36235  	if argc != 3 {
 36236  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36237  			ts+17678, 0))
 36238  		return TCL_ERROR
 36239  	}
 36240  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36241  		return TCL_ERROR
 36242  	}
 36243  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 36244  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36245  	return TCL_OK
 36246  }
 36247  
 36248  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36249  	bp := tls.Alloc(94)
 36250  	defer tls.Free(94)
 36251  
 36252  	if argc != 2 {
 36253  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36254  			ts+15001, 0))
 36255  		return TCL_ERROR
 36256  	}
 36257  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 36258  		return TCL_ERROR
 36259  	}
 36260  	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)))))
 36261  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 36262  	return TCL_OK
 36263  }
 36264  
 36265  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36266  	bp := tls.Alloc(60)
 36267  	defer tls.Free(60)
 36268  
 36269  	var rc int32
 36270  
 36271  	if argc != 3 {
 36272  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36273  			ts+15001, 0))
 36274  		return TCL_ERROR
 36275  	}
 36276  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 36277  		return TCL_ERROR
 36278  	}
 36279  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 36280  		return TCL_ERROR
 36281  	}
 36282  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 36283  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36284  	return TCL_OK
 36285  }
 36286  
 36287  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36288  	var pVar uintptr
 36289  	if objc != 2 {
 36290  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 36291  		return TCL_ERROR
 36292  	}
 36293  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 36294  	if pVar == uintptr(0) {
 36295  		return TCL_ERROR
 36296  	}
 36297  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 36298  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 36299  	}
 36300  	return TCL_OK
 36301  }
 36302  
 36303  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36304  	bp := tls.Alloc(4)
 36305  	defer tls.Free(4)
 36306  
 36307  	var amt int32
 36308  	if objc != 1 && objc != 2 {
 36309  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36310  		return TCL_ERROR
 36311  	}
 36312  	if objc == 2 {
 36313  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36314  			return TCL_ERROR
 36315  		}
 36316  	} else {
 36317  		*(*int32)(unsafe.Pointer(bp)) = -1
 36318  	}
 36319  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 36320  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 36321  	return TCL_OK
 36322  }
 36323  
 36324  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36325  	bp := tls.Alloc(8)
 36326  	defer tls.Free(8)
 36327  
 36328  	var rc int32
 36329  	if objc != 2 {
 36330  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36331  		return TCL_ERROR
 36332  	}
 36333  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36334  		return TCL_ERROR
 36335  	}
 36336  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36337  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36338  	return TCL_OK
 36339  }
 36340  
 36341  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36342  	bp := tls.Alloc(8)
 36343  	defer tls.Free(8)
 36344  
 36345  	var rc int32
 36346  	if objc != 2 {
 36347  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36348  		return TCL_ERROR
 36349  	}
 36350  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36351  		return TCL_ERROR
 36352  	}
 36353  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36354  	if rc != 0 {
 36355  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 36356  		return TCL_ERROR
 36357  	}
 36358  
 36359  	tcl.XTcl_ResetResult(tls, interp)
 36360  	return TCL_OK
 36361  }
 36362  
 36363  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36364  	bp := tls.Alloc(8)
 36365  	defer tls.Free(8)
 36366  
 36367  	var iErrno int32
 36368  	if objc != 2 {
 36369  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36370  		return TCL_ERROR
 36371  	}
 36372  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36373  		return TCL_ERROR
 36374  	}
 36375  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36376  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 36377  	return TCL_OK
 36378  }
 36379  
 36380  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36381  	bp := tls.Alloc(24)
 36382  	defer tls.Free(24)
 36383  
 36384  	var zDbName uintptr
 36385  	if objc != 3 {
 36386  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36387  		return TCL_ERROR
 36388  	}
 36389  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 36390  		return TCL_ERROR
 36391  	}
 36392  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36393  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 36394  	return TCL_OK
 36395  }
 36396  
 36397  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36398  	bp := tls.Alloc(8)
 36399  	defer tls.Free(8)
 36400  
 36401  	var zDbName uintptr
 36402  	if objc != 3 {
 36403  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36404  		return TCL_ERROR
 36405  	}
 36406  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36407  		return TCL_ERROR
 36408  	}
 36409  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36410  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 36411  	return TCL_OK
 36412  }
 36413  
 36414  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36415  	bp := tls.Alloc(8)
 36416  	defer tls.Free(8)
 36417  
 36418  	var amt sqlite3_int64
 36419  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36420  	if objc != 1 && objc != 2 {
 36421  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36422  		return TCL_ERROR
 36423  	}
 36424  	if objc == 2 {
 36425  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36426  			return TCL_ERROR
 36427  		}
 36428  	}
 36429  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36430  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36431  	return TCL_OK
 36432  }
 36433  
 36434  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36435  	bp := tls.Alloc(8)
 36436  	defer tls.Free(8)
 36437  
 36438  	var amt sqlite3_int64
 36439  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36440  	if objc != 1 && objc != 2 {
 36441  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36442  		return TCL_ERROR
 36443  	}
 36444  	if objc == 2 {
 36445  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36446  			return TCL_ERROR
 36447  		}
 36448  	}
 36449  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36450  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36451  	return TCL_OK
 36452  }
 36453  
 36454  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36455  	sqlite3.Xsqlite3_thread_cleanup(tls)
 36456  	return TCL_OK
 36457  }
 36458  
 36459  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36460  	bp := tls.Alloc(40)
 36461  	defer tls.Free(40)
 36462  
 36463  	var i int32
 36464  	var v int32
 36465  	var a uintptr
 36466  	var pResult uintptr
 36467  
 36468  	if objc != 2 {
 36469  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36470  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36471  		return TCL_ERROR
 36472  	}
 36473  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36474  		return TCL_ERROR
 36475  	}
 36476  	pResult = tcl.XTcl_NewObj(tls)
 36477  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 36478  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 36479  			v = -1
 36480  		} else {
 36481  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 36482  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 36483  			v = *(*int32)(unsafe.Pointer(a))
 36484  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 36485  		}
 36486  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 36487  	}
 36488  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 36489  	return TCL_OK
 36490  }
 36491  
 36492  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36493  	var pTestObj uintptr
 36494  	var working int32 = 0
 36495  
 36496  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 36497  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 36498  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36499  		var _objPtr uintptr = pTestObj
 36500  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36501  			tcl.XTclFreeObj(tls, _objPtr)
 36502  		}
 36503  	}
 36504  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 36505  	return TCL_OK
 36506  }
 36507  
 36508  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36509  	bp := tls.Alloc(496)
 36510  	defer tls.Free(496)
 36511  
 36512  	var i int32
 36513  	var pMain uintptr
 36514  
 36515  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 36516  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 36517  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 36518  
 36519  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36520  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 36521  
 36522  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 36523  
 36524  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 36525  
 36526  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 36527  
 36528  	if pMain != 0 {
 36529  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 36530  
 36531  	}
 36532  
 36533  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 36534  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36535  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 36536  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 36537  
 36538  		}
 36539  	}
 36540  
 36541  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 36542  
 36543  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 36544  
 36545  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 36546  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 36547  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 36548  
 36549  		}
 36550  	}
 36551  
 36552  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 36553  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 36554  
 36555  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 36556  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 36557  
 36558  	return TCL_OK
 36559  }
 36560  
 36561  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36562  	bp := tls.Alloc(168)
 36563  	defer tls.Free(168)
 36564  
 36565  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 36566  
 36567  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36568  		return TCL_ERROR
 36569  	}
 36570  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 36571  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36572  		return TCL_ERROR
 36573  	}
 36574  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 36575  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36576  		return TCL_ERROR
 36577  	}
 36578  	return TCL_OK
 36579  }
 36580  
 36581  var apVfs [20]uintptr
 36582  var nVfs int32 = 0
 36583  
 36584  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36585  	var i int32
 36586  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 36587  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36588  		if apVfs[i] == uintptr(0) {
 36589  			break
 36590  		}
 36591  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 36592  	}
 36593  	nVfs = i
 36594  	return TCL_OK
 36595  }
 36596  
 36597  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36598  	var i int32
 36599  	for i = nVfs - 1; i >= 0; i-- {
 36600  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 36601  	}
 36602  	return TCL_OK
 36603  }
 36604  
 36605  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36606  	bp := tls.Alloc(44)
 36607  	defer tls.Free(44)
 36608  
 36609  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 36610  
 36611  	var rc int32
 36612  	_ = rc
 36613  
 36614  	if objc != 2 {
 36615  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36616  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36617  		return TCL_ERROR
 36618  	}
 36619  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36620  		return TCL_ERROR
 36621  	}
 36622  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 36623  
 36624  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 36625  
 36626  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 36627  
 36628  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 36629  
 36630  	return TCL_OK
 36631  }
 36632  
 36633  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36634  	bp := tls.Alloc(76)
 36635  	defer tls.Free(76)
 36636  
 36637  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 36638  
 36639  	var rc int32
 36640  
 36641  	if objc != 2 {
 36642  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36643  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36644  		return TCL_ERROR
 36645  	}
 36646  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36647  		return TCL_ERROR
 36648  	}
 36649  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 36650  	if rc != 0 {
 36651  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36652  		return TCL_ERROR
 36653  	}
 36654  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 36655  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 36656  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 36657  		return TCL_ERROR
 36658  	}
 36659  	return TCL_OK
 36660  }
 36661  
 36662  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36663  	bp := tls.Alloc(120)
 36664  	defer tls.Free(120)
 36665  
 36666  	var zDb uintptr
 36667  
 36668  	var rc int32
 36669  
 36670  	if objc != 3 && objc != 2 {
 36671  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 36672  		return TCL_ERROR
 36673  	}
 36674  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 36675  		return TCL_ERROR
 36676  	}
 36677  	if objc == 3 {
 36678  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36679  	} else {
 36680  		zDb = uintptr(0)
 36681  	}
 36682  
 36683  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 36684  	if rc != 0 {
 36685  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36686  		return TCL_ERROR
 36687  	} else {
 36688  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 36689  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 36690  		return TCL_OK
 36691  	}
 36692  	return int32(0)
 36693  }
 36694  
 36695  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36696  	bp := tls.Alloc(12)
 36697  	defer tls.Free(12)
 36698  
 36699  	var zDb uintptr
 36700  
 36701  	var rc int32
 36702  
 36703  	if objc != 4 {
 36704  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 36705  		return TCL_ERROR
 36706  	}
 36707  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36708  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 36709  		return TCL_ERROR
 36710  	}
 36711  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36712  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 36713  		zDb = uintptr(0)
 36714  	}
 36715  
 36716  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 36717  	if rc != 0 {
 36718  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36719  		return TCL_ERROR
 36720  	}
 36721  	return TCL_OK
 36722  }
 36723  
 36724  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36725  	bp := tls.Alloc(16)
 36726  	defer tls.Free(16)
 36727  
 36728  	var zDb uintptr
 36729  
 36730  	var rc int32
 36731  
 36732  	if objc != 4 {
 36733  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 36734  		return TCL_ERROR
 36735  	}
 36736  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36737  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 36738  		return TCL_ERROR
 36739  	}
 36740  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36741  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 36742  		zDb = uintptr(0)
 36743  	}
 36744  
 36745  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 36746  	if rc != 0 {
 36747  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36748  		return TCL_ERROR
 36749  	}
 36750  	return TCL_OK
 36751  }
 36752  
 36753  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36754  	bp := tls.Alloc(40)
 36755  	defer tls.Free(40)
 36756  
 36757  	if objc != 3 {
 36758  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36759  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 36760  		return TCL_ERROR
 36761  	}
 36762  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36763  		return TCL_ERROR
 36764  	}
 36765  
 36766  	return TCL_OK
 36767  }
 36768  
 36769  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36770  	bp := tls.Alloc(176)
 36771  	defer tls.Free(176)
 36772  
 36773  	var rc int32
 36774  
 36775  	if objc != 3 {
 36776  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36777  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 36778  		return TCL_ERROR
 36779  	}
 36780  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36781  		return TCL_ERROR
 36782  	}
 36783  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 36784  		return TCL_ERROR
 36785  	}
 36786  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 36787  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 36788  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 36789  	return TCL_OK
 36790  }
 36791  
 36792  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36793  	bp := tls.Alloc(176)
 36794  	defer tls.Free(176)
 36795  
 36796  	var rc int32
 36797  
 36798  	if objc != 3 {
 36799  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36800  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 36801  		return TCL_ERROR
 36802  	}
 36803  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36804  		return TCL_ERROR
 36805  	}
 36806  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 36807  		return TCL_ERROR
 36808  	}
 36809  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 36810  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 36811  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 36812  	return TCL_OK
 36813  }
 36814  
 36815  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36816  	bp := tls.Alloc(64)
 36817  	defer tls.Free(64)
 36818  
 36819  	var zDbName uintptr = ts + 85
 36820  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 36821  
 36822  	if objc != 2 && objc != 3 {
 36823  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36824  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36825  		return TCL_ERROR
 36826  	}
 36827  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36828  		return TCL_ERROR
 36829  	}
 36830  	if objc == 3 {
 36831  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36832  	}
 36833  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 36834  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 36835  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 36836  	return TCL_OK
 36837  }
 36838  
 36839  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36840  	bp := tls.Alloc(12)
 36841  	defer tls.Free(12)
 36842  
 36843  	var zDbName uintptr = ts + 85
 36844  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 36845  	var rc int32
 36846  
 36847  	if objc != 3 {
 36848  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 36849  		return TCL_ERROR
 36850  	}
 36851  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36852  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 36853  		return TCL_ERROR
 36854  	}
 36855  
 36856  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 36857  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36858  	return TCL_OK
 36859  }
 36860  
 36861  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36862  	bp := tls.Alloc(64)
 36863  	defer tls.Free(64)
 36864  
 36865  	var zDbName uintptr = ts + 85
 36866  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 36867  
 36868  	if objc != 2 && objc != 3 {
 36869  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36870  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36871  		return TCL_ERROR
 36872  	}
 36873  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36874  		return TCL_ERROR
 36875  	}
 36876  	if objc == 3 {
 36877  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36878  	}
 36879  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 36880  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 36881  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 36882  	return TCL_OK
 36883  }
 36884  
 36885  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36886  	bp := tls.Alloc(44)
 36887  	defer tls.Free(44)
 36888  
 36889  	var zName uintptr = ts + 85
 36890  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 36891  	var rc int32 = SQLITE_OK
 36892  
 36893  	if objc != 2 && objc != 3 {
 36894  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36895  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36896  		return TCL_ERROR
 36897  	}
 36898  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36899  		return TCL_ERROR
 36900  	}
 36901  	if objc == 3 {
 36902  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36903  	}
 36904  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 36905  	if rc != SQLITE_OK {
 36906  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36907  		return TCL_ERROR
 36908  	}
 36909  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 36910  	return TCL_OK
 36911  }
 36912  
 36913  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36914  	var pVfs uintptr
 36915  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 36916  	if objc != 1 {
 36917  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36918  		return TCL_ERROR
 36919  	}
 36920  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 36921  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 36922  	}
 36923  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 36924  	return TCL_OK
 36925  }
 36926  
 36927  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36928  	bp := tls.Alloc(68)
 36929  	defer tls.Free(68)
 36930  
 36931  	var rc int32
 36932  	var i int32
 36933  	var id int32 = 0
 36934  
 36935  	var zId uintptr
 36936  
 36937  	if objc != 4 {
 36938  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36939  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 36940  		return TCL_ERROR
 36941  	}
 36942  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 36943  		return TCL_ERROR
 36944  	}
 36945  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36946  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 36947  		FzName       uintptr
 36948  		Fid          int32
 36949  		F__ccgo_pad1 [4]byte
 36950  	}{})); i++ {
 36951  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 36952  			id = aId[i].Fid
 36953  			break
 36954  		}
 36955  	}
 36956  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 36957  		FzName       uintptr
 36958  		Fid          int32
 36959  		F__ccgo_pad1 [4]byte
 36960  	}{})) {
 36961  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 36962  		return TCL_ERROR
 36963  	}
 36964  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 36965  		return TCL_ERROR
 36966  	}
 36967  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 36968  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36969  	return TCL_OK
 36970  }
 36971  
 36972  var aId = [14]struct {
 36973  	FzName       uintptr
 36974  	Fid          int32
 36975  	F__ccgo_pad1 [4]byte
 36976  }{
 36977  	{FzName: ts + 17883},
 36978  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 36979  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 36980  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 36981  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 36982  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 36983  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 36984  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 36985  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 36986  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 36987  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 36988  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 36989  	{FzName: ts + 18186, Fid: -1},
 36990  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 36991  }
 36992  
 36993  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36994  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 36995  	_ = rc
 36996  
 36997  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 36998  
 36999  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 37000  	return TCL_OK
 37001  }
 37002  
 37003  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37004  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 37005  	return TCL_OK
 37006  }
 37007  
 37008  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37009  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 37010  	return TCL_OK
 37011  }
 37012  
 37013  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37014  	bp := tls.Alloc(32)
 37015  	defer tls.Free(32)
 37016  
 37017  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 37018  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 37019  	if objc != 2 && objc != 3 {
 37020  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 37021  		return TCL_ERROR
 37022  	}
 37023  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 37024  		return TCL_ERROR
 37025  	}
 37026  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 37027  		return TCL_ERROR
 37028  	}
 37029  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 37030  	return TCL_OK
 37031  }
 37032  
 37033  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37034  	bp := tls.Alloc(12)
 37035  	defer tls.Free(12)
 37036  
 37037  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37038  	if objc != 2 {
 37039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 37040  		return TCL_ERROR
 37041  	}
 37042  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 37043  		return TCL_ERROR
 37044  	}
 37045  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 37046  	return TCL_OK
 37047  }
 37048  
 37049  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37050  	bp := tls.Alloc(8)
 37051  	defer tls.Free(8)
 37052  
 37053  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 37054  	return TCL_OK
 37055  }
 37056  
 37057  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37058  	bp := tls.Alloc(8)
 37059  	defer tls.Free(8)
 37060  
 37061  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 37062  	return TCL_OK
 37063  }
 37064  
 37065  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37066  	bp := tls.Alloc(16)
 37067  	defer tls.Free(16)
 37068  
 37069  	var pRet uintptr
 37070  
 37071  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 37072  
 37073  	pRet = tcl.XTcl_NewObj(tls)
 37074  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 37075  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 37076  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 37077  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 37078  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 37079  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 37080  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 37081  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 37082  
 37083  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37084  
 37085  	return TCL_OK
 37086  }
 37087  
 37088  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 37089  	var ii int32
 37090  	for ii = 0; ii < nArg; ii++ {
 37091  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 37092  	}
 37093  }
 37094  
 37095  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37096  	bp := tls.Alloc(8)
 37097  	defer tls.Free(8)
 37098  
 37099  	var rc int32
 37100  
 37101  	if objc != 2 {
 37102  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37103  		return TCL_ERROR
 37104  	}
 37105  
 37106  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37107  		return TCL_ERROR
 37108  	}
 37109  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 37110  		f func(*libc.TLS, uintptr, int32)
 37111  	}{test_unlock_notify_cb})), interp)
 37112  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37113  	return TCL_OK
 37114  }
 37115  
 37116  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37117  	bp := tls.Alloc(8)
 37118  	defer tls.Free(8)
 37119  
 37120  	var zDb uintptr = uintptr(0)
 37121  
 37122  	var rc int32
 37123  
 37124  	if objc != 3 && objc != 2 {
 37125  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 37126  		return TCL_ERROR
 37127  	}
 37128  
 37129  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37130  		return TCL_ERROR
 37131  	}
 37132  	if objc == 3 {
 37133  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37134  	}
 37135  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 37136  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37137  	return TCL_OK
 37138  }
 37139  
 37140  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37141  	bp := tls.Alloc(96)
 37142  	defer tls.Free(96)
 37143  
 37144  	var zDb uintptr = uintptr(0)
 37145  
 37146  	var rc int32
 37147  
 37148  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 37149  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 37150  	var pRet uintptr
 37151  
 37152  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 37153  
 37154  	if objc != 3 && objc != 4 {
 37155  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 37156  		return TCL_ERROR
 37157  	}
 37158  
 37159  	if objc == 4 {
 37160  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37161  	}
 37162  	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) &&
 37163  		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) {
 37164  		return TCL_ERROR
 37165  	}
 37166  
 37167  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 37168  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 37169  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37170  		tcl.XTcl_ResetResult(tls, interp)
 37171  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 37172  		return TCL_ERROR
 37173  	}
 37174  
 37175  	pRet = tcl.XTcl_NewObj(tls)
 37176  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 37177  		if rc == SQLITE_BUSY {
 37178  			return 1
 37179  		}
 37180  		return 0
 37181  	}()))
 37182  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 37183  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 37184  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37185  
 37186  	return TCL_OK
 37187  }
 37188  
 37189  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37190  	bp := tls.Alloc(12)
 37191  	defer tls.Free(12)
 37192  
 37193  	var rc int32
 37194  
 37195  	if objc != 3 {
 37196  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 37197  		return TCL_ERROR
 37198  	}
 37199  
 37200  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37201  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37202  		return TCL_ERROR
 37203  	}
 37204  
 37205  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 37206  	tcl.XTcl_ResetResult(tls, interp)
 37207  	if rc != SQLITE_OK {
 37208  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37209  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 37210  		return TCL_ERROR
 37211  	}
 37212  
 37213  	return TCL_OK
 37214  }
 37215  
 37216  type LogCallback = struct {
 37217  	FpInterp uintptr
 37218  	FpObj    uintptr
 37219  }
 37220  
 37221  var logcallback = LogCallback{}
 37222  
 37223  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 37224  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 37225  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 37226  	tcl.XTcl_ListObjAppendElement(tls,
 37227  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 37228  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 37229  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 37230  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37231  		var _objPtr uintptr = pNew
 37232  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37233  			tcl.XTclFreeObj(tls, _objPtr)
 37234  		}
 37235  	}
 37236  }
 37237  
 37238  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37239  	bp := tls.Alloc(32)
 37240  	defer tls.Free(32)
 37241  
 37242  	if objc > 2 {
 37243  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 37244  		return TCL_ERROR
 37245  	}
 37246  	if logcallback.FpObj != 0 {
 37247  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37248  			var _objPtr uintptr = logcallback.FpObj
 37249  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37250  				tcl.XTclFreeObj(tls, _objPtr)
 37251  			}
 37252  		}
 37253  		logcallback.FpObj = uintptr(0)
 37254  		logcallback.FpInterp = uintptr(0)
 37255  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 37256  	}
 37257  	if objc > 1 {
 37258  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 37259  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 37260  		logcallback.FpInterp = interp
 37261  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 37262  			f func(*libc.TLS, uintptr, int32, uintptr)
 37263  		}{xLogcallback})), uintptr(0)))
 37264  	}
 37265  	return TCL_OK
 37266  }
 37267  
 37268  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37269  	bp := tls.Alloc(112)
 37270  	defer tls.Free(112)
 37271  
 37272  	if objc < 2 {
 37273  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 37274  		return TCL_ERROR
 37275  	}
 37276  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 37277  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 37278  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37279  		return TCL_ERROR
 37280  	}
 37281  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 37282  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 37283  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37284  		return TCL_ERROR
 37285  	}
 37286  	return (*struct {
 37287  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 37288  	})(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)
 37289  }
 37290  
 37291  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 37292  	bp := tls.Alloc(48)
 37293  	defer tls.Free(48)
 37294  
 37295  	var zSql uintptr
 37296  	var zExplain uintptr
 37297  
 37298  	var rc int32
 37299  
 37300  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 37301  	if zSql == uintptr(0) {
 37302  		return SQLITE_ERROR
 37303  	}
 37304  
 37305  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 37306  	if zExplain == uintptr(0) {
 37307  		return SQLITE_NOMEM
 37308  	}
 37309  
 37310  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 37311  	sqlite3.Xsqlite3_free(tls, zExplain)
 37312  	if rc != SQLITE_OK {
 37313  		return rc
 37314  	}
 37315  
 37316  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 37317  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 37318  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 37319  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 37320  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 37321  
 37322  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 37323  	}
 37324  
 37325  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 37326  }
 37327  
 37328  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37329  	bp := tls.Alloc(8)
 37330  	defer tls.Free(8)
 37331  
 37332  	var rc int32
 37333  
 37334  	if objc != 2 {
 37335  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37336  		return TCL_ERROR
 37337  	}
 37338  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37339  		return TCL_ERROR
 37340  	}
 37341  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37342  
 37343  	libc.Xfflush(tls, uintptr(unsafe.Pointer(&libc.X__sF))+1*152)
 37344  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37345  	return TCL_OK
 37346  }
 37347  
 37348  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 37349  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 37350  	var pTm uintptr = aliasTM
 37351  	var altT time_t
 37352  	var iJD sqlite3_int64
 37353  	var Z int32
 37354  	var A int32
 37355  	var B int32
 37356  	var C int32
 37357  	var D int32
 37358  	var E int32
 37359  	var X1 int32
 37360  	var S int32
 37361  
 37362  	if t/int64(86400)&int64(1) != 0 {
 37363  		altT = t + int64(1800)
 37364  	} else {
 37365  		altT = t - int64(1800)
 37366  	}
 37367  	iJD = altT + 210866760000
 37368  	Z = int32((iJD + int64(43200)) / int64(86400))
 37369  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 37370  	A = Z + 1 + A - A/4
 37371  	B = A + 1524
 37372  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 37373  	D = 36525 * (C & 32767) / 100
 37374  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 37375  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 37376  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 37377  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 37378  		if E < 14 {
 37379  			return E - 2
 37380  		}
 37381  		return E - 14
 37382  	}()
 37383  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 37384  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 37385  			return C - 4716
 37386  		}
 37387  		return C - 4715
 37388  	}() - 1900
 37389  	S = int32((iJD + int64(43200)) % int64(86400))
 37390  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 37391  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 37392  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 37393  	return libc.Bool32(t == int64(959609760))
 37394  }
 37395  
 37396  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37397  	bp := tls.Alloc(192)
 37398  	defer tls.Free(192)
 37399  
 37400  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 37401  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 37402  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 37403  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 37404  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 37405  	}
 37406  
 37407  	var iFlag int32
 37408  	var rc int32
 37409  
 37410  	if objc < 2 {
 37411  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 37412  		return TCL_ERROR
 37413  	}
 37414  
 37415  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 37416  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+136)
 37417  	if rc != TCL_OK {
 37418  		return rc
 37419  	}
 37420  
 37421  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 37422  	switch iFlag {
 37423  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 37424  		{
 37425  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 37426  			if objc != 3 {
 37427  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 37428  				return TCL_ERROR
 37429  			}
 37430  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 37431  				return TCL_ERROR
 37432  			}
 37433  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 37434  			break
 37435  
 37436  		}
 37437  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 37438  		{
 37439  			if objc != 3 {
 37440  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 37441  				return TCL_ERROR
 37442  			}
 37443  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 37444  				return TCL_ERROR
 37445  			}
 37446  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 37447  				f func(*libc.TLS, uintptr, uintptr) int32
 37448  			}{testLocaltime}))))
 37449  			break
 37450  
 37451  		}
 37452  
 37453  	case SQLITE_TESTCTRL_SORTER_MMAP:
 37454  		{
 37455  			if objc != 4 {
 37456  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 37457  				return TCL_ERROR
 37458  			}
 37459  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 37460  				return TCL_ERROR
 37461  			}
 37462  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 37463  				return TCL_ERROR
 37464  			}
 37465  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 37466  			break
 37467  
 37468  		}
 37469  
 37470  	case SQLITE_TESTCTRL_IMPOSTER:
 37471  		{
 37472  			var zDbName uintptr
 37473  
 37474  			if objc != 6 {
 37475  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 37476  				return TCL_ERROR
 37477  			}
 37478  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 37479  				return TCL_ERROR
 37480  			}
 37481  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37482  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 37483  				return TCL_ERROR
 37484  			}
 37485  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 37486  				return TCL_ERROR
 37487  			}
 37488  			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))))
 37489  			break
 37490  
 37491  		}
 37492  	}
 37493  
 37494  	tcl.XTcl_ResetResult(tls, interp)
 37495  	return TCL_OK
 37496  }
 37497  
 37498  type Verb = struct {
 37499  	FzName       uintptr
 37500  	Fi           int32
 37501  	F__ccgo_pad1 [4]byte
 37502  }
 37503  
 37504  type rusage = struct {
 37505  	Fru_utime struct {
 37506  		Ftv_sec  time_t
 37507  		Ftv_usec suseconds_t
 37508  	}
 37509  	Fru_stime struct {
 37510  		Ftv_sec  time_t
 37511  		Ftv_usec suseconds_t
 37512  	}
 37513  	Fru_maxrss   int64
 37514  	Fru_ixrss    int64
 37515  	Fru_idrss    int64
 37516  	Fru_isrss    int64
 37517  	Fru_minflt   int64
 37518  	Fru_majflt   int64
 37519  	Fru_nswap    int64
 37520  	Fru_inblock  int64
 37521  	Fru_oublock  int64
 37522  	Fru_msgsnd   int64
 37523  	Fru_msgrcv   int64
 37524  	Fru_nsignals int64
 37525  	Fru_nvcsw    int64
 37526  	Fru_nivcsw   int64
 37527  }
 37528  
 37529  type rlimit = struct {
 37530  	Frlim_cur rlim_t
 37531  	Frlim_max rlim_t
 37532  }
 37533  
 37534  type loadavg = struct {
 37535  	Fldavg       [3]fixpt_t
 37536  	F__ccgo_pad1 [4]byte
 37537  	Ffscale      int64
 37538  }
 37539  
 37540  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37541  	bp := tls.Alloc(1216)
 37542  	defer tls.Free(1216)
 37543  
 37544  	libc.Xmemset(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})))
 37545  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 37546  
 37547  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]int8{})), bp+192,
 37548  		ts+18566,
 37549  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec),
 37550  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec),
 37551  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_minflt), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_majflt)))
 37552  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 37553  	return TCL_OK
 37554  }
 37555  
 37556  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37557  	bp := tls.Alloc(68)
 37558  	defer tls.Free(68)
 37559  
 37560  	var i int32
 37561  
 37562  	var zOpt uintptr
 37563  
 37564  	var mask int32 = 0
 37565  
 37566  	if objc != 4 {
 37567  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 37568  		return TCL_ERROR
 37569  	}
 37570  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 37571  		return TCL_ERROR
 37572  	}
 37573  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 37574  		return TCL_ERROR
 37575  	}
 37576  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37577  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37578  		FzOptName    uintptr
 37579  		Fmask        int32
 37580  		F__ccgo_pad1 [4]byte
 37581  	}{})); i++ {
 37582  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 37583  			mask = aOpt[i].Fmask
 37584  			break
 37585  		}
 37586  	}
 37587  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 37588  		mask = ^mask
 37589  	}
 37590  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37591  		FzOptName    uintptr
 37592  		Fmask        int32
 37593  		F__ccgo_pad1 [4]byte
 37594  	}{})) {
 37595  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 37596  			uintptr(0)))
 37597  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37598  			FzOptName    uintptr
 37599  			Fmask        int32
 37600  			F__ccgo_pad1 [4]byte
 37601  		}{})); i++ {
 37602  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 37603  		}
 37604  		return TCL_ERROR
 37605  	}
 37606  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 37607  	return TCL_OK
 37608  }
 37609  
 37610  var aOpt = [14]struct {
 37611  	FzOptName    uintptr
 37612  	Fmask        int32
 37613  	F__ccgo_pad1 [4]byte
 37614  }{
 37615  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 37616  	{FzOptName: ts + 18686},
 37617  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 37618  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 37619  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 37620  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 37621  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 37622  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 37623  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 37624  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 37625  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 37626  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 37627  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 37628  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 37629  }
 37630  
 37631  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37632  	bp := tls.Alloc(80)
 37633  	defer tls.Free(80)
 37634  
 37635  	var zName uintptr
 37636  	var i int32
 37637  	var j int32
 37638  	var rc int32
 37639  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 37640  	if objc < 3 {
 37641  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 37642  		return TCL_ERROR
 37643  	}
 37644  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37645  		return TCL_ERROR
 37646  	}
 37647  	for j = 2; j < objc; j++ {
 37648  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 37649  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 37650  			FzExtName uintptr
 37651  			FpInit    uintptr
 37652  		}{}))); i++ {
 37653  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 37654  				break
 37655  			}
 37656  		}
 37657  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 37658  			FzExtName uintptr
 37659  			FpInit    uintptr
 37660  		}{}))) {
 37661  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 37662  			return TCL_ERROR
 37663  		}
 37664  		if aExtension[i].FpInit != 0 {
 37665  			rc = (*struct {
 37666  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 37667  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 37668  		} else {
 37669  			rc = SQLITE_OK
 37670  		}
 37671  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 37672  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 72)),
 37673  				uintptr(0)))
 37674  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37675  			return TCL_ERROR
 37676  		}
 37677  	}
 37678  	return TCL_OK
 37679  }
 37680  
 37681  var aExtension = [22]struct {
 37682  	FzExtName uintptr
 37683  	FpInit    uintptr
 37684  }{
 37685  	{FzExtName: ts + 18912, FpInit: 0},
 37686  	{FzExtName: ts + 18919, FpInit: 0},
 37687  	{FzExtName: ts + 4060, FpInit: 0},
 37688  	{FzExtName: ts + 18929, FpInit: 0},
 37689  	{FzExtName: ts + 4815, FpInit: 0},
 37690  	{FzExtName: ts + 4838, FpInit: 0},
 37691  	{FzExtName: ts + 4896, FpInit: 0},
 37692  	{FzExtName: ts + 4974, FpInit: 0},
 37693  	{FzExtName: ts + 18937, FpInit: 0},
 37694  	{FzExtName: ts + 5483, FpInit: 0},
 37695  	{FzExtName: ts + 5507, FpInit: 0},
 37696  	{FzExtName: ts + 18944, FpInit: 0},
 37697  	{FzExtName: ts + 6087, FpInit: 0},
 37698  	{FzExtName: ts + 6162, FpInit: 0},
 37699  	{FzExtName: ts + 6535, FpInit: 0},
 37700  	{FzExtName: ts + 6831, FpInit: 0},
 37701  	{FzExtName: ts + 6846, FpInit: 0},
 37702  	{FzExtName: ts + 18953, FpInit: 0},
 37703  	{FzExtName: ts + 18960, FpInit: 0},
 37704  	{FzExtName: ts + 18969, FpInit: 0},
 37705  	{FzExtName: ts + 8921, FpInit: 0},
 37706  	{FzExtName: ts + 9463, FpInit: 0},
 37707  }
 37708  
 37709  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37710  	bp := tls.Alloc(4)
 37711  	defer tls.Free(4)
 37712  
 37713  	if objc != 2 {
 37714  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 37715  		return TCL_ERROR
 37716  	}
 37717  
 37718  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37719  		return TCL_ERROR
 37720  	}
 37721  
 37722  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 37723  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 37724  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 37725  		}
 37726  	} else {
 37727  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 37728  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 37729  		}
 37730  	}
 37731  
 37732  	tcl.XTcl_ResetResult(tls, interp)
 37733  	return TCL_OK
 37734  }
 37735  
 37736  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37737  	bp := tls.Alloc(80)
 37738  	defer tls.Free(80)
 37739  
 37740  	var zSql1 uintptr
 37741  	var zSql2 uintptr
 37742  
 37743  	var iStep int32
 37744  	var iCksum1 uint32
 37745  	var iCksum2 uint32
 37746  	var rc int32
 37747  	var iB int32
 37748  
 37749  	var a int32
 37750  	var a1 int32
 37751  	iCksum1 = uint32(0)
 37752  	iCksum2 = uint32(0)
 37753  
 37754  	if !(objc != 5) {
 37755  		goto __1
 37756  	}
 37757  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 37758  	return TCL_ERROR
 37759  __1:
 37760  	;
 37761  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 37762  		goto __2
 37763  	}
 37764  	return TCL_ERROR
 37765  __2:
 37766  	;
 37767  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37768  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 37769  		goto __3
 37770  	}
 37771  	return TCL_ERROR
 37772  __3:
 37773  	;
 37774  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 37775  
 37776  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 37777  	if !(rc != SQLITE_OK) {
 37778  		goto __4
 37779  	}
 37780  	goto sql_error
 37781  __4:
 37782  	;
 37783  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 37784  	iStep = 0
 37785  __5:
 37786  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 37787  		goto __7
 37788  	}
 37789  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 37790  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 37791  		goto __8
 37792  	}
 37793  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 37794  	return TCL_ERROR
 37795  __8:
 37796  	;
 37797  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 37798  	goto __6
 37799  __6:
 37800  	iStep++
 37801  	goto __5
 37802  	goto __7
 37803  __7:
 37804  	;
 37805  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37806  	if !(rc != SQLITE_OK) {
 37807  		goto __9
 37808  	}
 37809  	goto sql_error
 37810  __9:
 37811  	;
 37812  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 37813  	if !(rc != SQLITE_OK) {
 37814  		goto __10
 37815  	}
 37816  	goto sql_error
 37817  __10:
 37818  	;
 37819  	iStep = 0
 37820  __11:
 37821  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 37822  		goto __13
 37823  	}
 37824  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 37825  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 37826  	goto __12
 37827  __12:
 37828  	iStep++
 37829  	goto __11
 37830  	goto __13
 37831  __13:
 37832  	;
 37833  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37834  	if !(rc != SQLITE_OK) {
 37835  		goto __14
 37836  	}
 37837  	goto sql_error
 37838  __14:
 37839  	;
 37840  	if !(iCksum1 != iCksum2) {
 37841  		goto __15
 37842  	}
 37843  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 37844  	return TCL_ERROR
 37845  __15:
 37846  	;
 37847  	return TCL_OK
 37848  sql_error:
 37849  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 37850  	return TCL_ERROR
 37851  }
 37852  
 37853  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37854  	bp := tls.Alloc(44)
 37855  	defer tls.Free(44)
 37856  
 37857  	var xyz int32
 37858  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 37859  	var j int32
 37860  
 37861  	var a uintptr
 37862  	if objc != 2 {
 37863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 37864  		return TCL_ERROR
 37865  	}
 37866  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37867  		return TCL_ERROR
 37868  	}
 37869  	switch *(*int32)(unsafe.Pointer(bp)) {
 37870  	case 1:
 37871  		{
 37872  			xyz = 0x7fffff00 - i
 37873  			xyz = xyz + 0x100
 37874  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 37875  			break
 37876  
 37877  		}
 37878  	case 2:
 37879  		{
 37880  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 37881  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 37882  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 37883  			}
 37884  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 37885  			break
 37886  
 37887  		}
 37888  	case 3:
 37889  		{
 37890  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 37891  			for j = 0; j < 10; j++ {
 37892  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 37893  			}
 37894  			libc.Xfree(tls, a)
 37895  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 37896  			break
 37897  
 37898  		}
 37899  	case 4:
 37900  		{
 37901  			tcl.XTcl_Panic(tls, ts+19049, 0)
 37902  			break
 37903  
 37904  		}
 37905  	}
 37906  	return TCL_OK
 37907  }
 37908  
 37909  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37910  	bp := tls.Alloc(64)
 37911  	defer tls.Free(64)
 37912  
 37913  	var zDb uintptr
 37914  
 37915  	if objc != 2 {
 37916  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37917  		return TCL_ERROR
 37918  	}
 37919  
 37920  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 37921  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 37922  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 37923  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 37924  	}
 37925  	return TCL_OK
 37926  }
 37927  
 37928  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37929  	bp := tls.Alloc(28)
 37930  	defer tls.Free(28)
 37931  
 37932  	var i int32
 37933  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 37934  	var zSetting uintptr
 37935  
 37936  	if objc != 4 && objc != 3 {
 37937  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 37938  		return TCL_ERROR
 37939  	}
 37940  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 37941  		return TCL_ERROR
 37942  	}
 37943  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37944  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 37945  		zSetting += uintptr(7)
 37946  	}
 37947  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 37948  		zSetting += uintptr(9)
 37949  	}
 37950  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 37951  		zSetting += uintptr(7)
 37952  	}
 37953  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 37954  		FzName       uintptr
 37955  		FeVal        int32
 37956  		F__ccgo_pad1 [4]byte
 37957  	}{}))); i++ {
 37958  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 37959  			break
 37960  		}
 37961  	}
 37962  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 37963  		FzName       uintptr
 37964  		FeVal        int32
 37965  		F__ccgo_pad1 [4]byte
 37966  	}{}))) {
 37967  		tcl.XTcl_SetObjResult(tls, interp,
 37968  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 37969  		return TCL_ERROR
 37970  	}
 37971  	if objc == 4 {
 37972  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 37973  			return TCL_ERROR
 37974  		}
 37975  	} else {
 37976  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 37977  	}
 37978  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 37979  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 37980  	return TCL_OK
 37981  }
 37982  
 37983  var aSetting = [14]struct {
 37984  	FzName       uintptr
 37985  	FeVal        int32
 37986  	F__ccgo_pad1 [4]byte
 37987  }{
 37988  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 37989  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 37990  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 37991  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 37992  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 37993  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 37994  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 37995  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 37996  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 37997  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 37998  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 37999  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 38000  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 38001  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 38002  }
 38003  
 38004  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38005  	bp := tls.Alloc(8)
 38006  	defer tls.Free(8)
 38007  
 38008  	var zSchema uintptr
 38009  	var iTxn int32
 38010  
 38011  	if objc != 2 && objc != 3 {
 38012  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 38013  		return TCL_ERROR
 38014  	}
 38015  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38016  		return TCL_ERROR
 38017  	}
 38018  	if objc == 3 {
 38019  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38020  	} else {
 38021  		zSchema = uintptr(0)
 38022  	}
 38023  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 38024  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 38025  	return TCL_OK
 38026  }
 38027  
 38028  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38029  	bp := tls.Alloc(16)
 38030  	defer tls.Free(16)
 38031  
 38032  	var rc int32
 38033  
 38034  	if objc != 2 {
 38035  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38036  		return TCL_ERROR
 38037  	} else {
 38038  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 38039  			return TCL_ERROR
 38040  		}
 38041  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 38042  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38043  		return TCL_OK
 38044  	}
 38045  	return int32(0)
 38046  }
 38047  
 38048  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38049  	bp := tls.Alloc(8)
 38050  	defer tls.Free(8)
 38051  
 38052  	if objc != 2 && objc != 3 {
 38053  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 38054  		return TCL_ERROR
 38055  	} else {
 38056  		var rc int32
 38057  
 38058  		var zDb uintptr = uintptr(0)
 38059  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38060  			return TCL_ERROR
 38061  		}
 38062  		if objc == 3 {
 38063  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38064  		}
 38065  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38066  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 38067  		return TCL_OK
 38068  	}
 38069  	return int32(0)
 38070  }
 38071  
 38072  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38073  	bp := tls.Alloc(32)
 38074  	defer tls.Free(32)
 38075  
 38076  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 38077  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 38078  	var aData uintptr = uintptr(0)
 38079  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 38080  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 38081  	var rc int32
 38082  
 38083  	if objc != 4 {
 38084  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 38085  		return TCL_ERROR
 38086  	}
 38087  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38088  		return TCL_ERROR
 38089  	}
 38090  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38091  		return TCL_ERROR
 38092  	}
 38093  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 38094  
 38095  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 38096  	rc = (*struct {
 38097  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 38098  	})(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)))
 38099  
 38100  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38101  	return TCL_OK
 38102  }
 38103  
 38104  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38105  	if objc != 1 {
 38106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38107  		return TCL_ERROR
 38108  	} else {
 38109  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 38110  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38111  	}
 38112  	return TCL_OK
 38113  }
 38114  
 38115  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38116  	if objc != 1 {
 38117  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38118  		return TCL_ERROR
 38119  	} else {
 38120  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 38121  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38122  	}
 38123  	return TCL_OK
 38124  }
 38125  
 38126  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38127  	bp := tls.Alloc(296)
 38128  	defer tls.Free(296)
 38129  
 38130  	var zIn uintptr = uintptr(0)
 38131  	var a uintptr = uintptr(0)
 38132  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 38133  	var lineno int32 = 0
 38134  	var i int32
 38135  	var iNext int32
 38136  	var iOffset int32 = 0
 38137  
 38138  	var rc int32
 38139  
 38140  	if objc != 2 {
 38141  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 38142  		return TCL_ERROR
 38143  	}
 38144  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38145  	for i = 0; *(*int8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 38146  		lineno++
 38147  		for iNext = i; *(*int8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 38148  		}
 38149  		if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 38150  			iNext++
 38151  		}
 38152  		for int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 38153  			i++
 38154  		}
 38155  		if a == uintptr(0) {
 38156  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 38157  			if rc != 2 {
 38158  				continue
 38159  			}
 38160  			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 {
 38161  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 38162  				return TCL_ERROR
 38163  			}
 38164  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 38165  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 38166  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 38167  				return TCL_ERROR
 38168  			}
 38169  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38170  			if a == uintptr(0) {
 38171  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 38172  				return TCL_ERROR
 38173  			}
 38174  			libc.Xmemset(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38175  			continue
 38176  		}
 38177  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 38178  		if rc == 2 {
 38179  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 38180  			continue
 38181  		}
 38182  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 38183  			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,
 38184  				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))
 38185  		if rc == 17 {
 38186  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 38187  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 38188  				var ii int32
 38189  				for ii = 0; ii < 16; ii++ {
 38190  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 38191  				}
 38192  			}
 38193  			continue
 38194  		}
 38195  	}
 38196  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 38197  	libc.Xfree(tls, a)
 38198  	return TCL_OK
 38199  }
 38200  
 38201  type AutovacPageData1 = struct {
 38202  	Finterp  uintptr
 38203  	FzScript uintptr
 38204  }
 38205  
 38206  type AutovacPageData = AutovacPageData1
 38207  
 38208  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 38209  	bp := tls.Alloc(344)
 38210  	defer tls.Free(344)
 38211  
 38212  	var pData uintptr = pClientData
 38213  
 38214  	tcl.XTcl_DStringInit(tls, bp+24)
 38215  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 38216  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 38217  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 38218  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38219  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 38220  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38221  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 38222  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38223  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 38224  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 38225  	tcl.XTcl_DStringFree(tls, bp+24)
 38226  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 38227  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 38228  	return *(*uint32)(unsafe.Pointer(bp + 340))
 38229  }
 38230  
 38231  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38232  	bp := tls.Alloc(1048)
 38233  	defer tls.Free(1048)
 38234  
 38235  	var pData uintptr
 38236  
 38237  	var rc int32
 38238  	var zScript uintptr
 38239  	if objc != 2 && objc != 3 {
 38240  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 38241  		return TCL_ERROR
 38242  	}
 38243  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 38244  		return TCL_ERROR
 38245  	}
 38246  	if objc == 3 {
 38247  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38248  	} else {
 38249  		zScript = uintptr(0)
 38250  	}
 38251  	if zScript != 0 {
 38252  		var nScript size_t = libc.Xstrlen(tls, zScript)
 38253  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 38254  		if pData == uintptr(0) {
 38255  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 38256  			return TCL_ERROR
 38257  		}
 38258  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 38259  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 38260  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1))
 38261  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 38262  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 38263  		}{test_autovacuum_pages_callback})),
 38264  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 38265  	} else {
 38266  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 38267  	}
 38268  	if rc != 0 {
 38269  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+48,
 38270  			ts+19513, libc.VaList(bp+16, rc))
 38271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 38272  		return TCL_ERROR
 38273  	}
 38274  	return TCL_OK
 38275  }
 38276  
 38277  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 38278  	var i int32
 38279  
 38280  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 38281  		FzName uintptr
 38282  		FxProc uintptr
 38283  	}{})); i++ {
 38284  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 38285  	}
 38286  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 38287  		FzName      uintptr
 38288  		FxProc      uintptr
 38289  		FclientData uintptr
 38290  	}{})); i++ {
 38291  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 38292  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 38293  	}
 38294  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 38295  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 38296  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 38297  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 38298  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 38299  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 38300  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 38301  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 38302  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 38303  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 38304  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 38305  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 38306  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 38307  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 38308  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 38309  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 38310  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 38311  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 38312  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 38313  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 38314  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 38315  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 38316  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 38317  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 38318  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 38319  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 38320  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 38321  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38322  	{
 38323  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 38324  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38325  
 38326  	}
 38327  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 38328  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 38329  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 38330  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 38331  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 38332  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 38333  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 38334  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 38335  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 38336  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 38337  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 38338  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38339  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 38340  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38341  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 38342  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 38343  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 38344  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 38345  	return TCL_OK
 38346  }
 38347  
 38348  var iZero int32 = 0
 38349  var aCmd1 = [39]struct {
 38350  	FzName uintptr
 38351  	FxProc uintptr
 38352  }{
 38353  	{FzName: ts + 20074, FxProc: 0},
 38354  	{FzName: ts + 20083, FxProc: 0},
 38355  	{FzName: ts + 20092, FxProc: 0},
 38356  	{FzName: ts + 20112, FxProc: 0},
 38357  	{FzName: ts + 20134, FxProc: 0},
 38358  	{FzName: ts + 20155, FxProc: 0},
 38359  	{FzName: ts + 20175, FxProc: 0},
 38360  	{FzName: ts + 20196, FxProc: 0},
 38361  	{FzName: ts + 20220, FxProc: 0},
 38362  	{FzName: ts + 20243, FxProc: 0},
 38363  	{FzName: ts + 20266, FxProc: 0},
 38364  	{FzName: ts + 20292, FxProc: 0},
 38365  	{FzName: ts + 20315, FxProc: 0},
 38366  	{FzName: ts + 20338, FxProc: 0},
 38367  	{FzName: ts + 20359, FxProc: 0},
 38368  	{FzName: ts + 20385, FxProc: 0},
 38369  	{FzName: ts + 20405, FxProc: 0},
 38370  	{FzName: ts + 20422, FxProc: 0},
 38371  	{FzName: ts + 20435, FxProc: 0},
 38372  	{FzName: ts + 20451, FxProc: 0},
 38373  	{FzName: ts + 20476, FxProc: 0},
 38374  	{FzName: ts + 20490, FxProc: 0},
 38375  	{FzName: ts + 20507, FxProc: 0},
 38376  	{FzName: ts + 20531, FxProc: 0},
 38377  	{FzName: ts + 20556, FxProc: 0},
 38378  	{FzName: ts + 20577, FxProc: 0},
 38379  	{FzName: ts + 20607, FxProc: 0},
 38380  	{FzName: ts + 20620, FxProc: 0},
 38381  	{FzName: ts + 20632, FxProc: 0},
 38382  	{FzName: ts + 20643, FxProc: 0},
 38383  	{FzName: ts + 20655, FxProc: 0},
 38384  	{FzName: ts + 20669, FxProc: 0},
 38385  	{FzName: ts + 20687, FxProc: 0},
 38386  	{FzName: ts + 20710, FxProc: 0},
 38387  	{FzName: ts + 20734, FxProc: 0},
 38388  	{FzName: ts + 20757, FxProc: 0},
 38389  	{FzName: ts + 20778, FxProc: 0},
 38390  	{FzName: ts + 20785, FxProc: 0},
 38391  	{FzName: ts + 20800, FxProc: 0},
 38392  }
 38393  var aObjCmd1 = [165]struct {
 38394  	FzName      uintptr
 38395  	FxProc      uintptr
 38396  	FclientData uintptr
 38397  }{
 38398  	{FzName: ts + 20823, FxProc: 0},
 38399  	{FzName: ts + 20841, FxProc: 0},
 38400  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 38401  	{FzName: ts + 20872, FxProc: 0},
 38402  	{FzName: ts + 20893, FxProc: 0},
 38403  	{FzName: ts + 20920, FxProc: 0},
 38404  	{FzName: ts + 20934, FxProc: 0},
 38405  	{FzName: ts + 20950, FxProc: 0},
 38406  	{FzName: ts + 20967, FxProc: 0},
 38407  	{FzName: ts + 20982, FxProc: 0},
 38408  	{FzName: ts + 20999, FxProc: 0},
 38409  	{FzName: ts + 21021, FxProc: 0},
 38410  	{FzName: ts + 21045, FxProc: 0},
 38411  	{FzName: ts + 21064, FxProc: 0},
 38412  	{FzName: ts + 21084, FxProc: 0},
 38413  	{FzName: ts + 21102, FxProc: 0},
 38414  	{FzName: ts + 21120, FxProc: 0},
 38415  	{FzName: ts + 21140, FxProc: 0},
 38416  	{FzName: ts + 21158, FxProc: 0},
 38417  	{FzName: ts + 21189, FxProc: 0},
 38418  	{FzName: ts + 21223, FxProc: 0},
 38419  	{FzName: ts + 21243, FxProc: 0},
 38420  	{FzName: ts + 21272, FxProc: 0},
 38421  	{FzName: ts + 21300, FxProc: 0},
 38422  	{FzName: ts + 21329, FxProc: 0},
 38423  	{FzName: ts + 21352, FxProc: 0},
 38424  	{FzName: ts + 21366, FxProc: 0},
 38425  	{FzName: ts + 21382, FxProc: 0},
 38426  	{FzName: ts + 21407, FxProc: 0},
 38427  	{FzName: ts + 21422, FxProc: 0},
 38428  	{FzName: ts + 21443, FxProc: 0},
 38429  	{FzName: ts + 21460, FxProc: 0},
 38430  	{FzName: ts + 21473, FxProc: 0},
 38431  	{FzName: ts + 21488, FxProc: 0},
 38432  	{FzName: ts + 21504, FxProc: 0},
 38433  	{FzName: ts + 21523, FxProc: 0},
 38434  	{FzName: ts + 21541, FxProc: 0},
 38435  	{FzName: ts + 21557, FxProc: 0},
 38436  	{FzName: ts + 21575, FxProc: 0},
 38437  	{FzName: ts + 21594, FxProc: 0},
 38438  	{FzName: ts + 21613, FxProc: 0},
 38439  	{FzName: ts + 21637, FxProc: 0},
 38440  	{FzName: ts + 21658, FxProc: 0},
 38441  	{FzName: ts + 21675, FxProc: 0},
 38442  	{FzName: ts + 21695, FxProc: 0},
 38443  	{FzName: ts + 21709, FxProc: 0},
 38444  	{FzName: ts + 21725, FxProc: 0},
 38445  	{FzName: ts + 21751, FxProc: 0},
 38446  	{FzName: ts + 21767, FxProc: 0},
 38447  	{FzName: ts + 21780, FxProc: 0},
 38448  	{FzName: ts + 21792, FxProc: 0},
 38449  	{FzName: ts + 21813, FxProc: 0},
 38450  	{FzName: ts + 21831, FxProc: 0},
 38451  	{FzName: ts + 21853, FxProc: 0},
 38452  	{FzName: ts + 21876, FxProc: 0},
 38453  	{FzName: ts + 21894, FxProc: 0},
 38454  	{FzName: ts + 21912, FxProc: 0},
 38455  	{FzName: ts + 21935, FxProc: 0},
 38456  	{FzName: ts + 21961, FxProc: 0},
 38457  	{FzName: ts + 21983, FxProc: 0},
 38458  	{FzName: ts + 22004, FxProc: 0},
 38459  	{FzName: ts + 22024, FxProc: 0},
 38460  	{FzName: ts + 22044, FxProc: 0},
 38461  	{FzName: ts + 22068, FxProc: 0},
 38462  	{FzName: ts + 22094, FxProc: 0},
 38463  	{FzName: ts + 22120, FxProc: 0},
 38464  	{FzName: ts + 22143, FxProc: 0},
 38465  	{FzName: ts + 22167, FxProc: 0},
 38466  	{FzName: ts + 22190, FxProc: 0},
 38467  	{FzName: ts + 22220, FxProc: 0},
 38468  	{FzName: ts + 22250, FxProc: 0},
 38469  	{FzName: ts + 22264, FxProc: 0},
 38470  	{FzName: ts + 22292, FxProc: 0},
 38471  	{FzName: ts + 22308, FxProc: 0},
 38472  	{FzName: ts + 22327, FxProc: 0},
 38473  	{FzName: ts + 22344, FxProc: 0},
 38474  	{FzName: ts + 22354, FxProc: 0},
 38475  	{FzName: ts + 22374, FxProc: 0},
 38476  	{FzName: ts + 22397, FxProc: 0},
 38477  	{FzName: ts + 22421, FxProc: 0},
 38478  	{FzName: ts + 22442, FxProc: 0},
 38479  	{FzName: ts + 22454, FxProc: 0},
 38480  	{FzName: ts + 22475, FxProc: 0},
 38481  	{FzName: ts + 22494, FxProc: 0},
 38482  	{FzName: ts + 22514, FxProc: 0},
 38483  	{FzName: ts + 22534, FxProc: 0},
 38484  	{FzName: ts + 22556, FxProc: 0},
 38485  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 38486  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 38487  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 38488  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 38489  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 38490  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 38491  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 38492  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 38493  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 38494  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 38495  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 38496  	{FzName: ts + 22830, FxProc: 0},
 38497  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 38498  	{FzName: ts + 22886,
 38499  		FxProc: 0, FclientData: 0},
 38500  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 38501  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 38502  	{FzName: ts + 22974, FxProc: 0},
 38503  	{FzName: ts + 23002, FxProc: 0},
 38504  	{FzName: ts + 23025, FxProc: 0},
 38505  	{FzName: ts + 23043, FxProc: 0},
 38506  	{FzName: ts + 23059, FxProc: 0},
 38507  	{FzName: ts + 23077, FxProc: 0},
 38508  	{FzName: ts + 23096, FxProc: 0},
 38509  	{FzName: ts + 23115, FxProc: 0},
 38510  	{FzName: ts + 23133, FxProc: 0},
 38511  	{FzName: ts + 23161, FxProc: 0},
 38512  	{FzName: ts + 23189, FxProc: 0},
 38513  	{FzName: ts + 23217, FxProc: 0},
 38514  	{FzName: ts + 23244, FxProc: 0},
 38515  	{FzName: ts + 23270, FxProc: 0},
 38516  	{FzName: ts + 23295, FxProc: 0},
 38517  	{FzName: ts + 23328, FxProc: 0},
 38518  	{FzName: ts + 23349, FxProc: 0},
 38519  	{FzName: ts + 23375, FxProc: 0},
 38520  	{FzName: ts + 23401, FxProc: 0},
 38521  	{FzName: ts + 23430, FxProc: 0},
 38522  	{FzName: ts + 23447, FxProc: 0},
 38523  	{FzName: ts + 23474, FxProc: 0},
 38524  	{FzName: ts + 23491, FxProc: 0},
 38525  	{FzName: ts + 23515, FxProc: 0},
 38526  	{FzName: ts + 23533, FxProc: 0},
 38527  	{FzName: ts + 23559, FxProc: 0},
 38528  	{FzName: ts + 23579, FxProc: 0},
 38529  	{FzName: ts + 23597, FxProc: 0},
 38530  	{FzName: ts + 23625, FxProc: 0},
 38531  	{FzName: ts + 23653, FxProc: 0},
 38532  	{FzName: ts + 23679, FxProc: 0},
 38533  	{FzName: ts + 23709, FxProc: 0},
 38534  	{FzName: ts + 23729, FxProc: 0},
 38535  	{FzName: ts + 23742, FxProc: 0},
 38536  	{FzName: ts + 23764, FxProc: 0},
 38537  	{FzName: ts + 23787, FxProc: 0},
 38538  	{FzName: ts + 23813, FxProc: 0},
 38539  	{FzName: ts + 23840, FxProc: 0},
 38540  	{FzName: ts + 23857, FxProc: 0},
 38541  	{FzName: ts + 23882, FxProc: 0},
 38542  	{FzName: ts + 23903, FxProc: 0},
 38543  	{FzName: ts + 23913, FxProc: 0},
 38544  	{FzName: ts + 23935, FxProc: 0},
 38545  	{FzName: ts + 23956, FxProc: 0},
 38546  	{FzName: ts + 23981, FxProc: 0},
 38547  	{FzName: ts + 24004, FxProc: 0},
 38548  	{FzName: ts + 24025, FxProc: 0},
 38549  	{FzName: ts + 24047, FxProc: 0},
 38550  	{FzName: ts + 24069, FxProc: 0},
 38551  	{FzName: ts + 24090, FxProc: 0},
 38552  	{FzName: ts + 24115, FxProc: 0},
 38553  	{FzName: ts + 24141, FxProc: 0},
 38554  	{FzName: ts + 24168, FxProc: 0},
 38555  	{FzName: ts + 24194, FxProc: 0},
 38556  	{FzName: ts + 24218, FxProc: 0},
 38557  	{FzName: ts + 24237, FxProc: 0},
 38558  	{FzName: ts + 24255, FxProc: 0},
 38559  	{FzName: ts + 24280, FxProc: 0},
 38560  	{FzName: ts + 24305, FxProc: 0},
 38561  	{FzName: ts + 24318, FxProc: 0},
 38562  	{FzName: ts + 24332, FxProc: 0},
 38563  	{FzName: ts + 24358, FxProc: 0},
 38564  }
 38565  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 38566  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 38567  var query_plan uintptr = ts + 24386
 38568  
 38569  var test_pagesize int32 = 1024
 38570  
 38571  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 38572  	return
 38573  }
 38574  
 38575  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38576  	bp := tls.Alloc(192)
 38577  	defer tls.Free(192)
 38578  
 38579  	var rc int32
 38580  
 38581  	if argc != 3 {
 38582  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38583  			ts+24412, 0))
 38584  		return TCL_ERROR
 38585  	}
 38586  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 38587  		return TCL_ERROR
 38588  	}
 38589  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 38590  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 38591  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 38592  	if rc != SQLITE_OK {
 38593  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38594  		return TCL_ERROR
 38595  	}
 38596  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 38597  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 38598  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 38599  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 38600  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 38601  	return TCL_OK
 38602  }
 38603  
 38604  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38605  	bp := tls.Alloc(48)
 38606  	defer tls.Free(48)
 38607  
 38608  	var pPager uintptr
 38609  	var rc int32
 38610  	if argc != 2 {
 38611  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38612  			ts+24430, 0))
 38613  		return TCL_ERROR
 38614  	}
 38615  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38616  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 38617  	if rc != SQLITE_OK {
 38618  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38619  		return TCL_ERROR
 38620  	}
 38621  	return TCL_OK
 38622  }
 38623  
 38624  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38625  	bp := tls.Alloc(48)
 38626  	defer tls.Free(48)
 38627  
 38628  	var pPager uintptr
 38629  	var rc int32
 38630  	if argc != 2 {
 38631  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38632  			ts+24430, 0))
 38633  		return TCL_ERROR
 38634  	}
 38635  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38636  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 38637  	if rc != SQLITE_OK {
 38638  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38639  		return TCL_ERROR
 38640  	}
 38641  	return TCL_OK
 38642  }
 38643  
 38644  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38645  	bp := tls.Alloc(64)
 38646  	defer tls.Free(64)
 38647  
 38648  	var pPager uintptr
 38649  	var rc int32
 38650  	if argc != 2 {
 38651  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38652  			ts+24430, 0))
 38653  		return TCL_ERROR
 38654  	}
 38655  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38656  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 38657  	if rc != SQLITE_OK {
 38658  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38659  		return TCL_ERROR
 38660  	}
 38661  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 38662  	if rc != SQLITE_OK {
 38663  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38664  		return TCL_ERROR
 38665  	}
 38666  	return TCL_OK
 38667  }
 38668  
 38669  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38670  	bp := tls.Alloc(48)
 38671  	defer tls.Free(48)
 38672  
 38673  	var pPager uintptr
 38674  	var rc int32
 38675  	if argc != 2 {
 38676  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38677  			ts+24430, 0))
 38678  		return TCL_ERROR
 38679  	}
 38680  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38681  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 38682  	if rc != SQLITE_OK {
 38683  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38684  		return TCL_ERROR
 38685  	}
 38686  	return TCL_OK
 38687  }
 38688  
 38689  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38690  	bp := tls.Alloc(48)
 38691  	defer tls.Free(48)
 38692  
 38693  	var pPager uintptr
 38694  	var rc int32
 38695  	if argc != 2 {
 38696  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38697  			ts+24430, 0))
 38698  		return TCL_ERROR
 38699  	}
 38700  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38701  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 38702  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 38703  	if rc != SQLITE_OK {
 38704  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38705  		return TCL_ERROR
 38706  	}
 38707  	return TCL_OK
 38708  }
 38709  
 38710  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38711  	bp := tls.Alloc(48)
 38712  	defer tls.Free(48)
 38713  
 38714  	var pPager uintptr
 38715  	var rc int32
 38716  	if argc != 2 {
 38717  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38718  			ts+24430, 0))
 38719  		return TCL_ERROR
 38720  	}
 38721  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38722  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 38723  	if rc != SQLITE_OK {
 38724  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38725  		return TCL_ERROR
 38726  	}
 38727  	return TCL_OK
 38728  }
 38729  
 38730  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38731  	bp := tls.Alloc(140)
 38732  	defer tls.Free(140)
 38733  
 38734  	var pPager uintptr
 38735  	var i int32
 38736  	var a uintptr
 38737  	if argc != 2 {
 38738  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38739  			ts+24430, 0))
 38740  		return TCL_ERROR
 38741  	}
 38742  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38743  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 38744  	for i = 0; i < 9; i++ {
 38745  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 38746  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 38747  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 38748  	}
 38749  	return TCL_OK
 38750  }
 38751  
 38752  var zName = [9]uintptr{
 38753  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 38754  	ts + 24448, ts + 24452, ts + 24457,
 38755  }
 38756  
 38757  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38758  	bp := tls.Alloc(160)
 38759  	defer tls.Free(160)
 38760  
 38761  	var pPager uintptr
 38762  
 38763  	if argc != 2 {
 38764  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38765  			ts+24430, 0))
 38766  		return TCL_ERROR
 38767  	}
 38768  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38769  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 38770  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 38771  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 38772  	return TCL_OK
 38773  }
 38774  
 38775  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38776  	bp := tls.Alloc(188)
 38777  	defer tls.Free(188)
 38778  
 38779  	var pPager uintptr
 38780  
 38781  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 38782  
 38783  	var rc int32
 38784  	if argc != 3 {
 38785  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38786  			ts+24462, 0))
 38787  		return TCL_ERROR
 38788  	}
 38789  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38790  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 38791  		return TCL_ERROR
 38792  	}
 38793  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 38794  	if rc == SQLITE_OK {
 38795  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 38796  	}
 38797  	if rc != SQLITE_OK {
 38798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38799  		return TCL_ERROR
 38800  	}
 38801  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 38802  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 38803  	return TCL_OK
 38804  }
 38805  
 38806  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38807  	bp := tls.Alloc(160)
 38808  	defer tls.Free(160)
 38809  
 38810  	var pPager uintptr
 38811  
 38812  	var pPage uintptr
 38813  
 38814  	if argc != 3 {
 38815  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38816  			ts+24462, 0))
 38817  		return TCL_ERROR
 38818  	}
 38819  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38820  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 38821  		return TCL_ERROR
 38822  	}
 38823  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 38824  	if pPage != 0 {
 38825  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 38826  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 38827  	}
 38828  	return TCL_OK
 38829  }
 38830  
 38831  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38832  	bp := tls.Alloc(36)
 38833  	defer tls.Free(36)
 38834  
 38835  	var pPager uintptr
 38836  
 38837  	if argc != 3 {
 38838  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38839  			ts+24462, 0))
 38840  		return TCL_ERROR
 38841  	}
 38842  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38843  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 38844  		return TCL_ERROR
 38845  	}
 38846  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 38847  	return TCL_OK
 38848  }
 38849  
 38850  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38851  	bp := tls.Alloc(32)
 38852  	defer tls.Free(32)
 38853  
 38854  	var pPage uintptr
 38855  	if argc != 2 {
 38856  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38857  			ts+24472, 0))
 38858  		return TCL_ERROR
 38859  	}
 38860  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38861  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 38862  	return TCL_OK
 38863  }
 38864  
 38865  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38866  	bp := tls.Alloc(148)
 38867  	defer tls.Free(148)
 38868  
 38869  	var pPage uintptr
 38870  	if argc != 2 {
 38871  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38872  			ts+24472, 0))
 38873  		return TCL_ERROR
 38874  	}
 38875  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38876  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]int8{})))
 38877  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 38878  	return TCL_OK
 38879  }
 38880  
 38881  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38882  	bp := tls.Alloc(156)
 38883  	defer tls.Free(156)
 38884  
 38885  	var pPage uintptr
 38886  	if argc != 2 {
 38887  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38888  			ts+24472, 0))
 38889  		return TCL_ERROR
 38890  	}
 38891  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38892  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 38893  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 38894  	return TCL_OK
 38895  }
 38896  
 38897  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38898  	bp := tls.Alloc(48)
 38899  	defer tls.Free(48)
 38900  
 38901  	var pPage uintptr
 38902  	var pData uintptr
 38903  	var rc int32
 38904  	if argc != 3 {
 38905  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38906  			ts+24479, 0))
 38907  		return TCL_ERROR
 38908  	}
 38909  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38910  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 38911  	if rc != SQLITE_OK {
 38912  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38913  		return TCL_ERROR
 38914  	}
 38915  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 38916  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1))
 38917  	*(*int8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = int8(0)
 38918  	return TCL_OK
 38919  }
 38920  
 38921  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38922  	bp := tls.Alloc(96)
 38923  	defer tls.Free(96)
 38924  
 38925  	var pVfs uintptr
 38926  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 38927  	var rc int32
 38928  
 38929  	var offset i64
 38930  	var zFile uintptr
 38931  	var nFile int32
 38932  	if argc != 3 {
 38933  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38934  			ts+24491, 0))
 38935  		return TCL_ERROR
 38936  	}
 38937  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 38938  		return TCL_ERROR
 38939  	}
 38940  
 38941  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 38942  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 38943  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 38944  	if zFile == uintptr(0) {
 38945  		return TCL_ERROR
 38946  	}
 38947  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1))
 38948  	*(*int8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = int8(0)
 38949  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 38950  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 38951  	if rc != 0 {
 38952  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38953  		sqlite3.Xsqlite3_free(tls, zFile)
 38954  		return TCL_ERROR
 38955  	}
 38956  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 38957  	offset = offset * int64(1024*1024)
 38958  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24524, 14, offset)
 38959  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 38960  	sqlite3.Xsqlite3_free(tls, zFile)
 38961  	if rc != 0 {
 38962  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38963  		return TCL_ERROR
 38964  	}
 38965  	return TCL_OK
 38966  }
 38967  
 38968  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38969  	bp := tls.Alloc(44)
 38970  	defer tls.Free(44)
 38971  
 38972  	var rc int32
 38973  	if argc != 2 {
 38974  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38975  			ts+24553, uintptr(0)))
 38976  		return TCL_ERROR
 38977  	}
 38978  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 38979  		return TCL_ERROR
 38980  	}
 38981  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 38982  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38983  	return TCL_OK
 38984  }
 38985  
 38986  var faultSimInterp uintptr = uintptr(0)
 38987  var faultSimScriptSize int32 = 0
 38988  var faultSimScript uintptr
 38989  
 38990  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 38991  	bp := tls.Alloc(38)
 38992  	defer tls.Free(38)
 38993  
 38994  	var i int32
 38995  	var isNeg int32
 38996  	var rc int32
 38997  	if x == 0 {
 38998  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2))
 38999  	} else {
 39000  		if x < 0 {
 39001  			isNeg = 1
 39002  			x = -x
 39003  		} else {
 39004  			isNeg = 0
 39005  		}
 39006  		*(*int8)(unsafe.Pointer(bp + 8 + 29)) = int8(0)
 39007  		i = int32(uint64(unsafe.Sizeof([30]int8{})) - uint64(2))
 39008  	__1:
 39009  		if !(i > 0 && x > 0) {
 39010  			goto __3
 39011  		}
 39012  		{
 39013  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8(x%10 + '0')
 39014  
 39015  		}
 39016  		goto __2
 39017  	__2:
 39018  		i--
 39019  		x = x / 10
 39020  		goto __1
 39021  		goto __3
 39022  	__3:
 39023  		;
 39024  		if isNeg != 0 {
 39025  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = int8('-')
 39026  		}
 39027  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]int8{}))-uint64(i))
 39028  	}
 39029  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 39030  	if rc != 0 {
 39031  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+24568, libc.VaList(bp, faultSimScript))
 39032  		rc = SQLITE_ERROR
 39033  	} else {
 39034  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 39035  	}
 39036  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 39037  	return rc
 39038  }
 39039  
 39040  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39041  	bp := tls.Alloc(64)
 39042  	defer tls.Free(64)
 39043  
 39044  	var zScript uintptr
 39045  	var nScript int32
 39046  	var rc int32
 39047  	if argc != 1 && argc != 2 {
 39048  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39049  			ts+24604, uintptr(0)))
 39050  	}
 39051  	if argc == 2 {
 39052  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 39053  	} else {
 39054  		zScript = ts + 584
 39055  	}
 39056  	nScript = int32(libc.Xstrlen(tls, zScript))
 39057  	if faultSimScript != 0 {
 39058  		libc.Xfree(tls, faultSimScript)
 39059  		faultSimScript = uintptr(0)
 39060  	}
 39061  	if nScript == 0 {
 39062  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 39063  	} else {
 39064  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 39065  		if faultSimScript == uintptr(0) {
 39066  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 39067  			return SQLITE_ERROR
 39068  		}
 39069  		libc.Xmemcpy(tls, faultSimScript, zScript, uint64(nScript))
 39070  		*(*int8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = int8(' ')
 39071  		faultSimScriptSize = nScript + 1
 39072  		faultSimInterp = interp
 39073  		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}))))
 39074  	}
 39075  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39076  	return SQLITE_OK
 39077  }
 39078  
 39079  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39080  	bp := tls.Alloc(452)
 39081  	defer tls.Free(452)
 39082  
 39083  	var rc int32
 39084  	var nProg int32 = 0
 39085  
 39086  	var z uintptr
 39087  	if argc != 3 {
 39088  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39089  			ts+24613, uintptr(0)))
 39090  	}
 39091  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 39092  		return TCL_ERROR
 39093  	}
 39094  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 39095  	for nProg < 99 && *(*int8)(unsafe.Pointer(z)) != 0 {
 39096  		for *(*int8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0) {
 39097  			z++
 39098  		}
 39099  		if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 39100  			break
 39101  		}
 39102  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 39103  		for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 39104  			z++
 39105  		}
 39106  	}
 39107  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 39108  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 39109  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39110  	return TCL_OK
 39111  }
 39112  
 39113  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 39114  	var i int32
 39115  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 39116  		FzName uintptr
 39117  		FxProc uintptr
 39118  	}{})); i++ {
 39119  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 39120  	}
 39121  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 39122  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 39123  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 39124  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 39125  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 39126  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 39127  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 39128  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 39129  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 39130  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 39131  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 39132  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 39133  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 39134  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39135  	return TCL_OK
 39136  }
 39137  
 39138  var aCmd2 = [20]struct {
 39139  	FzName uintptr
 39140  	FxProc uintptr
 39141  }{
 39142  	{FzName: ts + 24780, FxProc: 0},
 39143  	{FzName: ts + 24791, FxProc: 0},
 39144  	{FzName: ts + 24803, FxProc: 0},
 39145  	{FzName: ts + 24816, FxProc: 0},
 39146  	{FzName: ts + 24831, FxProc: 0},
 39147  	{FzName: ts + 24848, FxProc: 0},
 39148  	{FzName: ts + 24866, FxProc: 0},
 39149  	{FzName: ts + 24886, FxProc: 0},
 39150  	{FzName: ts + 24898, FxProc: 0},
 39151  	{FzName: ts + 24914, FxProc: 0},
 39152  	{FzName: ts + 24923, FxProc: 0},
 39153  	{FzName: ts + 24935, FxProc: 0},
 39154  	{FzName: ts + 24946, FxProc: 0},
 39155  	{FzName: ts + 24956, FxProc: 0},
 39156  	{FzName: ts + 24967, FxProc: 0},
 39157  	{FzName: ts + 24979, FxProc: 0},
 39158  	{FzName: ts + 24994, FxProc: 0},
 39159  	{FzName: ts + 25008, FxProc: 0},
 39160  	{FzName: ts + 25033, FxProc: 0},
 39161  	{FzName: ts + 25067, FxProc: 0},
 39162  }
 39163  
 39164  type Btree = Btree1
 39165  type BtCursor = BtCursor1
 39166  type BtShared = BtShared1
 39167  
 39168  type MemPage1 = struct {
 39169  	FisInit          u8
 39170  	FintKey          u8
 39171  	FintKeyLeaf      u8
 39172  	F__ccgo_pad1     [1]byte
 39173  	Fpgno            Pgno
 39174  	Fleaf            u8
 39175  	FhdrOffset       u8
 39176  	FchildPtrSize    u8
 39177  	Fmax1bytePayload u8
 39178  	FnOverflow       u8
 39179  	F__ccgo_pad2     [1]byte
 39180  	FmaxLocal        u16
 39181  	FminLocal        u16
 39182  	FcellOffset      u16
 39183  	FnFree           int32
 39184  	FnCell           u16
 39185  	FmaskPage        u16
 39186  	FaiOvfl          [4]u16
 39187  	F__ccgo_pad3     [4]byte
 39188  	FapOvfl          [4]uintptr
 39189  	FpBt             uintptr
 39190  	FaData           uintptr
 39191  	FaDataEnd        uintptr
 39192  	FaCellIdx        uintptr
 39193  	FaDataOfst       uintptr
 39194  	FpDbPage         uintptr
 39195  	FxCellSize       uintptr
 39196  	FxParseCell      uintptr
 39197  }
 39198  
 39199  type MemPage = MemPage1
 39200  type BtLock1 = struct {
 39201  	FpBtree      uintptr
 39202  	FiTable      Pgno
 39203  	FeLock       u8
 39204  	F__ccgo_pad1 [3]byte
 39205  	FpNext       uintptr
 39206  }
 39207  
 39208  type BtLock = BtLock1
 39209  type CellInfo1 = struct {
 39210  	FnKey     i64
 39211  	FpPayload uintptr
 39212  	FnPayload u32
 39213  	FnLocal   u16
 39214  	FnSize    u16
 39215  }
 39216  
 39217  type CellInfo = CellInfo1
 39218  
 39219  type IntegrityCk1 = struct {
 39220  	FpBt       uintptr
 39221  	FpPager    uintptr
 39222  	FaPgRef    uintptr
 39223  	FnPage     Pgno
 39224  	FmxErr     int32
 39225  	FnErr      int32
 39226  	FbOomFault int32
 39227  	FzPfx      uintptr
 39228  	Fv1        Pgno
 39229  	Fv2        int32
 39230  	FerrMsg    StrAccum
 39231  	Fheap      uintptr
 39232  	Fdb        uintptr
 39233  }
 39234  
 39235  type IntegrityCk = IntegrityCk1
 39236  
 39237  var sDb sqlite31
 39238  var nRefSqlite3 int32 = 0
 39239  
 39240  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39241  	bp := tls.Alloc(188)
 39242  	defer tls.Free(188)
 39243  
 39244  	var rc int32
 39245  
 39246  	var n int32
 39247  	var zFilename uintptr
 39248  	if argc != 3 {
 39249  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39250  			ts+25102, 0))
 39251  		return TCL_ERROR
 39252  	}
 39253  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39254  		return TCL_ERROR
 39255  	}
 39256  	nRefSqlite3++
 39257  	if nRefSqlite3 == 1 {
 39258  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39259  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 39260  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 39261  	}
 39262  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 39263  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 39264  	if zFilename == uintptr(0) {
 39265  		return TCL_ERROR
 39266  	}
 39267  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1))
 39268  	*(*int8)(unsafe.Pointer(zFilename + uintptr(n+1))) = int8(0)
 39269  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 39270  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 39271  	sqlite3.Xsqlite3_free(tls, zFilename)
 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  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39277  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39278  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39279  	return TCL_OK
 39280  }
 39281  
 39282  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39283  	bp := tls.Alloc(48)
 39284  	defer tls.Free(48)
 39285  
 39286  	var pBt uintptr
 39287  	var rc int32
 39288  	if argc != 2 {
 39289  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39290  			ts+24430, 0))
 39291  		return TCL_ERROR
 39292  	}
 39293  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39294  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 39295  	if rc != SQLITE_OK {
 39296  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39297  		return TCL_ERROR
 39298  	}
 39299  	nRefSqlite3--
 39300  	if nRefSqlite3 == 0 {
 39301  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 39302  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 39303  		sDb.Fmutex = uintptr(0)
 39304  		sDb.FpVfs = uintptr(0)
 39305  	}
 39306  	return TCL_OK
 39307  }
 39308  
 39309  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39310  	bp := tls.Alloc(48)
 39311  	defer tls.Free(48)
 39312  
 39313  	var pBt uintptr
 39314  	var rc int32
 39315  	if argc != 2 {
 39316  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39317  			ts+24430, 0))
 39318  		return TCL_ERROR
 39319  	}
 39320  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39321  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39322  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 39323  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39324  	if rc != SQLITE_OK {
 39325  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39326  		return TCL_ERROR
 39327  	}
 39328  	return TCL_OK
 39329  }
 39330  
 39331  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39332  	bp := tls.Alloc(140)
 39333  	defer tls.Free(140)
 39334  
 39335  	var pBt uintptr
 39336  	var i int32
 39337  	var a uintptr
 39338  
 39339  	if argc != 2 {
 39340  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39341  			ts+24430, 0))
 39342  		return TCL_ERROR
 39343  	}
 39344  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39345  
 39346  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39347  
 39348  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39349  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 39350  	for i = 0; i < 11; i++ {
 39351  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 39352  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39353  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39354  	}
 39355  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39356  
 39357  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39358  	return TCL_OK
 39359  }
 39360  
 39361  var zName1 = [11]uintptr{
 39362  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39363  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 39364  }
 39365  
 39366  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39367  	bp := tls.Alloc(110)
 39368  	defer tls.Free(110)
 39369  
 39370  	var pBt uintptr
 39371  
 39372  	var pCur uintptr
 39373  	var rc int32 = SQLITE_OK
 39374  
 39375  	if argc != 4 {
 39376  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39377  			ts+25137, 0))
 39378  		return TCL_ERROR
 39379  	}
 39380  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39381  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39382  		return TCL_ERROR
 39383  	}
 39384  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 39385  		return TCL_ERROR
 39386  	}
 39387  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 39388  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 39389  	}
 39390  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39391  	libc.Xmemset(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39392  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39393  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39394  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 39395  	if rc == SQLITE_OK {
 39396  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 39397  	}
 39398  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39399  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39400  	if rc != 0 {
 39401  		tcl.XTcl_Free(tls, pCur)
 39402  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39403  		return TCL_ERROR
 39404  	}
 39405  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 39406  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 39407  	return SQLITE_OK
 39408  }
 39409  
 39410  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39411  	bp := tls.Alloc(48)
 39412  	defer tls.Free(48)
 39413  
 39414  	var pCur uintptr
 39415  	var rc int32
 39416  
 39417  	if argc != 2 {
 39418  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39419  			ts+24430, 0))
 39420  		return TCL_ERROR
 39421  	}
 39422  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39423  	{
 39424  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 39425  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39426  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39427  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 39428  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39429  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39430  
 39431  	}
 39432  	tcl.XTcl_Free(tls, pCur)
 39433  	if rc != 0 {
 39434  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39435  		return TCL_ERROR
 39436  	}
 39437  	return SQLITE_OK
 39438  }
 39439  
 39440  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39441  	bp := tls.Alloc(172)
 39442  	defer tls.Free(172)
 39443  
 39444  	var pCur uintptr
 39445  	var rc int32
 39446  	var res int32 = 0
 39447  
 39448  	if argc != 2 {
 39449  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39450  			ts+24430, 0))
 39451  		return TCL_ERROR
 39452  	}
 39453  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39454  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39455  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 39456  	if rc == SQLITE_DONE {
 39457  		res = 1
 39458  		rc = SQLITE_OK
 39459  	}
 39460  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39461  	if rc != 0 {
 39462  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39463  		return TCL_ERROR
 39464  	}
 39465  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 39466  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 39467  	return SQLITE_OK
 39468  }
 39469  
 39470  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39471  	bp := tls.Alloc(176)
 39472  	defer tls.Free(176)
 39473  
 39474  	var pCur uintptr
 39475  	var rc int32
 39476  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 39477  
 39478  	if argc != 2 {
 39479  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39480  			ts+24430, 0))
 39481  		return TCL_ERROR
 39482  	}
 39483  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39484  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39485  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 39486  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39487  	if rc != 0 {
 39488  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39489  		return TCL_ERROR
 39490  	}
 39491  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 39492  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 39493  	return SQLITE_OK
 39494  }
 39495  
 39496  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39497  	bp := tls.Alloc(106)
 39498  	defer tls.Free(106)
 39499  
 39500  	var pCur uintptr
 39501  	var rc int32
 39502  
 39503  	if argc != 2 {
 39504  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39505  			ts+24430, 0))
 39506  		return TCL_ERROR
 39507  	}
 39508  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39509  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39510  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 39511  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39512  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 39513  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39514  	return SQLITE_OK
 39515  }
 39516  
 39517  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39518  	bp := tls.Alloc(106)
 39519  	defer tls.Free(106)
 39520  
 39521  	var pCur uintptr
 39522  	var n u32
 39523  
 39524  	if argc != 2 {
 39525  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39526  			ts+24430, 0))
 39527  		return TCL_ERROR
 39528  	}
 39529  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39530  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39531  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 39532  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39533  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 39534  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39535  	return SQLITE_OK
 39536  }
 39537  
 39538  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39539  	bp := tls.Alloc(516)
 39540  	defer tls.Free(516)
 39541  
 39542  	var in u64
 39543  
 39544  	var n1 int32
 39545  	var n2 int32
 39546  	var i int32
 39547  	var j int32
 39548  
 39549  	if argc != 5 {
 39550  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39551  			ts+25161, 0))
 39552  		return TCL_ERROR
 39553  	}
 39554  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 39555  		return TCL_ERROR
 39556  	}
 39557  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 39558  		return TCL_ERROR
 39559  	}
 39560  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 39561  		return TCL_ERROR
 39562  	}
 39563  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 39564  		return TCL_ERROR
 39565  	}
 39566  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 39567  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 39568  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 39569  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 39570  		if n1 > 9 || n1 < 1 {
 39571  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39572  				ts+25196, libc.VaList(bp+32, n1))
 39573  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 39574  			return TCL_ERROR
 39575  		}
 39576  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 39577  		if n1 != n2 {
 39578  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39579  				ts+25246, libc.VaList(bp+56, n1, n2))
 39580  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 39581  			return TCL_ERROR
 39582  		}
 39583  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 39584  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39585  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 39586  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 39587  			return TCL_ERROR
 39588  		}
 39589  		if in&uint64(0xffffffff) == in {
 39590  			n2 = int32(func() uint8 {
 39591  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 39592  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 39593  				}
 39594  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 39595  			}())
 39596  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 39597  			if n1 != n2 {
 39598  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39599  					ts+25333,
 39600  					libc.VaList(bp+120, n1, n2))
 39601  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 39602  				return TCL_ERROR
 39603  			}
 39604  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 39605  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39606  					ts+25383,
 39607  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 39608  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 39609  				return TCL_ERROR
 39610  			}
 39611  		}
 39612  
 39613  		for j = 0; j < 19; j++ {
 39614  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 39615  		}
 39616  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 39617  	}
 39618  	return TCL_OK
 39619  }
 39620  
 39621  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39622  	bp := tls.Alloc(236)
 39623  	defer tls.Free(236)
 39624  
 39625  	var db uintptr
 39626  	var pBt uintptr
 39627  	var iDb int32 = 0
 39628  
 39629  	if argc != 2 && argc != 3 {
 39630  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39631  			ts+25439, 0))
 39632  		return TCL_ERROR
 39633  	}
 39634  
 39635  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 39636  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 39637  		return TCL_ERROR
 39638  	}
 39639  	if argc == 3 {
 39640  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 39641  	}
 39642  
 39643  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 39644  
 39645  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 39646  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 39647  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 39648  	return TCL_OK
 39649  }
 39650  
 39651  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39652  	bp := tls.Alloc(32)
 39653  	defer tls.Free(32)
 39654  
 39655  	var pBt uintptr
 39656  	var res int32
 39657  	var pFile uintptr
 39658  
 39659  	if argc != 2 {
 39660  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39661  			ts+24430, 0))
 39662  		return TCL_ERROR
 39663  	}
 39664  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39665  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39666  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39667  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 39668  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 39669  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39670  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39671  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 39672  	return SQLITE_OK
 39673  }
 39674  
 39675  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39676  	bp := tls.Alloc(36)
 39677  	defer tls.Free(36)
 39678  
 39679  	var pBt uintptr
 39680  
 39681  	if argc != 3 {
 39682  		tcl.XTcl_AppendResult(tls,
 39683  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 39684  		return TCL_ERROR
 39685  	}
 39686  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39687  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 39688  		return TCL_ERROR
 39689  	}
 39690  
 39691  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39692  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39693  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 39694  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39695  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39696  	return TCL_OK
 39697  }
 39698  
 39699  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39700  	bp := tls.Alloc(68)
 39701  	defer tls.Free(68)
 39702  
 39703  	var pCur uintptr
 39704  
 39705  	if objc != 4 && objc != 3 {
 39706  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 39707  		return TCL_ERROR
 39708  	}
 39709  
 39710  	libc.Xmemset(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})))
 39711  	if objc == 4 {
 39712  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 39713  			return TCL_ERROR
 39714  		}
 39715  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 39716  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 39717  	} else {
 39718  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 39719  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 39720  	}
 39721  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 39722  
 39723  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 39724  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39725  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 39726  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39727  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 39728  
 39729  	tcl.XTcl_ResetResult(tls, interp)
 39730  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 39731  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 39732  		return TCL_ERROR
 39733  	}
 39734  	return TCL_OK
 39735  }
 39736  
 39737  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 39738  	var i int32
 39739  
 39740  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 39741  		FzName uintptr
 39742  		FxProc uintptr
 39743  	}{})); i++ {
 39744  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 39745  	}
 39746  
 39747  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 39748  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 39749  	}{btree_insert})), uintptr(0), uintptr(0))
 39750  
 39751  	return TCL_OK
 39752  }
 39753  
 39754  var aCmd3 = [14]struct {
 39755  	FzName uintptr
 39756  	FxProc uintptr
 39757  }{
 39758  	{FzName: ts + 25525, FxProc: 0},
 39759  	{FzName: ts + 25536, FxProc: 0},
 39760  	{FzName: ts + 25548, FxProc: 0},
 39761  	{FzName: ts + 25572, FxProc: 0},
 39762  	{FzName: ts + 25590, FxProc: 0},
 39763  	{FzName: ts + 25603, FxProc: 0},
 39764  	{FzName: ts + 25622, FxProc: 0},
 39765  	{FzName: ts + 25633, FxProc: 0},
 39766  	{FzName: ts + 25643, FxProc: 0},
 39767  	{FzName: ts + 25662, FxProc: 0},
 39768  	{FzName: ts + 25674, FxProc: 0},
 39769  	{FzName: ts + 25692, FxProc: 0},
 39770  	{FzName: ts + 25706, FxProc: 0},
 39771  	{FzName: ts + 25720, FxProc: 0},
 39772  }
 39773  
 39774  type sched_param = struct{ Fsched_priority int32 }
 39775  
 39776  type pthread_once = struct {
 39777  	Fstate       int32
 39778  	F__ccgo_pad1 [4]byte
 39779  	Fmutex       pthread_mutex_t
 39780  }
 39781  
 39782  type pthread_t = uintptr
 39783  type pthread_attr_t = uintptr
 39784  type pthread_mutex_t = uintptr
 39785  type pthread_mutexattr_t = uintptr
 39786  type pthread_cond_t = uintptr
 39787  type pthread_condattr_t = uintptr
 39788  type pthread_key_t = int32
 39789  type pthread_once_t = pthread_once
 39790  type pthread_rwlock_t = uintptr
 39791  type pthread_rwlockattr_t = uintptr
 39792  type pthread_barrier_t = uintptr
 39793  type pthread_barrierattr_t = uintptr
 39794  type pthread_spinlock_t = uintptr
 39795  
 39796  type pthread_addr_t = uintptr
 39797  type pthread_startroutine_t = uintptr
 39798  
 39799  type Thread = struct {
 39800  	FzFilename   uintptr
 39801  	FxOp         uintptr
 39802  	FzArg        uintptr
 39803  	Fopnum       int32
 39804  	Fbusy        int32
 39805  	Fcompleted   int32
 39806  	F__ccgo_pad1 [4]byte
 39807  	Fdb          uintptr
 39808  	FpStmt       uintptr
 39809  	FzErr        uintptr
 39810  	FzStaticErr  uintptr
 39811  	Frc          int32
 39812  	Fargc        int32
 39813  	Fargv        [100]uintptr
 39814  	Fcolv        [100]uintptr
 39815  }
 39816  
 39817  var threadset [26]Thread
 39818  
 39819  func test_barrier(tls *libc.TLS) {
 39820  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 39821  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 39822  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 39823  }
 39824  
 39825  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 39826  	var p uintptr = pArg
 39827  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 39828  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39829  	}
 39830  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 39831  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 39832  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 39833  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39834  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 39835  	}
 39836  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 39837  	test_barrier(tls)
 39838  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 39839  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39840  		libc.Xsched_yield(tls)
 39841  	}
 39842  	test_barrier(tls)
 39843  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 39844  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 39845  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 39846  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 39847  		}
 39848  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 39849  		test_barrier(tls)
 39850  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 39851  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39852  			libc.Xsched_yield(tls)
 39853  		}
 39854  		test_barrier(tls)
 39855  	}
 39856  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 39857  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 39858  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 39859  	}
 39860  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 39861  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39862  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 39863  	}
 39864  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 39865  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 39866  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 39867  	}
 39868  	test_barrier(tls)
 39869  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 39870  	sqlite3.Xsqlite3_thread_cleanup(tls)
 39871  	return uintptr(0)
 39872  }
 39873  
 39874  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 39875  	bp := tls.Alloc(16)
 39876  	defer tls.Free(16)
 39877  
 39878  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(libc.Xisupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 39879  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 39880  		return -1
 39881  	}
 39882  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 39883  }
 39884  
 39885  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39886  	bp := tls.Alloc(96)
 39887  	defer tls.Free(96)
 39888  
 39889  	var i int32
 39890  
 39891  	var rc int32
 39892  
 39893  	if argc != 3 {
 39894  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39895  			ts+25780, 0))
 39896  		return TCL_ERROR
 39897  	}
 39898  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39899  	if i < 0 {
 39900  		return TCL_ERROR
 39901  	}
 39902  	if threadset[i].Fbusy != 0 {
 39903  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 39904  		return TCL_ERROR
 39905  	}
 39906  	threadset[i].Fbusy = 1
 39907  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 39908  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 39909  	threadset[i].Fopnum = 1
 39910  	threadset[i].Fcompleted = 0
 39911  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 39912  		f func(*libc.TLS, uintptr) uintptr
 39913  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39914  	if rc != 0 {
 39915  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 39916  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 39917  		threadset[i].Fbusy = 0
 39918  		return TCL_ERROR
 39919  	}
 39920  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 39921  	return TCL_OK
 39922  }
 39923  
 39924  func test_thread_wait(tls *libc.TLS, p uintptr) {
 39925  	test_barrier(tls)
 39926  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39927  		libc.Xsched_yield(tls)
 39928  	}
 39929  	test_barrier(tls)
 39930  }
 39931  
 39932  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39933  	bp := tls.Alloc(48)
 39934  	defer tls.Free(48)
 39935  
 39936  	var i int32
 39937  
 39938  	if argc != 2 {
 39939  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39940  			ts+25849, 0))
 39941  		return TCL_ERROR
 39942  	}
 39943  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39944  	if i < 0 {
 39945  		return TCL_ERROR
 39946  	}
 39947  	if !(threadset[i].Fbusy != 0) {
 39948  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 39949  		return TCL_ERROR
 39950  	}
 39951  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39952  	return TCL_OK
 39953  }
 39954  
 39955  func test_stop_thread(tls *libc.TLS, p uintptr) {
 39956  	test_thread_wait(tls, p)
 39957  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 39958  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 39959  	test_thread_wait(tls, p)
 39960  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 39961  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 39962  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 39963  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 39964  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 39965  }
 39966  
 39967  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39968  	bp := tls.Alloc(48)
 39969  	defer tls.Free(48)
 39970  
 39971  	var i int32
 39972  
 39973  	if argc != 2 {
 39974  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39975  			ts+25849, 0))
 39976  		return TCL_ERROR
 39977  	}
 39978  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 39979  		for i = 0; i < N_THREAD; i++ {
 39980  			if threadset[i].Fbusy != 0 {
 39981  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39982  			}
 39983  		}
 39984  	} else {
 39985  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39986  		if i < 0 {
 39987  			return TCL_ERROR
 39988  		}
 39989  		if !(threadset[i].Fbusy != 0) {
 39990  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 39991  			return TCL_ERROR
 39992  		}
 39993  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39994  	}
 39995  	return TCL_OK
 39996  }
 39997  
 39998  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39999  	bp := tls.Alloc(172)
 40000  	defer tls.Free(172)
 40001  
 40002  	var i int32
 40003  
 40004  	if argc != 2 {
 40005  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40006  			ts+25849, 0))
 40007  		return TCL_ERROR
 40008  	}
 40009  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40010  	if i < 0 {
 40011  		return TCL_ERROR
 40012  	}
 40013  	if !(threadset[i].Fbusy != 0) {
 40014  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40015  		return TCL_ERROR
 40016  	}
 40017  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40018  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 40019  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40020  	return TCL_OK
 40021  }
 40022  
 40023  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40024  	bp := tls.Alloc(84)
 40025  	defer tls.Free(84)
 40026  
 40027  	var i int32
 40028  
 40029  	if argc != 3 {
 40030  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40031  			ts+25868, 0))
 40032  		return TCL_ERROR
 40033  	}
 40034  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40035  	if i < 0 {
 40036  		return TCL_ERROR
 40037  	}
 40038  	if !(threadset[i].Fbusy != 0) {
 40039  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40040  		return TCL_ERROR
 40041  	}
 40042  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40043  		return TCL_ERROR
 40044  	}
 40045  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40046  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40047  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40048  		return TCL_ERROR
 40049  	}
 40050  	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))
 40051  	return TCL_OK
 40052  }
 40053  
 40054  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40055  	bp := tls.Alloc(84)
 40056  	defer tls.Free(84)
 40057  
 40058  	var i int32
 40059  
 40060  	if argc != 3 {
 40061  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40062  			ts+25868, 0))
 40063  		return TCL_ERROR
 40064  	}
 40065  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40066  	if i < 0 {
 40067  		return TCL_ERROR
 40068  	}
 40069  	if !(threadset[i].Fbusy != 0) {
 40070  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40071  		return TCL_ERROR
 40072  	}
 40073  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40074  		return TCL_ERROR
 40075  	}
 40076  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40077  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40078  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40079  		return TCL_ERROR
 40080  	}
 40081  	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))
 40082  	return TCL_OK
 40083  }
 40084  
 40085  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40086  	bp := tls.Alloc(64)
 40087  	defer tls.Free(64)
 40088  
 40089  	var i int32
 40090  	var zName uintptr
 40091  
 40092  	if argc != 2 {
 40093  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40094  			ts+25849, 0))
 40095  		return TCL_ERROR
 40096  	}
 40097  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40098  	if i < 0 {
 40099  		return TCL_ERROR
 40100  	}
 40101  	if !(threadset[i].Fbusy != 0) {
 40102  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40103  		return TCL_ERROR
 40104  	}
 40105  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40106  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 40107  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 40108  	return TCL_OK
 40109  }
 40110  
 40111  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40112  	bp := tls.Alloc(64)
 40113  	defer tls.Free(64)
 40114  
 40115  	var i int32
 40116  
 40117  	if argc != 2 {
 40118  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40119  			ts+25849, 0))
 40120  		return TCL_ERROR
 40121  	}
 40122  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40123  	if i < 0 {
 40124  		return TCL_ERROR
 40125  	}
 40126  	if !(threadset[i].Fbusy != 0) {
 40127  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40128  		return TCL_ERROR
 40129  	}
 40130  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40131  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 40132  	return TCL_OK
 40133  }
 40134  
 40135  func do_compile(tls *libc.TLS, p uintptr) {
 40136  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 40137  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 40138  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40139  		return
 40140  	}
 40141  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40142  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40143  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40144  	}
 40145  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 40146  }
 40147  
 40148  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40149  	bp := tls.Alloc(56)
 40150  	defer tls.Free(56)
 40151  
 40152  	var i int32
 40153  	if argc != 3 {
 40154  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40155  			ts+25921, 0))
 40156  		return TCL_ERROR
 40157  	}
 40158  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40159  	if i < 0 {
 40160  		return TCL_ERROR
 40161  	}
 40162  	if !(threadset[i].Fbusy != 0) {
 40163  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40164  		return TCL_ERROR
 40165  	}
 40166  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40167  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 40168  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40169  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40170  	test_barrier(tls)
 40171  	threadset[i].Fopnum++
 40172  	return TCL_OK
 40173  }
 40174  
 40175  func do_step(tls *libc.TLS, p uintptr) {
 40176  	var i int32
 40177  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40178  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40179  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40180  		return
 40181  	}
 40182  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40183  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 40184  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40185  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 40186  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40187  		}
 40188  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 40189  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40190  		}
 40191  	}
 40192  }
 40193  
 40194  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40195  	bp := tls.Alloc(48)
 40196  	defer tls.Free(48)
 40197  
 40198  	var i int32
 40199  	if argc != 2 {
 40200  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40201  			ts+25958, 0))
 40202  		return TCL_ERROR
 40203  	}
 40204  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40205  	if i < 0 {
 40206  		return TCL_ERROR
 40207  	}
 40208  	if !(threadset[i].Fbusy != 0) {
 40209  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40210  		return TCL_ERROR
 40211  	}
 40212  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40213  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 40214  	test_barrier(tls)
 40215  	threadset[i].Fopnum++
 40216  	return TCL_OK
 40217  }
 40218  
 40219  func do_finalize(tls *libc.TLS, p uintptr) {
 40220  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40221  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40222  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40223  		return
 40224  	}
 40225  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40226  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40227  }
 40228  
 40229  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40230  	bp := tls.Alloc(48)
 40231  	defer tls.Free(48)
 40232  
 40233  	var i int32
 40234  	if argc != 2 {
 40235  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40236  			ts+25958, 0))
 40237  		return TCL_ERROR
 40238  	}
 40239  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40240  	if i < 0 {
 40241  		return TCL_ERROR
 40242  	}
 40243  	if !(threadset[i].Fbusy != 0) {
 40244  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40245  		return TCL_ERROR
 40246  	}
 40247  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40248  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 40249  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40250  	threadset[i].FzArg = uintptr(0)
 40251  	test_barrier(tls)
 40252  	threadset[i].Fopnum++
 40253  	return TCL_OK
 40254  }
 40255  
 40256  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40257  	bp := tls.Alloc(64)
 40258  	defer tls.Free(64)
 40259  
 40260  	var i int32
 40261  	var j int32
 40262  	var temp uintptr
 40263  	if argc != 3 {
 40264  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40265  			ts+25963, 0))
 40266  		return TCL_ERROR
 40267  	}
 40268  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40269  	if i < 0 {
 40270  		return TCL_ERROR
 40271  	}
 40272  	if !(threadset[i].Fbusy != 0) {
 40273  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40274  		return TCL_ERROR
 40275  	}
 40276  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40277  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40278  	if j < 0 {
 40279  		return TCL_ERROR
 40280  	}
 40281  	if !(threadset[j].Fbusy != 0) {
 40282  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 40283  		return TCL_ERROR
 40284  	}
 40285  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 40286  	temp = threadset[i].Fdb
 40287  	threadset[i].Fdb = threadset[j].Fdb
 40288  	threadset[j].Fdb = temp
 40289  	return TCL_OK
 40290  }
 40291  
 40292  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40293  	bp := tls.Alloc(164)
 40294  	defer tls.Free(164)
 40295  
 40296  	var i int32
 40297  
 40298  	if argc != 2 {
 40299  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40300  			ts+25849, 0))
 40301  		return TCL_ERROR
 40302  	}
 40303  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40304  	if i < 0 {
 40305  		return TCL_ERROR
 40306  	}
 40307  	if !(threadset[i].Fbusy != 0) {
 40308  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40309  		return TCL_ERROR
 40310  	}
 40311  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40312  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 40313  	threadset[i].Fdb = uintptr(0)
 40314  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40315  	return TCL_OK
 40316  }
 40317  
 40318  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40319  	bp := tls.Alloc(48)
 40320  	defer tls.Free(48)
 40321  
 40322  	var i int32
 40323  	if argc != 3 {
 40324  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40325  			ts+25972, 0))
 40326  		return TCL_ERROR
 40327  	}
 40328  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40329  	if i < 0 {
 40330  		return TCL_ERROR
 40331  	}
 40332  	if !(threadset[i].Fbusy != 0) {
 40333  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40334  		return TCL_ERROR
 40335  	}
 40336  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40337  
 40338  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40339  	return TCL_OK
 40340  }
 40341  
 40342  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40343  	bp := tls.Alloc(164)
 40344  	defer tls.Free(164)
 40345  
 40346  	var i int32
 40347  
 40348  	if argc != 2 {
 40349  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40350  			ts+25849, 0))
 40351  		return TCL_ERROR
 40352  	}
 40353  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40354  	if i < 0 {
 40355  		return TCL_ERROR
 40356  	}
 40357  	if !(threadset[i].Fbusy != 0) {
 40358  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40359  		return TCL_ERROR
 40360  	}
 40361  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40362  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 40363  	threadset[i].FpStmt = uintptr(0)
 40364  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40365  	return TCL_OK
 40366  }
 40367  
 40368  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 40369  	var i int32
 40370  
 40371  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 40372  		FzName uintptr
 40373  		FxProc uintptr
 40374  	}{})); i++ {
 40375  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 40376  	}
 40377  	return TCL_OK
 40378  }
 40379  
 40380  var aCmd4 = [15]struct {
 40381  	FzName uintptr
 40382  	FxProc uintptr
 40383  }{
 40384  	{FzName: ts + 25979, FxProc: 0},
 40385  	{FzName: ts + 25993, FxProc: 0},
 40386  	{FzName: ts + 26005, FxProc: 0},
 40387  	{FzName: ts + 26017, FxProc: 0},
 40388  	{FzName: ts + 26029, FxProc: 0},
 40389  	{FzName: ts + 26041, FxProc: 0},
 40390  	{FzName: ts + 26056, FxProc: 0},
 40391  	{FzName: ts + 26070, FxProc: 0},
 40392  	{FzName: ts + 26083, FxProc: 0},
 40393  	{FzName: ts + 26098, FxProc: 0},
 40394  	{FzName: ts + 26110, FxProc: 0},
 40395  	{FzName: ts + 26126, FxProc: 0},
 40396  	{FzName: ts + 26138, FxProc: 0},
 40397  	{FzName: ts + 26152, FxProc: 0},
 40398  	{FzName: ts + 26166, FxProc: 0},
 40399  }
 40400  
 40401  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40402  	bp := tls.Alloc(4)
 40403  	defer tls.Free(4)
 40404  
 40405  	var bytes uintptr
 40406  	var pRet uintptr
 40407  
 40408  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 40409  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 40410  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40411  	return TCL_OK
 40412  }
 40413  
 40414  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40415  	bp := tls.Alloc(96)
 40416  	defer tls.Free(96)
 40417  
 40418  	var i int32
 40419  
 40420  	if objc != 3 {
 40421  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40422  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 40423  		return TCL_ERROR
 40424  	}
 40425  
 40426  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 40427  		return TCL_ERROR
 40428  	}
 40429  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 40430  		return TCL_ERROR
 40431  	}
 40432  
 40433  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 40434  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 40435  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 40436  
 40437  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 40438  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 40439  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 40440  		}
 40441  	}
 40442  
 40443  	return TCL_OK
 40444  }
 40445  
 40446  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 40447  	bp := tls.Alloc(104)
 40448  	defer tls.Free(104)
 40449  
 40450  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 40451  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 40452  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 40453  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 40454  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 40455  		{},
 40456  	}
 40457  	var pEnc uintptr
 40458  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 40459  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 40460  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 40461  			break
 40462  		}
 40463  	}
 40464  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 40465  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 40466  	}
 40467  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 40468  		return u8(SQLITE_UTF16LE)
 40469  	}
 40470  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 40471  }
 40472  
 40473  type EncName = struct {
 40474  	FzName       uintptr
 40475  	Fenc         u8
 40476  	F__ccgo_pad1 [7]byte
 40477  }
 40478  
 40479  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40480  	bp := tls.Alloc(44)
 40481  	defer tls.Free(44)
 40482  
 40483  	var enc_from u8
 40484  	var enc_to u8
 40485  	var pVal uintptr
 40486  	var z uintptr
 40487  
 40488  	var xDel uintptr = uintptr(0)
 40489  
 40490  	if objc != 4 && objc != 5 {
 40491  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40492  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 40493  			ts+26267, 0))
 40494  		return TCL_ERROR
 40495  	}
 40496  	if objc == 5 {
 40497  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 40498  	}
 40499  
 40500  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40501  	if !(enc_from != 0) {
 40502  		return TCL_ERROR
 40503  	}
 40504  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 40505  	if !(enc_to != 0) {
 40506  		return TCL_ERROR
 40507  	}
 40508  
 40509  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 40510  
 40511  	if int32(enc_from) == SQLITE_UTF8 {
 40512  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 40513  		if objc == 5 {
 40514  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 40515  		}
 40516  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 40517  	} else {
 40518  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 40519  		if objc == 5 {
 40520  			var zTmp uintptr = z
 40521  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 40522  			libc.Xmemcpy(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))))
 40523  		}
 40524  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 40525  	}
 40526  
 40527  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 40528  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 40529  		if int32(enc_to) == SQLITE_UTF8 {
 40530  			return 1
 40531  		}
 40532  		return 2
 40533  	}()
 40534  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 40535  
 40536  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 40537  
 40538  	return TCL_OK
 40539  }
 40540  
 40541  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40542  	sqlite3.Xsqlite3UtfSelfTest(tls)
 40543  	return SQLITE_OK
 40544  }
 40545  
 40546  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 40547  	var i int32
 40548  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 40549  		FzName uintptr
 40550  		FxProc uintptr
 40551  	}{})); i++ {
 40552  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 40553  	}
 40554  	return SQLITE_OK
 40555  }
 40556  
 40557  var aCmd5 = [4]struct {
 40558  	FzName uintptr
 40559  	FxProc uintptr
 40560  }{
 40561  	{FzName: ts + 26302, FxProc: 0},
 40562  	{FzName: ts + 26311, FxProc: 0},
 40563  	{FzName: ts + 26331, FxProc: 0},
 40564  	{FzName: ts + 26346, FxProc: 0},
 40565  }
 40566  
 40567  type CrashFile1 = struct {
 40568  	FpMethod     uintptr
 40569  	FpRealFile   uintptr
 40570  	FzName       uintptr
 40571  	Fflags       int32
 40572  	F__ccgo_pad1 [4]byte
 40573  	FzData       uintptr
 40574  	FnData       int32
 40575  	F__ccgo_pad2 [4]byte
 40576  	FiSize       i64
 40577  }
 40578  
 40579  type CrashFile = CrashFile1
 40580  type CrashGlobal1 = struct {
 40581  	FpWriteList             uintptr
 40582  	FpWriteListEnd          uintptr
 40583  	FiSectorSize            int32
 40584  	FiDeviceCharacteristics int32
 40585  	FiCrash                 int32
 40586  	FzCrashFile             [500]int8
 40587  }
 40588  
 40589  type CrashGlobal = CrashGlobal1
 40590  type WriteBuffer1 = struct {
 40591  	FiOffset     i64
 40592  	FnBuf        int32
 40593  	F__ccgo_pad1 [4]byte
 40594  	FzBuf        uintptr
 40595  	FpFile       uintptr
 40596  	FpNext       uintptr
 40597  }
 40598  
 40599  type WriteBuffer = WriteBuffer1
 40600  
 40601  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 40602  
 40603  var sqlite3CrashTestEnable int32 = 0
 40604  
 40605  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 40606  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 40607  }
 40608  
 40609  func crash_free(tls *libc.TLS, p uintptr) {
 40610  	tcl.XTcl_Free(tls, p)
 40611  }
 40612  
 40613  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 40614  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 40615  }
 40616  
 40617  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 40618  	var rc int32 = SQLITE_OK
 40619  	var iSkip int32 = 0
 40620  	if iAmt-i64(iSkip) > int64(0) {
 40621  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 40622  	}
 40623  	return rc
 40624  }
 40625  
 40626  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 40627  	bp := tls.Alloc(16)
 40628  	defer tls.Free(16)
 40629  
 40630  	var rc int32 = SQLITE_OK
 40631  	var iDc int32 = g.FiDeviceCharacteristics
 40632  	var pWrite uintptr
 40633  	var ppPtr uintptr
 40634  
 40635  	var pFinal uintptr = uintptr(0)
 40636  	if !(isCrash != 0) {
 40637  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40638  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 40639  				pFinal = pWrite
 40640  			}
 40641  		}
 40642  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 40643  		var nWrite int32 = 0
 40644  
 40645  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40646  			nWrite++
 40647  		}
 40648  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 40649  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 40650  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 40651  				return -1 * *(*int32)(unsafe.Pointer(bp))
 40652  			}
 40653  			return *(*int32)(unsafe.Pointer(bp))
 40654  		}() % nWrite
 40655  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40656  			*(*int32)(unsafe.Pointer(bp))--
 40657  		}
 40658  		pFinal = pWrite
 40659  	}
 40660  
 40661  	ppPtr = uintptr(unsafe.Pointer(&g))
 40662  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 40663  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 40664  
 40665  		var eAction int32 = 0
 40666  		if !(isCrash != 0) {
 40667  			eAction = 2
 40668  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 40669  				eAction = 1
 40670  			}
 40671  		} else {
 40672  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 40673  
 40674  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 40675  				*(*int8)(unsafe.Pointer(bp + 4)) &= int8(0x01)
 40676  			}
 40677  
 40678  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 40679  				*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 40680  			}
 40681  
 40682  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 40683  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 40684  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 40685  					*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 40686  				}
 40687  			}
 40688  
 40689  			if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 40690  				eAction = 3
 40691  			} else {
 40692  				eAction = func() int32 {
 40693  					if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 40694  						return 2
 40695  					}
 40696  					return 1
 40697  				}()
 40698  			}
 40699  		}
 40700  
 40701  		switch eAction {
 40702  		case 1:
 40703  			{
 40704  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 40705  					rc = writeDbFile(tls,
 40706  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 40707  				} else {
 40708  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 40709  				}
 40710  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 40711  				crash_free(tls, pWrite)
 40712  				break
 40713  
 40714  			}
 40715  		case 2:
 40716  			{
 40717  				ppPtr = pWrite + 32
 40718  				break
 40719  
 40720  			}
 40721  		case 3:
 40722  			{
 40723  				var zGarbage uintptr
 40724  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 40725  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 40726  
 40727  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 40728  				if zGarbage != 0 {
 40729  					var i sqlite3_int64
 40730  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 40731  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 40732  						rc = writeDbFile(tls,
 40733  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 40734  					}
 40735  					crash_free(tls, zGarbage)
 40736  				} else {
 40737  					rc = SQLITE_NOMEM
 40738  				}
 40739  
 40740  				ppPtr = pWrite + 32
 40741  				break
 40742  
 40743  			}
 40744  
 40745  		default:
 40746  		}
 40747  
 40748  		if pWrite == pFinal {
 40749  			break
 40750  		}
 40751  	}
 40752  
 40753  	if rc == SQLITE_OK && isCrash != 0 {
 40754  		libc.Xexit(tls, -1)
 40755  	}
 40756  
 40757  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40758  	}
 40759  	g.FpWriteListEnd = pWrite
 40760  
 40761  	return rc
 40762  }
 40763  
 40764  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 40765  	var pNew uintptr
 40766  
 40767  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 40768  	if pNew == uintptr(0) {
 40769  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+26365, 0)
 40770  	}
 40771  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf))
 40772  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 40773  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 40774  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 40775  	if zBuf != 0 {
 40776  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 40777  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf))
 40778  	}
 40779  
 40780  	if g.FpWriteList != 0 {
 40781  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 40782  	} else {
 40783  		g.FpWriteList = pNew
 40784  	}
 40785  	g.FpWriteListEnd = pNew
 40786  
 40787  	return SQLITE_OK
 40788  }
 40789  
 40790  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 40791  	var pCrash uintptr = pFile
 40792  	writeListSync(tls, pCrash, 0)
 40793  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 40794  	return SQLITE_OK
 40795  }
 40796  
 40797  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 40798  	var pCrash uintptr = pFile
 40799  	var nCopy int32 = func() int32 {
 40800  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 40801  			return int32(i64(iAmt))
 40802  		}
 40803  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 40804  	}()
 40805  
 40806  	if nCopy > 0 {
 40807  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy))
 40808  	}
 40809  
 40810  	if nCopy < iAmt {
 40811  		return SQLITE_IOERR | int32(2)<<8
 40812  	}
 40813  
 40814  	return SQLITE_OK
 40815  }
 40816  
 40817  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 40818  	var pCrash uintptr = pFile
 40819  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 40820  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 40821  	}
 40822  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 40823  		var zNew uintptr
 40824  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 40825  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 40826  		if !(zNew != 0) {
 40827  			return SQLITE_NOMEM
 40828  		}
 40829  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 40830  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 40831  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 40832  	}
 40833  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt))
 40834  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 40835  }
 40836  
 40837  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 40838  	var pCrash uintptr = pFile
 40839  
 40840  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 40841  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 40842  	}
 40843  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 40844  }
 40845  
 40846  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 40847  	var pCrash uintptr = pFile
 40848  	var isCrash int32 = 0
 40849  
 40850  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 40851  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 40852  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 40853  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 40854  
 40855  	if nCrashFile > 0 && int32(*(*int8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 40856  		nCrashFile--
 40857  		if nName > nCrashFile {
 40858  			nName = nCrashFile
 40859  		}
 40860  	}
 40861  
 40862  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 40863  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 40864  			isCrash = 1
 40865  		}
 40866  	}
 40867  
 40868  	return writeListSync(tls, pCrash, isCrash)
 40869  }
 40870  
 40871  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 40872  	var pCrash uintptr = pFile
 40873  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 40874  	return SQLITE_OK
 40875  }
 40876  
 40877  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 40878  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 40879  }
 40880  
 40881  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 40882  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 40883  }
 40884  
 40885  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 40886  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 40887  }
 40888  
 40889  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 40890  	if op == SQLITE_FCNTL_SIZE_HINT {
 40891  		var pCrash uintptr = pFile
 40892  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 40893  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 40894  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 40895  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 40896  			}
 40897  		}
 40898  		return SQLITE_OK
 40899  	}
 40900  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 40901  }
 40902  
 40903  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 40904  	return g.FiSectorSize
 40905  }
 40906  
 40907  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 40908  	return g.FiDeviceCharacteristics
 40909  }
 40910  
 40911  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 40912  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40913  	return (*struct {
 40914  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 40915  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 40916  }
 40917  
 40918  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 40919  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40920  	(*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)
 40921  }
 40922  
 40923  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 40924  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40925  	return (*struct {
 40926  		f func(*libc.TLS, uintptr, int32) int32
 40927  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 40928  }
 40929  
 40930  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 40931  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40932  	return (*struct {
 40933  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 40934  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 40935  }
 40936  
 40937  var CrashFileVtab = sqlite3_io_methods{
 40938  	FiVersion:               2,
 40939  	FxClose:                 0,
 40940  	FxRead:                  0,
 40941  	FxWrite:                 0,
 40942  	FxTruncate:              0,
 40943  	FxSync:                  0,
 40944  	FxFileSize:              0,
 40945  	FxLock:                  0,
 40946  	FxUnlock:                0,
 40947  	FxCheckReservedLock:     0,
 40948  	FxFileControl:           0,
 40949  	FxSectorSize:            0,
 40950  	FxDeviceCharacteristics: 0,
 40951  	FxShmMap:                0,
 40952  	FxShmLock:               0,
 40953  	FxShmBarrier:            0,
 40954  	FxShmUnmap:              0,
 40955  }
 40956  
 40957  type crashAppData = struct{ FpOrig uintptr }
 40958  
 40959  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 40960  	bp := tls.Alloc(8)
 40961  	defer tls.Free(8)
 40962  
 40963  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 40964  	var rc int32
 40965  	var pWrapper uintptr = pFile
 40966  	var pReal uintptr = pWrapper + 1*56
 40967  
 40968  	libc.Xmemset(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})))
 40969  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 40970  
 40971  	if rc == SQLITE_OK {
 40972  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 40973  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 40974  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 40975  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 40976  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 40977  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 40978  	}
 40979  	if rc == SQLITE_OK {
 40980  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 40981  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 40982  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 40983  			var iOff i64
 40984  
 40985  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 40986  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 40987  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 40988  				if nRead > 512 {
 40989  					nRead = 512
 40990  				}
 40991  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 40992  			}
 40993  		} else {
 40994  			rc = SQLITE_NOMEM
 40995  		}
 40996  	}
 40997  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 40998  		sqlite3.Xsqlite3OsClose(tls, pFile)
 40999  	}
 41000  	return rc
 41001  }
 41002  
 41003  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 41004  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41005  	return (*struct {
 41006  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 41007  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 41008  }
 41009  
 41010  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 41011  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41012  	return (*struct {
 41013  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41014  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 41015  }
 41016  
 41017  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 41018  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41019  	return (*struct {
 41020  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41021  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 41022  }
 41023  
 41024  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 41025  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41026  	return (*struct {
 41027  		f func(*libc.TLS, uintptr, uintptr) uintptr
 41028  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 41029  }
 41030  
 41031  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 41032  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41033  	(*struct {
 41034  		f func(*libc.TLS, uintptr, int32, uintptr)
 41035  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 41036  }
 41037  
 41038  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 41039  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41040  	return (*struct {
 41041  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 41042  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 41043  }
 41044  
 41045  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 41046  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41047  	(*struct {
 41048  		f func(*libc.TLS, uintptr, uintptr)
 41049  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 41050  }
 41051  
 41052  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 41053  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41054  	return (*struct {
 41055  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41056  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 41057  }
 41058  
 41059  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 41060  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41061  	return (*struct {
 41062  		f func(*libc.TLS, uintptr, int32) int32
 41063  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 41064  }
 41065  
 41066  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 41067  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41068  	return (*struct {
 41069  		f func(*libc.TLS, uintptr, uintptr) int32
 41070  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 41071  }
 41072  
 41073  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 41074  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41075  	return (*struct {
 41076  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41077  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 41078  }
 41079  
 41080  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 41081  	bp := tls.Alloc(316)
 41082  	defer tls.Free(316)
 41083  
 41084  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 41085  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 41086  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 41087  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 41088  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 41089  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 41090  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 41091  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 41092  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 41093  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 41094  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 41095  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 41096  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 41097  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 41098  		{},
 41099  	}
 41100  	var i int32
 41101  	var iDc int32 = 0
 41102  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 41103  	var setSectorsize int32 = 0
 41104  	var setDeviceChar int32 = 0
 41105  
 41106  	for i = 0; i < objc; i = i + 2 {
 41107  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 41108  
 41109  		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) &&
 41110  			(*(*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) {
 41111  			tcl.XTcl_AppendResult(tls, interp,
 41112  				libc.VaList(bp, ts+26571, zOpt,
 41113  					ts+26585, 0))
 41114  			return TCL_ERROR
 41115  		}
 41116  		if i == objc-1 {
 41117  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 41118  			return TCL_ERROR
 41119  		}
 41120  
 41121  		if int32(*(*int8)(unsafe.Pointer(zOpt + 1))) == 's' {
 41122  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 41123  				return TCL_ERROR
 41124  			}
 41125  			setSectorsize = 1
 41126  		} else {
 41127  			var j int32
 41128  
 41129  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 41130  				return TCL_ERROR
 41131  			}
 41132  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 41133  				var rc int32
 41134  
 41135  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 41136  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 41137  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 41138  
 41139  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 41140  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+312)
 41141  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 41142  					var _objPtr uintptr = pFlag
 41143  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 41144  						tcl.XTclFreeObj(tls, _objPtr)
 41145  					}
 41146  				}
 41147  				if rc != 0 {
 41148  					return TCL_ERROR
 41149  				}
 41150  
 41151  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 41152  			}
 41153  			setDeviceChar = 1
 41154  		}
 41155  	}
 41156  
 41157  	if setDeviceChar != 0 {
 41158  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 41159  	}
 41160  	if setSectorsize != 0 {
 41161  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 41162  	}
 41163  
 41164  	return TCL_OK
 41165  }
 41166  
 41167  type DeviceFlag = struct {
 41168  	FzName       uintptr
 41169  	FiValue      int32
 41170  	F__ccgo_pad1 [4]byte
 41171  }
 41172  
 41173  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41174  	if objc != 1 {
 41175  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41176  		return TCL_ERROR
 41177  	}
 41178  	writeListSync(tls, uintptr(0), 1)
 41179  
 41180  	return TCL_OK
 41181  }
 41182  
 41183  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41184  	bp := tls.Alloc(8)
 41185  	defer tls.Free(8)
 41186  
 41187  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 41188  
 41189  	if objc != 2 && objc != 3 {
 41190  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 41191  		return TCL_ERROR
 41192  	}
 41193  
 41194  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41195  		return TCL_ERROR
 41196  	}
 41197  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 41198  		return TCL_ERROR
 41199  	}
 41200  
 41201  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 41202  		return TCL_OK
 41203  	}
 41204  
 41205  	if crashVfs.FpAppData == uintptr(0) {
 41206  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 41207  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 41208  		crashVfs.FpAppData = pOriginalVfs
 41209  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 41210  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 41211  	} else {
 41212  		crashVfs.FpAppData = uintptr(0)
 41213  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 41214  	}
 41215  
 41216  	return TCL_OK
 41217  }
 41218  
 41219  var crashVfs = sqlite3_vfs{
 41220  	FiVersion:      2,
 41221  	FzName:         ts + 26694,
 41222  	FxOpen:         0,
 41223  	FxDelete:       0,
 41224  	FxAccess:       0,
 41225  	FxFullPathname: 0,
 41226  	FxDlOpen:       0,
 41227  	FxDlError:      0,
 41228  	FxDlSym:        0,
 41229  	FxDlClose:      0,
 41230  	FxRandomness:   0,
 41231  	FxSleep:        0,
 41232  	FxCurrentTime:  0,
 41233  	FxGetLastError: 0,
 41234  }
 41235  
 41236  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41237  	bp := tls.Alloc(48)
 41238  	defer tls.Free(48)
 41239  
 41240  	var zCrashFile uintptr
 41241  
 41242  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 41243  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 41244  
 41245  	if !(objc < 3) {
 41246  		goto __1
 41247  	}
 41248  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 41249  	goto error
 41250  __1:
 41251  	;
 41252  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 41253  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]int8{}))) {
 41254  		goto __2
 41255  	}
 41256  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 41257  	goto error
 41258  __2:
 41259  	;
 41260  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 41261  		goto __3
 41262  	}
 41263  	goto error
 41264  __3:
 41265  	;
 41266  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 41267  		goto __4
 41268  	}
 41269  	return TCL_ERROR
 41270  __4:
 41271  	;
 41272  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 41273  		goto __5
 41274  	}
 41275  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 41276  __5:
 41277  	;
 41278  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 41279  		goto __6
 41280  	}
 41281  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 41282  __6:
 41283  	;
 41284  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 41285  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1))
 41286  	sqlite3CrashTestEnable = 1
 41287  	return TCL_OK
 41288  
 41289  error:
 41290  	return TCL_ERROR
 41291  }
 41292  
 41293  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41294  	bp := tls.Alloc(8)
 41295  	defer tls.Free(8)
 41296  
 41297  	*(*int32)(unsafe.Pointer(bp)) = -1
 41298  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 41299  
 41300  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 41301  		return TCL_ERROR
 41302  	}
 41303  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 41304  
 41305  	return TCL_OK
 41306  }
 41307  
 41308  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41309  	bp := tls.Alloc(4)
 41310  	defer tls.Free(4)
 41311  
 41312  	*(*int32)(unsafe.Pointer(bp)) = 0
 41313  
 41314  	if objc != 2 {
 41315  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 41316  		return TCL_ERROR
 41317  	}
 41318  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41319  		return TCL_ERROR
 41320  	}
 41321  
 41322  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 41323  	return TCL_OK
 41324  }
 41325  
 41326  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41327  	if objc != 1 {
 41328  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41329  		return TCL_ERROR
 41330  	}
 41331  
 41332  	devsym_unregister(tls)
 41333  	return TCL_OK
 41334  }
 41335  
 41336  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41337  	bp := tls.Alloc(48)
 41338  	defer tls.Free(48)
 41339  
 41340  	var zParent uintptr = uintptr(0)
 41341  
 41342  	if objc != 2 && objc != 3 {
 41343  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 41344  		return TCL_ERROR
 41345  	}
 41346  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41347  	if objc == 3 {
 41348  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 41349  			tcl.XTcl_AppendResult(tls, interp,
 41350  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 41351  			return TCL_ERROR
 41352  		}
 41353  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41354  	}
 41355  
 41356  	if !(int32(*(*int8)(unsafe.Pointer(zParent))) != 0) {
 41357  		zParent = uintptr(0)
 41358  	}
 41359  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 41360  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 41361  		return TCL_ERROR
 41362  	}
 41363  
 41364  	return TCL_OK
 41365  }
 41366  
 41367  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41368  	if objc != 1 {
 41369  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41370  		return TCL_ERROR
 41371  	}
 41372  
 41373  	jt_unregister(tls)
 41374  	return TCL_OK
 41375  }
 41376  
 41377  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 41378  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 41379  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41380  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 41381  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 41382  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41383  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 41384  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 41385  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41386  	}{crashNowCmd})), uintptr(0), uintptr(0))
 41387  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 41388  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41389  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 41390  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 41391  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41392  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 41393  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 41394  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41395  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 41396  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 41397  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41398  	}{jtObjCmd})), uintptr(0), uintptr(0))
 41399  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 41400  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41401  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 41402  	return TCL_OK
 41403  }
 41404  
 41405  type Thread1 = struct {
 41406  	FzFilename   uintptr
 41407  	FxOp         uintptr
 41408  	FzArg        uintptr
 41409  	Fopnum       int32
 41410  	Fbusy        int32
 41411  	Fcompleted   int32
 41412  	F__ccgo_pad1 [4]byte
 41413  	Fdb          uintptr
 41414  	FpStmt       uintptr
 41415  	FzErr        uintptr
 41416  	FzStaticErr  uintptr
 41417  	Frc          int32
 41418  	Fargc        int32
 41419  	Fargv        [100]uintptr
 41420  	Fcolv        [100]uintptr
 41421  	FnServer     int32
 41422  	F__ccgo_pad2 [4]byte
 41423  }
 41424  
 41425  var threadset1 [26]Thread1
 41426  
 41427  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 41428  	var p uintptr = pArg
 41429  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 41430  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41431  	}
 41432  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 41433  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 41434  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 41435  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41436  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 41437  	}
 41438  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41439  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 41440  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41441  		libc.Xsched_yield(tls)
 41442  	}
 41443  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 41444  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 41445  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 41446  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41447  		}
 41448  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 41449  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 41450  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41451  			libc.Xsched_yield(tls)
 41452  		}
 41453  	}
 41454  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 41455  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41456  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41457  	}
 41458  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 41459  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41460  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 41461  	}
 41462  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 41463  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 41464  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41465  	}
 41466  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 41467  	sqlite3.Xsqlite3_thread_cleanup(tls)
 41468  	return uintptr(0)
 41469  }
 41470  
 41471  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 41472  	bp := tls.Alloc(16)
 41473  	defer tls.Free(16)
 41474  
 41475  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(libc.Xisupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 41476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 41477  		return -1
 41478  	}
 41479  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 41480  }
 41481  
 41482  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41483  	bp := tls.Alloc(96)
 41484  	defer tls.Free(96)
 41485  
 41486  	var i int32
 41487  
 41488  	var rc int32
 41489  
 41490  	if argc != 3 {
 41491  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41492  			ts+25780, 0))
 41493  		return TCL_ERROR
 41494  	}
 41495  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41496  	if i < 0 {
 41497  		return TCL_ERROR
 41498  	}
 41499  	if threadset1[i].Fbusy != 0 {
 41500  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 41501  		return TCL_ERROR
 41502  	}
 41503  	threadset1[i].Fbusy = 1
 41504  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 41505  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41506  	threadset1[i].Fopnum = 1
 41507  	threadset1[i].Fcompleted = 0
 41508  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 41509  		f func(*libc.TLS, uintptr) uintptr
 41510  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41511  	if rc != 0 {
 41512  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 41513  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 41514  		threadset1[i].Fbusy = 0
 41515  		return TCL_ERROR
 41516  	}
 41517  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 41518  	if threadset1[i].FnServer == 0 {
 41519  		threadset1[i].FnServer = 1
 41520  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 41521  	}
 41522  	return TCL_OK
 41523  }
 41524  
 41525  func client_wait(tls *libc.TLS, p uintptr) {
 41526  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41527  		libc.Xsched_yield(tls)
 41528  	}
 41529  }
 41530  
 41531  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41532  	bp := tls.Alloc(48)
 41533  	defer tls.Free(48)
 41534  
 41535  	var i int32
 41536  
 41537  	if argc != 2 {
 41538  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41539  			ts+25849, 0))
 41540  		return TCL_ERROR
 41541  	}
 41542  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41543  	if i < 0 {
 41544  		return TCL_ERROR
 41545  	}
 41546  	if !(threadset1[i].Fbusy != 0) {
 41547  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41548  		return TCL_ERROR
 41549  	}
 41550  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41551  	return TCL_OK
 41552  }
 41553  
 41554  func stop_thread(tls *libc.TLS, p uintptr) {
 41555  	client_wait(tls, p)
 41556  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 41557  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 41558  	client_wait(tls, p)
 41559  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 41560  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 41561  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 41562  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 41563  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 41564  }
 41565  
 41566  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41567  	bp := tls.Alloc(48)
 41568  	defer tls.Free(48)
 41569  
 41570  	var i int32
 41571  
 41572  	if argc != 2 {
 41573  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41574  			ts+25849, 0))
 41575  		return TCL_ERROR
 41576  	}
 41577  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 41578  		for i = 0; i < N_THREAD; i++ {
 41579  			if threadset1[i].Fbusy != 0 {
 41580  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41581  			}
 41582  		}
 41583  	} else {
 41584  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41585  		if i < 0 {
 41586  			return TCL_ERROR
 41587  		}
 41588  		if !(threadset1[i].Fbusy != 0) {
 41589  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41590  			return TCL_ERROR
 41591  		}
 41592  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41593  	}
 41594  
 41595  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 41596  	}
 41597  	if i >= N_THREAD {
 41598  		sqlite3_server_stop(tls)
 41599  		for 1 != 0 {
 41600  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 41601  			}
 41602  			if i == N_THREAD {
 41603  				break
 41604  			}
 41605  			libc.Xsched_yield(tls)
 41606  		}
 41607  	}
 41608  	return TCL_OK
 41609  }
 41610  
 41611  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41612  	bp := tls.Alloc(172)
 41613  	defer tls.Free(172)
 41614  
 41615  	var i int32
 41616  
 41617  	if argc != 2 {
 41618  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41619  			ts+25849, 0))
 41620  		return TCL_ERROR
 41621  	}
 41622  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41623  	if i < 0 {
 41624  		return TCL_ERROR
 41625  	}
 41626  	if !(threadset1[i].Fbusy != 0) {
 41627  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41628  		return TCL_ERROR
 41629  	}
 41630  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41631  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 41632  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 41633  	return TCL_OK
 41634  }
 41635  
 41636  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41637  	bp := tls.Alloc(84)
 41638  	defer tls.Free(84)
 41639  
 41640  	var i int32
 41641  
 41642  	if argc != 3 {
 41643  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41644  			ts+25868, 0))
 41645  		return TCL_ERROR
 41646  	}
 41647  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41648  	if i < 0 {
 41649  		return TCL_ERROR
 41650  	}
 41651  	if !(threadset1[i].Fbusy != 0) {
 41652  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41653  		return TCL_ERROR
 41654  	}
 41655  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41656  		return TCL_ERROR
 41657  	}
 41658  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41659  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 41660  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41661  		return TCL_ERROR
 41662  	}
 41663  	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))
 41664  	return TCL_OK
 41665  }
 41666  
 41667  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41668  	bp := tls.Alloc(84)
 41669  	defer tls.Free(84)
 41670  
 41671  	var i int32
 41672  
 41673  	if argc != 3 {
 41674  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41675  			ts+25868, 0))
 41676  		return TCL_ERROR
 41677  	}
 41678  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41679  	if i < 0 {
 41680  		return TCL_ERROR
 41681  	}
 41682  	if !(threadset1[i].Fbusy != 0) {
 41683  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41684  		return TCL_ERROR
 41685  	}
 41686  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41687  		return TCL_ERROR
 41688  	}
 41689  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41690  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 41691  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41692  		return TCL_ERROR
 41693  	}
 41694  	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))
 41695  	return TCL_OK
 41696  }
 41697  
 41698  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41699  	bp := tls.Alloc(64)
 41700  	defer tls.Free(64)
 41701  
 41702  	var i int32
 41703  	var zName uintptr
 41704  
 41705  	if argc != 2 {
 41706  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41707  			ts+25849, 0))
 41708  		return TCL_ERROR
 41709  	}
 41710  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41711  	if i < 0 {
 41712  		return TCL_ERROR
 41713  	}
 41714  	if !(threadset1[i].Fbusy != 0) {
 41715  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41716  		return TCL_ERROR
 41717  	}
 41718  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41719  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 41720  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 41721  	return TCL_OK
 41722  }
 41723  
 41724  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41725  	bp := tls.Alloc(64)
 41726  	defer tls.Free(64)
 41727  
 41728  	var i int32
 41729  
 41730  	if argc != 2 {
 41731  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41732  			ts+25849, 0))
 41733  		return TCL_ERROR
 41734  	}
 41735  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41736  	if i < 0 {
 41737  		return TCL_ERROR
 41738  	}
 41739  	if !(threadset1[i].Fbusy != 0) {
 41740  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41741  		return TCL_ERROR
 41742  	}
 41743  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41744  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 41745  	return TCL_OK
 41746  }
 41747  
 41748  func do_compile1(tls *libc.TLS, p uintptr) {
 41749  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 41750  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 41751  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41752  		return
 41753  	}
 41754  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 41755  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41756  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41757  	}
 41758  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 41759  }
 41760  
 41761  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41762  	bp := tls.Alloc(56)
 41763  	defer tls.Free(56)
 41764  
 41765  	var i int32
 41766  	if argc != 3 {
 41767  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41768  			ts+25921, 0))
 41769  		return TCL_ERROR
 41770  	}
 41771  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41772  	if i < 0 {
 41773  		return TCL_ERROR
 41774  	}
 41775  	if !(threadset1[i].Fbusy != 0) {
 41776  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41777  		return TCL_ERROR
 41778  	}
 41779  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41780  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 41781  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41782  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41783  	threadset1[i].Fopnum++
 41784  	return TCL_OK
 41785  }
 41786  
 41787  func do_step1(tls *libc.TLS, p uintptr) {
 41788  	var i int32
 41789  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41790  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41791  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41792  		return
 41793  	}
 41794  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41795  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 41796  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41797  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 41798  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 41799  		}
 41800  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 41801  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 41802  		}
 41803  	}
 41804  }
 41805  
 41806  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41807  	bp := tls.Alloc(48)
 41808  	defer tls.Free(48)
 41809  
 41810  	var i int32
 41811  	if argc != 2 {
 41812  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41813  			ts+25958, 0))
 41814  		return TCL_ERROR
 41815  	}
 41816  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41817  	if i < 0 {
 41818  		return TCL_ERROR
 41819  	}
 41820  	if !(threadset1[i].Fbusy != 0) {
 41821  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41822  		return TCL_ERROR
 41823  	}
 41824  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41825  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 41826  	threadset1[i].Fopnum++
 41827  	return TCL_OK
 41828  }
 41829  
 41830  func do_finalize1(tls *libc.TLS, p uintptr) {
 41831  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41832  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41833  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41834  		return
 41835  	}
 41836  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41837  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41838  }
 41839  
 41840  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41841  	bp := tls.Alloc(48)
 41842  	defer tls.Free(48)
 41843  
 41844  	var i int32
 41845  	if argc != 2 {
 41846  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41847  			ts+25958, 0))
 41848  		return TCL_ERROR
 41849  	}
 41850  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41851  	if i < 0 {
 41852  		return TCL_ERROR
 41853  	}
 41854  	if !(threadset1[i].Fbusy != 0) {
 41855  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41856  		return TCL_ERROR
 41857  	}
 41858  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41859  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 41860  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41861  	threadset1[i].FzArg = uintptr(0)
 41862  	threadset1[i].Fopnum++
 41863  	return TCL_OK
 41864  }
 41865  
 41866  func do_reset(tls *libc.TLS, p uintptr) {
 41867  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41868  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41869  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41870  		return
 41871  	}
 41872  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41873  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41874  }
 41875  
 41876  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41877  	bp := tls.Alloc(48)
 41878  	defer tls.Free(48)
 41879  
 41880  	var i int32
 41881  	if argc != 2 {
 41882  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41883  			ts+25958, 0))
 41884  		return TCL_ERROR
 41885  	}
 41886  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41887  	if i < 0 {
 41888  		return TCL_ERROR
 41889  	}
 41890  	if !(threadset1[i].Fbusy != 0) {
 41891  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41892  		return TCL_ERROR
 41893  	}
 41894  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41895  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 41896  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41897  	threadset1[i].FzArg = uintptr(0)
 41898  	threadset1[i].Fopnum++
 41899  	return TCL_OK
 41900  }
 41901  
 41902  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41903  	bp := tls.Alloc(64)
 41904  	defer tls.Free(64)
 41905  
 41906  	var i int32
 41907  	var j int32
 41908  	var temp uintptr
 41909  	if argc != 3 {
 41910  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41911  			ts+25963, 0))
 41912  		return TCL_ERROR
 41913  	}
 41914  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41915  	if i < 0 {
 41916  		return TCL_ERROR
 41917  	}
 41918  	if !(threadset1[i].Fbusy != 0) {
 41919  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41920  		return TCL_ERROR
 41921  	}
 41922  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41923  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41924  	if j < 0 {
 41925  		return TCL_ERROR
 41926  	}
 41927  	if !(threadset1[j].Fbusy != 0) {
 41928  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 41929  		return TCL_ERROR
 41930  	}
 41931  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 41932  	temp = threadset1[i].Fdb
 41933  	threadset1[i].Fdb = threadset1[j].Fdb
 41934  	threadset1[j].Fdb = temp
 41935  	return TCL_OK
 41936  }
 41937  
 41938  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 41939  	var i int32
 41940  
 41941  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 41942  		FzName uintptr
 41943  		FxProc uintptr
 41944  	}{})); i++ {
 41945  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 41946  	}
 41947  	return TCL_OK
 41948  }
 41949  
 41950  var aCmd6 = [13]struct {
 41951  	FzName uintptr
 41952  	FxProc uintptr
 41953  }{
 41954  	{FzName: ts + 26987, FxProc: 0},
 41955  	{FzName: ts + 27001, FxProc: 0},
 41956  	{FzName: ts + 27013, FxProc: 0},
 41957  	{FzName: ts + 27025, FxProc: 0},
 41958  	{FzName: ts + 27037, FxProc: 0},
 41959  	{FzName: ts + 27049, FxProc: 0},
 41960  	{FzName: ts + 27064, FxProc: 0},
 41961  	{FzName: ts + 27078, FxProc: 0},
 41962  	{FzName: ts + 27091, FxProc: 0},
 41963  	{FzName: ts + 27106, FxProc: 0},
 41964  	{FzName: ts + 27118, FxProc: 0},
 41965  	{FzName: ts + 27131, FxProc: 0},
 41966  	{FzName: ts + 27147, FxProc: 0},
 41967  }
 41968  
 41969  type echo_vtab1 = struct {
 41970  	Fbase          sqlite3_vtab
 41971  	Finterp        uintptr
 41972  	Fdb            uintptr
 41973  	FisPattern     int32
 41974  	FinTransaction int32
 41975  	FzThis         uintptr
 41976  	FzTableName    uintptr
 41977  	FzLogName      uintptr
 41978  	FnCol          int32
 41979  	F__ccgo_pad1   [4]byte
 41980  	FaIndex        uintptr
 41981  	FaCol          uintptr
 41982  }
 41983  
 41984  type echo_vtab = echo_vtab1
 41985  type echo_cursor1 = struct {
 41986  	Fbase  sqlite3_vtab_cursor
 41987  	FpStmt uintptr
 41988  }
 41989  
 41990  type echo_cursor = echo_cursor1
 41991  
 41992  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 41993  	bp := tls.Alloc(152)
 41994  	defer tls.Free(152)
 41995  
 41996  	var zErr uintptr
 41997  
 41998  	*(*int8)(unsafe.Pointer(bp + 24 + 127)) = int8(0)
 41999  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 42000  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 42001  	if zErr != 0 {
 42002  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 42003  	}
 42004  	return libc.Bool32(zErr != uintptr(0))
 42005  }
 42006  
 42007  func dequoteString(tls *libc.TLS, z uintptr) {
 42008  	var quote int32
 42009  	var i int32
 42010  	var j int32
 42011  	if z == uintptr(0) {
 42012  		return
 42013  	}
 42014  	quote = int32(*(*int8)(unsafe.Pointer(z)))
 42015  	switch quote {
 42016  	case '\'':
 42017  		break
 42018  	case '"':
 42019  		break
 42020  	case '`':
 42021  		break
 42022  	case '[':
 42023  		quote = ']'
 42024  		break
 42025  	default:
 42026  		return
 42027  	}
 42028  	i = 1
 42029  	j = 0
 42030  	for ; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 42031  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 42032  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 42033  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(quote)
 42034  				i++
 42035  			} else {
 42036  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(0)
 42037  				break
 42038  			}
 42039  		} else {
 42040  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 42041  		}
 42042  	}
 42043  }
 42044  
 42045  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 42046  	bp := tls.Alloc(24)
 42047  	defer tls.Free(24)
 42048  
 42049  	var aCol uintptr
 42050  	var zSql uintptr
 42051  
 42052  	var rc int32
 42053  	var nCol int32
 42054  	var zName uintptr
 42055  	var ii int32
 42056  	var nBytes int32
 42057  	var zSpace uintptr
 42058  	aCol = uintptr(0)
 42059  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42060  	rc = SQLITE_OK
 42061  	nCol = 0
 42062  
 42063  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 42064  	if !!(zSql != 0) {
 42065  		goto __1
 42066  	}
 42067  	rc = SQLITE_NOMEM
 42068  	goto out
 42069  __1:
 42070  	;
 42071  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42072  	sqlite3.Xsqlite3_free(tls, zSql)
 42073  
 42074  	if !(rc == SQLITE_OK) {
 42075  		goto __2
 42076  	}
 42077  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42078  
 42079  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 42080  	ii = 0
 42081  __3:
 42082  	if !(ii < nCol) {
 42083  		goto __5
 42084  	}
 42085  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 42086  	if !!(zName != 0) {
 42087  		goto __6
 42088  	}
 42089  	rc = SQLITE_NOMEM
 42090  	goto out
 42091  __6:
 42092  	;
 42093  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 42094  	goto __4
 42095  __4:
 42096  	ii++
 42097  	goto __3
 42098  	goto __5
 42099  __5:
 42100  	;
 42101  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 42102  	if !!(aCol != 0) {
 42103  		goto __7
 42104  	}
 42105  	rc = SQLITE_NOMEM
 42106  	goto out
 42107  __7:
 42108  	;
 42109  	zSpace = aCol + uintptr(nCol)*8
 42110  	ii = 0
 42111  __8:
 42112  	if !(ii < nCol) {
 42113  		goto __10
 42114  	}
 42115  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 42116  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 42117  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 42118  	goto __9
 42119  __9:
 42120  	ii++
 42121  	goto __8
 42122  	goto __10
 42123  __10:
 42124  	;
 42125  __2:
 42126  	;
 42127  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 42128  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 42129  
 42130  out:
 42131  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42132  	return rc
 42133  }
 42134  
 42135  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 42136  	bp := tls.Alloc(32)
 42137  	defer tls.Free(32)
 42138  
 42139  	var aIndex uintptr
 42140  	var rc int32
 42141  	var zSql uintptr
 42142  	var cid int32
 42143  	var zIdx uintptr
 42144  
 42145  	var rc2 int32
 42146  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42147  	aIndex = uintptr(0)
 42148  
 42149  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 42150  	if !!(aIndex != 0) {
 42151  		goto __1
 42152  	}
 42153  	rc = SQLITE_NOMEM
 42154  	goto get_index_array_out
 42155  __1:
 42156  	;
 42157  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 42158  	if !!(zSql != 0) {
 42159  		goto __2
 42160  	}
 42161  	rc = SQLITE_NOMEM
 42162  	goto get_index_array_out
 42163  __2:
 42164  	;
 42165  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42166  	sqlite3.Xsqlite3_free(tls, zSql)
 42167  
 42168  __3:
 42169  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 42170  		goto __4
 42171  	}
 42172  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 42173  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 42174  	if !(zIdx == uintptr(0)) {
 42175  		goto __5
 42176  	}
 42177  	goto __3
 42178  __5:
 42179  	;
 42180  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 42181  	if !!(zSql != 0) {
 42182  		goto __6
 42183  	}
 42184  	rc = SQLITE_NOMEM
 42185  	goto get_index_array_out
 42186  __6:
 42187  	;
 42188  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 42189  	sqlite3.Xsqlite3_free(tls, zSql)
 42190  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 42191  		goto __7
 42192  	}
 42193  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 42194  
 42195  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 42196  __7:
 42197  	;
 42198  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 42199  		goto __8
 42200  	}
 42201  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 42202  __8:
 42203  	;
 42204  	if !(rc != SQLITE_OK) {
 42205  		goto __9
 42206  	}
 42207  	goto get_index_array_out
 42208  __9:
 42209  	;
 42210  	goto __3
 42211  __4:
 42212  	;
 42213  get_index_array_out:
 42214  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 42215  		goto __10
 42216  	}
 42217  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42218  	if !(rc == SQLITE_OK) {
 42219  		goto __11
 42220  	}
 42221  	rc = rc2
 42222  __11:
 42223  	;
 42224  __10:
 42225  	;
 42226  	if !(rc != SQLITE_OK) {
 42227  		goto __12
 42228  	}
 42229  	sqlite3.Xsqlite3_free(tls, aIndex)
 42230  	aIndex = uintptr(0)
 42231  __12:
 42232  	;
 42233  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 42234  	return rc
 42235  }
 42236  
 42237  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 42238  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 42239  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 42240  		if zArg != 0 {
 42241  			return zArg
 42242  		}
 42243  		return ts + 584
 42244  	}(), flags)
 42245  }
 42246  
 42247  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 42248  	bp := tls.Alloc(8)
 42249  	defer tls.Free(8)
 42250  
 42251  	var rc int32 = SQLITE_OK
 42252  
 42253  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 42254  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 42255  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 42256  			ts+27276,
 42257  			-1, bp, uintptr(0))
 42258  		if rc == SQLITE_OK {
 42259  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 42260  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 42261  				var rc2 int32
 42262  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 42263  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 42264  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42265  				if rc == SQLITE_OK {
 42266  					rc = rc2
 42267  				}
 42268  			} else {
 42269  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42270  				if rc == SQLITE_OK {
 42271  					rc = SQLITE_ERROR
 42272  				}
 42273  			}
 42274  			if rc == SQLITE_OK {
 42275  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 42276  			}
 42277  			if rc == SQLITE_OK {
 42278  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 42279  			}
 42280  		}
 42281  	}
 42282  
 42283  	return rc
 42284  }
 42285  
 42286  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 42287  	var p uintptr = pVtab
 42288  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 42289  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 42290  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 42291  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 42292  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 42293  	sqlite3.Xsqlite3_free(tls, p)
 42294  	return 0
 42295  }
 42296  
 42297  type EchoModule1 = struct {
 42298  	Finterp uintptr
 42299  	Fdb     uintptr
 42300  }
 42301  
 42302  type EchoModule = EchoModule1
 42303  
 42304  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42305  	bp := tls.Alloc(32)
 42306  	defer tls.Free(32)
 42307  
 42308  	var rc int32
 42309  	var i int32
 42310  	var pVtab uintptr
 42311  
 42312  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 42313  	if !(pVtab != 0) {
 42314  		return SQLITE_NOMEM
 42315  	}
 42316  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 42317  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 42318  
 42319  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42320  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 42321  		echoDestructor(tls, pVtab)
 42322  		return SQLITE_NOMEM
 42323  	}
 42324  
 42325  	if argc > 3 {
 42326  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 42327  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42328  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*int8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 42329  			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))
 42330  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42331  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 42332  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 42333  		}
 42334  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 42335  			echoDestructor(tls, pVtab)
 42336  			return SQLITE_NOMEM
 42337  		}
 42338  	}
 42339  
 42340  	for i = 0; i < argc; i++ {
 42341  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 42342  	}
 42343  
 42344  	rc = echoDeclareVtab(tls, pVtab, db)
 42345  	if rc != SQLITE_OK {
 42346  		echoDestructor(tls, pVtab)
 42347  		return rc
 42348  	}
 42349  
 42350  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 42351  	return SQLITE_OK
 42352  }
 42353  
 42354  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42355  	bp := tls.Alloc(24)
 42356  	defer tls.Free(24)
 42357  
 42358  	var rc int32 = SQLITE_OK
 42359  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 42360  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42361  
 42362  	if rc == SQLITE_OK && argc == 5 {
 42363  		var zSql uintptr
 42364  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 42365  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 42366  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 42367  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 42368  		sqlite3.Xsqlite3_free(tls, zSql)
 42369  		if rc != SQLITE_OK {
 42370  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 42371  		}
 42372  	}
 42373  
 42374  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 42375  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 42376  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 42377  	}
 42378  
 42379  	if rc == SQLITE_OK {
 42380  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 42381  	}
 42382  
 42383  	return rc
 42384  }
 42385  
 42386  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42387  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 42388  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42389  }
 42390  
 42391  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 42392  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 42393  	return echoDestructor(tls, pVtab)
 42394  }
 42395  
 42396  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 42397  	bp := tls.Alloc(8)
 42398  	defer tls.Free(8)
 42399  
 42400  	var rc int32 = SQLITE_OK
 42401  	var p uintptr = pVtab
 42402  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 42403  
 42404  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 42405  		var zSql uintptr
 42406  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 42407  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 42408  		sqlite3.Xsqlite3_free(tls, zSql)
 42409  	}
 42410  
 42411  	if rc == SQLITE_OK {
 42412  		rc = echoDestructor(tls, pVtab)
 42413  	}
 42414  	return rc
 42415  }
 42416  
 42417  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 42418  	var pCur uintptr
 42419  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 42420  		return SQLITE_ERROR
 42421  	}
 42422  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 42423  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 42424  	return func() int32 {
 42425  		if pCur != 0 {
 42426  			return SQLITE_OK
 42427  		}
 42428  		return SQLITE_NOMEM
 42429  	}()
 42430  }
 42431  
 42432  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 42433  	var rc int32
 42434  	var pCur uintptr = cur
 42435  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 42436  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42437  	sqlite3.Xsqlite3_free(tls, pCur)
 42438  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 42439  	return rc
 42440  }
 42441  
 42442  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 42443  	return func() int32 {
 42444  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 42445  			return 0
 42446  		}
 42447  		return 1
 42448  	}()
 42449  }
 42450  
 42451  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 42452  	var rc int32 = SQLITE_OK
 42453  	var pCur uintptr = cur
 42454  
 42455  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 42456  		return SQLITE_ERROR
 42457  	}
 42458  
 42459  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 42460  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42461  		if rc == SQLITE_ROW {
 42462  			rc = SQLITE_OK
 42463  		} else {
 42464  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42465  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42466  		}
 42467  	}
 42468  
 42469  	return rc
 42470  }
 42471  
 42472  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 42473  	var iCol int32 = i + 1
 42474  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 42475  
 42476  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 42477  		return SQLITE_ERROR
 42478  	}
 42479  
 42480  	if !(pStmt != 0) {
 42481  		sqlite3.Xsqlite3_result_null(tls, ctx)
 42482  	} else {
 42483  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 42484  	}
 42485  	return SQLITE_OK
 42486  }
 42487  
 42488  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 42489  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 42490  
 42491  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 42492  		return SQLITE_ERROR
 42493  	}
 42494  
 42495  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 42496  	return SQLITE_OK
 42497  }
 42498  
 42499  func hashString(tls *libc.TLS, zString uintptr) int32 {
 42500  	var val u32 = u32(0)
 42501  	var ii int32
 42502  	for ii = 0; *(*int8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 42503  		val = val<<3 + u32(int32(*(*int8)(unsafe.Pointer(zString + uintptr(ii)))))
 42504  	}
 42505  	return int32(val & u32(0x7fffffff))
 42506  }
 42507  
 42508  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 42509  	var rc int32
 42510  	var i int32
 42511  
 42512  	var pCur uintptr = pVtabCursor
 42513  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 42514  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 42515  
 42516  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 42517  		return SQLITE_ERROR
 42518  	}
 42519  
 42520  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 42521  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 42522  	for i = 0; i < argc; i++ {
 42523  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 42524  	}
 42525  
 42526  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42527  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42528  
 42529  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 42530  
 42531  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 42532  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 42533  	}
 42534  
 42535  	if rc == SQLITE_OK {
 42536  		rc = echoNext(tls, pVtabCursor)
 42537  	}
 42538  
 42539  	return rc
 42540  }
 42541  
 42542  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 42543  	bp := tls.Alloc(24)
 42544  	defer tls.Free(24)
 42545  
 42546  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 42547  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 42548  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 42549  	}
 42550  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 42551  		sqlite3.Xsqlite3_free(tls, zIn)
 42552  		zIn = uintptr(0)
 42553  	} else {
 42554  		if zIn != 0 {
 42555  			var zTemp uintptr = zIn
 42556  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 42557  			sqlite3.Xsqlite3_free(tls, zTemp)
 42558  		} else {
 42559  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 42560  		}
 42561  		if !(zIn != 0) {
 42562  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 42563  		}
 42564  	}
 42565  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 42566  	if doFree != 0 {
 42567  		sqlite3.Xsqlite3_free(tls, zAppend)
 42568  	}
 42569  }
 42570  
 42571  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 42572  	bp := tls.Alloc(24)
 42573  	defer tls.Free(24)
 42574  
 42575  	var zRet uintptr = uintptr(0)
 42576  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 42577  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 42578  	} else {
 42579  		var i int32
 42580  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 42581  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 42582  				if i >= 63 {
 42583  					return 63
 42584  				}
 42585  				return i
 42586  			}()) != 0 {
 42587  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 42588  			} else {
 42589  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 42590  			}
 42591  			if !(zRet != 0) {
 42592  				break
 42593  			}
 42594  		}
 42595  	}
 42596  	return zRet
 42597  }
 42598  
 42599  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 42600  	bp := tls.Alloc(100)
 42601  	defer tls.Free(100)
 42602  
 42603  	var ii int32
 42604  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 42605  	var zCol uintptr = uintptr(0)
 42606  	var zNew uintptr
 42607  	var nArg int32 = 0
 42608  	var zSep uintptr = ts + 9392
 42609  	var pVtab uintptr = tab
 42610  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 42611  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42612  
 42613  	var nRow int32 = 0
 42614  	var useIdx int32 = 0
 42615  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 42616  	var useCost int32 = 0
 42617  	var cost float64 = float64(0)
 42618  	var isIgnoreUsable int32 = 0
 42619  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 42620  		isIgnoreUsable = 1
 42621  	}
 42622  
 42623  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 42624  		return SQLITE_ERROR
 42625  	}
 42626  
 42627  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 42628  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 42629  		useCost = 1
 42630  	} else {
 42631  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42632  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42633  			return SQLITE_NOMEM
 42634  		}
 42635  		*(*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))
 42636  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42637  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 42638  			return *(*int32)(unsafe.Pointer(bp + 96))
 42639  		}
 42640  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 42641  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 42642  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 42643  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 42644  			return *(*int32)(unsafe.Pointer(bp + 96))
 42645  		}
 42646  	}
 42647  
 42648  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 42649  	if !(zCol != 0) {
 42650  		return SQLITE_NOMEM
 42651  	}
 42652  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42653  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42654  		return SQLITE_NOMEM
 42655  	}
 42656  
 42657  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 42658  		var pConstraint uintptr
 42659  		var pUsage uintptr
 42660  		var iCol int32
 42661  
 42662  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 42663  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 42664  
 42665  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 42666  			continue
 42667  		}
 42668  
 42669  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 42670  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 42671  			var zNewCol uintptr
 42672  			if iCol >= 0 {
 42673  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 42674  			} else {
 42675  				zNewCol = ts + 6427
 42676  			}
 42677  			var zOp uintptr = uintptr(0)
 42678  			useIdx = 1
 42679  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 42680  			case SQLITE_INDEX_CONSTRAINT_EQ:
 42681  				zOp = ts + 27570
 42682  				break
 42683  				fallthrough
 42684  			case SQLITE_INDEX_CONSTRAINT_LT:
 42685  				zOp = ts + 27572
 42686  				break
 42687  				fallthrough
 42688  			case SQLITE_INDEX_CONSTRAINT_GT:
 42689  				zOp = ts + 27574
 42690  				break
 42691  				fallthrough
 42692  			case SQLITE_INDEX_CONSTRAINT_LE:
 42693  				zOp = ts + 27576
 42694  				break
 42695  				fallthrough
 42696  			case SQLITE_INDEX_CONSTRAINT_GE:
 42697  				zOp = ts + 27579
 42698  				break
 42699  				fallthrough
 42700  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 42701  				zOp = ts + 27582
 42702  				break
 42703  				fallthrough
 42704  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 42705  				zOp = ts + 27587
 42706  				break
 42707  				fallthrough
 42708  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 42709  				zOp = ts + 27592
 42710  				break
 42711  				fallthrough
 42712  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 42713  				zOp = ts + 6831
 42714  				break
 42715  			}
 42716  			if zOp != 0 {
 42717  				if int32(*(*int8)(unsafe.Pointer(zOp))) == 'L' {
 42718  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 42719  						libc.VaList(bp+24, zSep, zNewCol))
 42720  				} else {
 42721  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 42722  				}
 42723  				string_concat(tls, bp+88, zNew, 1, bp+96)
 42724  				zSep = ts + 9419
 42725  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 42726  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 42727  			}
 42728  		}
 42729  	}
 42730  
 42731  	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) {
 42732  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 42733  		var zNewCol uintptr
 42734  		if iCol >= 0 {
 42735  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 42736  		} else {
 42737  			zNewCol = ts + 6427
 42738  		}
 42739  		var zDir uintptr
 42740  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 42741  			zDir = ts + 27644
 42742  		} else {
 42743  			zDir = ts + 27649
 42744  		}
 42745  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 42746  		string_concat(tls, bp+88, zNew, 1, bp+96)
 42747  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 42748  	}
 42749  
 42750  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 42751  
 42752  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42753  
 42754  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42755  		return *(*int32)(unsafe.Pointer(bp + 96))
 42756  	}
 42757  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42758  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 42759  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 42760  	if useCost != 0 {
 42761  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 42762  	} else if useIdx != 0 {
 42763  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 42764  			if nRow&(int32(1)<<ii) != 0 {
 42765  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 42766  			}
 42767  		}
 42768  	} else {
 42769  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 42770  	}
 42771  	return *(*int32)(unsafe.Pointer(bp + 96))
 42772  }
 42773  
 42774  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 42775  	bp := tls.Alloc(136)
 42776  	defer tls.Free(136)
 42777  
 42778  	var pVtab uintptr = tab
 42779  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 42780  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 42781  
 42782  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 42783  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 42784  	var bindArgZero int32 = 0
 42785  	var bindArgOne int32 = 0
 42786  	var i int32
 42787  
 42788  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 42789  		return SQLITE_ERROR
 42790  	}
 42791  
 42792  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 42793  		var zSep uintptr = ts + 27677
 42794  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42795  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 42796  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42797  		}
 42798  
 42799  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 42800  		bindArgZero = 1
 42801  
 42802  		if bindArgOne != 0 {
 42803  			string_concat(tls, bp+96, ts+27692, 0, bp+104)
 42804  			zSep = ts + 4758
 42805  		}
 42806  		for i = 2; i < nData; i++ {
 42807  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 42808  				continue
 42809  			}
 42810  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 42811  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 42812  			zSep = ts + 4758
 42813  		}
 42814  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+104)
 42815  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 42816  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42817  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 42818  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42819  		}
 42820  		bindArgZero = 1
 42821  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 42822  		var ii int32
 42823  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 42824  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 42825  
 42826  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42827  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 42828  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42829  		}
 42830  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 42831  			bindArgOne = 1
 42832  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 42833  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 42834  		}
 42835  
 42836  		for ii = 2; ii < nData; ii++ {
 42837  			string_concat(tls, bp+112,
 42838  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 42839  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 42840  						return ts + 97
 42841  					}
 42842  					return ts + 584
 42843  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 42844  			string_concat(tls, bp+120,
 42845  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 42846  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 42847  						return ts + 97
 42848  					}
 42849  					return ts + 584
 42850  				}(), ii)), 1, bp+104)
 42851  		}
 42852  
 42853  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 42854  		string_concat(tls, bp+96, ts+27794, 0, bp+104)
 42855  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 42856  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 42857  	} else {
 42858  		return SQLITE_ERROR
 42859  	}
 42860  
 42861  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42862  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 42863  	}
 42864  
 42865  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 42866  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42867  		if bindArgZero != 0 {
 42868  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 42869  		}
 42870  		if bindArgOne != 0 {
 42871  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 42872  		}
 42873  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 42874  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 42875  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 42876  			}
 42877  		}
 42878  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42879  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42880  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42881  		} else {
 42882  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42883  		}
 42884  	}
 42885  
 42886  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42887  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 42888  	}
 42889  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 42890  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 42891  	}
 42892  
 42893  	return *(*int32)(unsafe.Pointer(bp + 104))
 42894  }
 42895  
 42896  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 42897  	bp := tls.Alloc(8)
 42898  	defer tls.Free(8)
 42899  
 42900  	var z uintptr
 42901  	var pVtab uintptr = tab
 42902  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42903  	if z == uintptr(0) {
 42904  		return SQLITE_NOMEM
 42905  	}
 42906  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 42907  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 42908  	sqlite3.Xsqlite3_free(tls, z)
 42909  	return SQLITE_OK
 42910  }
 42911  
 42912  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 42913  	var rc int32
 42914  	var pVtab uintptr = tab
 42915  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42916  	var zVal uintptr
 42917  
 42918  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 42919  		return SQLITE_ERROR
 42920  	}
 42921  
 42922  	rc = echoTransactionCall(tls, tab, ts+27813)
 42923  
 42924  	if rc == SQLITE_OK {
 42925  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 42926  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 42927  			rc = SQLITE_ERROR
 42928  		}
 42929  	}
 42930  	if rc == SQLITE_OK {
 42931  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 42932  	}
 42933  	return rc
 42934  }
 42935  
 42936  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 42937  	var rc int32
 42938  	var pVtab uintptr = tab
 42939  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42940  	var zVal uintptr
 42941  
 42942  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 42943  		return SQLITE_ERROR
 42944  	}
 42945  
 42946  	rc = echoTransactionCall(tls, tab, ts+27843)
 42947  
 42948  	if rc == SQLITE_OK {
 42949  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 42950  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 42951  			rc = -1
 42952  		}
 42953  	}
 42954  	return rc
 42955  }
 42956  
 42957  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 42958  	var pVtab uintptr = tab
 42959  	var rc int32
 42960  
 42961  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 42962  		return SQLITE_ERROR
 42963  	}
 42964  
 42965  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 42966  	rc = echoTransactionCall(tls, tab, ts+27871)
 42967  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 42968  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 42969  	return rc
 42970  }
 42971  
 42972  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 42973  	var rc int32
 42974  	var pVtab uintptr = tab
 42975  
 42976  	rc = echoTransactionCall(tls, tab, ts+27879)
 42977  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 42978  	return rc
 42979  }
 42980  
 42981  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 42982  	bp := tls.Alloc(216)
 42983  	defer tls.Free(216)
 42984  
 42985  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 42986  
 42987  	var i int32
 42988  	var rc int32
 42989  	tcl.XTcl_DStringInit(tls, bp)
 42990  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 42991  	for i = 0; i < nArg; i++ {
 42992  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 42993  	}
 42994  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 42995  	tcl.XTcl_DStringFree(tls, bp)
 42996  	if rc != 0 {
 42997  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 42998  	} else {
 42999  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 43000  			-1, libc.UintptrFromInt32(-1))
 43001  	}
 43002  	tcl.XTcl_ResetResult(tls, interp)
 43003  }
 43004  
 43005  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 43006  	bp := tls.Alloc(64)
 43007  	defer tls.Free(64)
 43008  
 43009  	var pVtab uintptr = vtab
 43010  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43011  
 43012  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 43013  		return 0
 43014  	}
 43015  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 43016  		return 0
 43017  	}
 43018  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 43019  		f func(*libc.TLS, uintptr, int32, uintptr)
 43020  	}{overloadedGlobFunction}))
 43021  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 43022  	return 1
 43023  }
 43024  
 43025  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 43026  	bp := tls.Alloc(24)
 43027  	defer tls.Free(24)
 43028  
 43029  	var rc int32 = SQLITE_OK
 43030  	var p uintptr = vtab
 43031  
 43032  	if simulateVtabError(tls, p, ts+27910) != 0 {
 43033  		return SQLITE_ERROR
 43034  	}
 43035  
 43036  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 43037  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 43038  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 43039  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 43040  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43041  		sqlite3.Xsqlite3_free(tls, zSql)
 43042  	}
 43043  
 43044  	return rc
 43045  }
 43046  
 43047  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43048  	return SQLITE_OK
 43049  }
 43050  
 43051  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43052  	return SQLITE_OK
 43053  }
 43054  
 43055  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43056  	return SQLITE_OK
 43057  }
 43058  
 43059  var echoModule = sqlite3_module{
 43060  	FiVersion:      1,
 43061  	FxCreate:       0,
 43062  	FxConnect:      0,
 43063  	FxBestIndex:    0,
 43064  	FxDisconnect:   0,
 43065  	FxDestroy:      0,
 43066  	FxOpen:         0,
 43067  	FxClose:        0,
 43068  	FxFilter:       0,
 43069  	FxNext:         0,
 43070  	FxEof:          0,
 43071  	FxColumn:       0,
 43072  	FxRowid:        0,
 43073  	FxUpdate:       0,
 43074  	FxBegin:        0,
 43075  	FxSync:         0,
 43076  	FxCommit:       0,
 43077  	FxRollback:     0,
 43078  	FxFindFunction: 0,
 43079  	FxRename:       0,
 43080  }
 43081  
 43082  var echoModuleV2 = sqlite3_module{
 43083  	FiVersion:      2,
 43084  	FxCreate:       0,
 43085  	FxConnect:      0,
 43086  	FxBestIndex:    0,
 43087  	FxDisconnect:   0,
 43088  	FxDestroy:      0,
 43089  	FxOpen:         0,
 43090  	FxClose:        0,
 43091  	FxFilter:       0,
 43092  	FxNext:         0,
 43093  	FxEof:          0,
 43094  	FxColumn:       0,
 43095  	FxRowid:        0,
 43096  	FxUpdate:       0,
 43097  	FxBegin:        0,
 43098  	FxSync:         0,
 43099  	FxCommit:       0,
 43100  	FxRollback:     0,
 43101  	FxFindFunction: 0,
 43102  	FxRename:       0,
 43103  	FxSavepoint:    0,
 43104  	FxRelease:      0,
 43105  	FxRollbackTo:   0,
 43106  }
 43107  
 43108  func moduleDestroy(tls *libc.TLS, p uintptr) {
 43109  	var pMod uintptr = p
 43110  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 43111  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 43112  	sqlite3.Xsqlite3_free(tls, p)
 43113  }
 43114  
 43115  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43116  	bp := tls.Alloc(8)
 43117  	defer tls.Free(8)
 43118  
 43119  	var rc int32
 43120  
 43121  	var pMod uintptr
 43122  	if objc != 2 {
 43123  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 43124  		return TCL_ERROR
 43125  	}
 43126  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43127  		return TCL_ERROR
 43128  	}
 43129  
 43130  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43131  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43132  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43133  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 43134  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43135  
 43136  	if rc == SQLITE_OK {
 43137  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43138  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43139  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43140  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 43141  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43142  	}
 43143  
 43144  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43145  	return TCL_OK
 43146  }
 43147  
 43148  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43149  	bp := tls.Alloc(8)
 43150  	defer tls.Free(8)
 43151  
 43152  	var rc int32
 43153  	if objc != 3 {
 43154  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 43155  		return TCL_ERROR
 43156  	}
 43157  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43158  		return TCL_ERROR
 43159  	}
 43160  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 43161  	if rc != SQLITE_OK {
 43162  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 43163  		return TCL_ERROR
 43164  	}
 43165  	return TCL_OK
 43166  }
 43167  
 43168  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 43169  	var i int32
 43170  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 43171  		FzName      uintptr
 43172  		FxProc      uintptr
 43173  		FclientData uintptr
 43174  	}{})); i++ {
 43175  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 43176  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 43177  	}
 43178  	return TCL_OK
 43179  }
 43180  
 43181  var aObjCmd2 = [2]struct {
 43182  	FzName      uintptr
 43183  	FxProc      uintptr
 43184  	FclientData uintptr
 43185  }{
 43186  	{FzName: ts + 27999, FxProc: 0},
 43187  	{FzName: ts + 28020, FxProc: 0},
 43188  }
 43189  
 43190  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43191  	bp := tls.Alloc(32)
 43192  	defer tls.Free(32)
 43193  
 43194  	var zErrFunction uintptr
 43195  
 43196  	var rc int32
 43197  	zErrFunction = ts + 28041
 43198  	if !(objc != 1) {
 43199  		goto __1
 43200  	}
 43201  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43202  	return TCL_ERROR
 43203  __1:
 43204  	;
 43205  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43206  	if !(rc != SQLITE_OK) {
 43207  		goto __2
 43208  	}
 43209  	zErrFunction = ts + 21460
 43210  	goto error_out
 43211  __2:
 43212  	;
 43213  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 43214  	if !(rc != SQLITE_MISUSE) {
 43215  		goto __3
 43216  	}
 43217  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43218  	zErrFunction = ts + 28045
 43219  	goto error_out
 43220  __3:
 43221  	;
 43222  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43223  	return TCL_OK
 43224  
 43225  error_out:
 43226  	tcl.XTcl_ResetResult(tls, interp)
 43227  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43228  	return TCL_ERROR
 43229  }
 43230  
 43231  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43232  	bp := tls.Alloc(24)
 43233  	defer tls.Free(24)
 43234  
 43235  	var p uintptr
 43236  	var zErrFunction uintptr
 43237  	zErrFunction = ts + 28041
 43238  
 43239  	if !(objc != 1) {
 43240  		goto __1
 43241  	}
 43242  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43243  	return TCL_ERROR
 43244  __1:
 43245  	;
 43246  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 43247  	if !!(p != 0) {
 43248  		goto __2
 43249  	}
 43250  	zErrFunction = ts + 28095
 43251  	goto error_out
 43252  __2:
 43253  	;
 43254  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 43255  	if !(p != 0) {
 43256  		goto __3
 43257  	}
 43258  	zErrFunction = ts + 28110
 43259  	goto error_out
 43260  __3:
 43261  	;
 43262  	return TCL_OK
 43263  
 43264  error_out:
 43265  	tcl.XTcl_ResetResult(tls, interp)
 43266  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43267  	return TCL_ERROR
 43268  }
 43269  
 43270  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43271  	bp := tls.Alloc(40)
 43272  	defer tls.Free(40)
 43273  
 43274  	var zErrFunction uintptr
 43275  
 43276  	var rc int32
 43277  	zErrFunction = ts + 28041
 43278  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43279  
 43280  	if !(objc != 1) {
 43281  		goto __1
 43282  	}
 43283  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43284  	return TCL_ERROR
 43285  __1:
 43286  	;
 43287  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43288  	if !(rc != SQLITE_OK) {
 43289  		goto __2
 43290  	}
 43291  	zErrFunction = ts + 21460
 43292  	goto error_out
 43293  __2:
 43294  	;
 43295  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43296  
 43297  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43298  	if !(rc != SQLITE_MISUSE) {
 43299  		goto __3
 43300  	}
 43301  	zErrFunction = ts + 21366
 43302  	goto error_out
 43303  __3:
 43304  	;
 43305  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43306  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43307  	if !(rc != SQLITE_MISUSE) {
 43308  		goto __4
 43309  	}
 43310  	zErrFunction = ts + 21541
 43311  	goto error_out
 43312  __4:
 43313  	;
 43314  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43315  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43316  	if !(rc != SQLITE_MISUSE) {
 43317  		goto __5
 43318  	}
 43319  	zErrFunction = ts + 21575
 43320  	goto error_out
 43321  __5:
 43322  	;
 43323  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43324  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43325  	if !(rc != SQLITE_MISUSE) {
 43326  		goto __6
 43327  	}
 43328  	zErrFunction = ts + 21557
 43329  	goto error_out
 43330  __6:
 43331  	;
 43332  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43333  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43334  	if !(rc != SQLITE_MISUSE) {
 43335  		goto __7
 43336  	}
 43337  	zErrFunction = ts + 21637
 43338  	goto error_out
 43339  __7:
 43340  	;
 43341  	return TCL_OK
 43342  
 43343  error_out:
 43344  	tcl.XTcl_ResetResult(tls, interp)
 43345  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43346  	return TCL_ERROR
 43347  }
 43348  
 43349  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 43350  	var i int32
 43351  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 43352  		FzName      uintptr
 43353  		FxProc      uintptr
 43354  		FclientData uintptr
 43355  	}{})); i++ {
 43356  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 43357  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 43358  	}
 43359  	return TCL_OK
 43360  }
 43361  
 43362  var aObjCmd3 = [3]struct {
 43363  	FzName      uintptr
 43364  	FxProc      uintptr
 43365  	FclientData uintptr
 43366  }{
 43367  	{FzName: ts + 28126, FxProc: 0},
 43368  	{FzName: ts + 28140, FxProc: 0},
 43369  	{FzName: ts + 28155, FxProc: 0},
 43370  }
 43371  
 43372  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 43373  	return TCL_OK
 43374  }
 43375  
 43376  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43377  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 43378  	return SQLITE_OK
 43379  }
 43380  
 43381  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 43382  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 43383  		*(*uintptr)(unsafe.Pointer(&struct {
 43384  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 43385  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 43386  	return TCL_OK
 43387  }
 43388  
 43389  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43390  	bp := tls.Alloc(196)
 43391  	defer tls.Free(196)
 43392  
 43393  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 43394  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 43395  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 43396  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 43397  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 43398  		{},
 43399  	}
 43400  
 43401  	var p uintptr = clientData
 43402  
 43403  	var rc int32
 43404  
 43405  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 43406  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 43407  	if rc != TCL_OK {
 43408  		return rc
 43409  	}
 43410  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 43411  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 43412  		return TCL_ERROR
 43413  	}
 43414  
 43415  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 43416  	case uint32(1):
 43417  		{
 43418  			var zCmdName uintptr
 43419  
 43420  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 43421  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 43422  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 43423  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 43424  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 43425  
 43426  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 43427  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43428  			break
 43429  
 43430  		}
 43431  
 43432  	case uint32(0):
 43433  		{
 43434  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 43435  				return TCL_ERROR
 43436  			}
 43437  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 43438  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43439  			break
 43440  
 43441  		}
 43442  
 43443  	case uint32(2):
 43444  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 43445  		break
 43446  
 43447  	case uint32(3):
 43448  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 43449  		break
 43450  	}
 43451  
 43452  	return TCL_OK
 43453  }
 43454  
 43455  type BackupSubCommand = struct {
 43456  	FzCmd uintptr
 43457  	FeCmd uint32
 43458  	FnArg int32
 43459  	FzArg uintptr
 43460  }
 43461  
 43462  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 43463  	var pBackup uintptr = clientData
 43464  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 43465  }
 43466  
 43467  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43468  	bp := tls.Alloc(32)
 43469  	defer tls.Free(32)
 43470  
 43471  	var pBackup uintptr
 43472  
 43473  	var zDestName uintptr
 43474  	var zSrcName uintptr
 43475  	var zCmd uintptr
 43476  
 43477  	if objc != 6 {
 43478  		tcl.XTcl_WrongNumArgs(tls,
 43479  			interp, 1, objv, ts+28234)
 43480  		return TCL_ERROR
 43481  	}
 43482  
 43483  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 43484  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 43485  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 43486  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 43487  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 43488  
 43489  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 43490  	if !(pBackup != 0) {
 43491  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 43492  		return TCL_ERROR
 43493  	}
 43494  
 43495  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 43496  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 43497  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 43498  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 43499  	return TCL_OK
 43500  }
 43501  
 43502  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 43503  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 43504  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 43505  	}{backupTestInit})), uintptr(0), uintptr(0))
 43506  	return TCL_OK
 43507  }
 43508  
 43509  type tcl_vtab1 = struct {
 43510  	Fbase   sqlite3_vtab
 43511  	Finterp uintptr
 43512  	FpCmd   uintptr
 43513  	Fdb     uintptr
 43514  }
 43515  
 43516  type tcl_vtab = tcl_vtab1
 43517  type tcl_cursor1 = struct {
 43518  	Fbase  sqlite3_vtab_cursor
 43519  	FpStmt uintptr
 43520  }
 43521  
 43522  type tcl_cursor = tcl_cursor1
 43523  
 43524  func tclDequote(tls *libc.TLS, z uintptr) {
 43525  	var q int8 = *(*int8)(unsafe.Pointer(z))
 43526  
 43527  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 43528  		var iIn int32 = 1
 43529  		var iOut int32 = 0
 43530  		if int32(q) == '[' {
 43531  			q = int8(']')
 43532  		}
 43533  
 43534  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 43535  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 43536  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 43537  					iIn++
 43538  					break
 43539  				} else {
 43540  					iIn = iIn + 2
 43541  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 43542  				}
 43543  			} else {
 43544  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 43545  			}
 43546  		}
 43547  
 43548  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 43549  	}
 43550  }
 43551  
 43552  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43553  	bp := tls.Alloc(8)
 43554  	defer tls.Free(8)
 43555  
 43556  	var interp uintptr = pAux
 43557  	var pTab uintptr = uintptr(0)
 43558  	var zCmd uintptr = uintptr(0)
 43559  	var pScript uintptr = uintptr(0)
 43560  	var rc int32 = SQLITE_OK
 43561  
 43562  	if argc != 4 {
 43563  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 43564  		return SQLITE_ERROR
 43565  	}
 43566  
 43567  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 43568  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 43569  	if zCmd != 0 && pTab != 0 {
 43570  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 43571  		tclDequote(tls, zCmd)
 43572  		libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})))
 43573  
 43574  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 43575  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 43576  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 43577  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 43578  
 43579  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 43580  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 43581  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 43582  
 43583  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 43584  		if rc != TCL_OK {
 43585  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 43586  			rc = SQLITE_ERROR
 43587  		} else {
 43588  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 43589  		}
 43590  
 43591  		if rc != SQLITE_OK {
 43592  			sqlite3.Xsqlite3_free(tls, pTab)
 43593  			pTab = uintptr(0)
 43594  		}
 43595  	} else {
 43596  		rc = SQLITE_NOMEM
 43597  	}
 43598  
 43599  	sqlite3.Xsqlite3_free(tls, zCmd)
 43600  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 43601  	return rc
 43602  }
 43603  
 43604  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 43605  	var pTab uintptr = pVtab
 43606  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43607  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 43608  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43609  			tcl.XTclFreeObj(tls, _objPtr)
 43610  		}
 43611  	}
 43612  	sqlite3.Xsqlite3_free(tls, pTab)
 43613  	return SQLITE_OK
 43614  }
 43615  
 43616  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 43617  	var pCur uintptr
 43618  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 43619  	if pCur == uintptr(0) {
 43620  		return SQLITE_NOMEM
 43621  	}
 43622  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})))
 43623  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 43624  	return SQLITE_OK
 43625  }
 43626  
 43627  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 43628  	var pCur uintptr = cur
 43629  	if pCur != 0 {
 43630  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43631  		sqlite3.Xsqlite3_free(tls, pCur)
 43632  	}
 43633  	return SQLITE_OK
 43634  }
 43635  
 43636  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 43637  	bp := tls.Alloc(8)
 43638  	defer tls.Free(8)
 43639  
 43640  	var pCsr uintptr = pVtabCursor
 43641  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 43642  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43643  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 43644  		if rc != SQLITE_ROW {
 43645  			var zErr uintptr
 43646  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 43647  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 43648  			if rc != SQLITE_OK {
 43649  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 43650  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 43651  			}
 43652  		}
 43653  	}
 43654  	return SQLITE_OK
 43655  }
 43656  
 43657  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43658  	bp := tls.Alloc(56)
 43659  	defer tls.Free(56)
 43660  
 43661  	var pCsr uintptr = pVtabCursor
 43662  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43663  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 43664  	var pScript uintptr
 43665  	var pArg uintptr
 43666  	var ii int32
 43667  	var rc int32
 43668  
 43669  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 43670  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 43671  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 43672  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 43673  	if idxStr != 0 {
 43674  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 43675  	} else {
 43676  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 43677  	}
 43678  
 43679  	pArg = tcl.XTcl_NewObj(tls)
 43680  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 43681  	for ii = 0; ii < argc; ii++ {
 43682  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 43683  		var pVal uintptr
 43684  		if zVal == uintptr(0) {
 43685  			pVal = tcl.XTcl_NewObj(tls)
 43686  			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) {
 43687  				var pVal2 uintptr = uintptr(0)
 43688  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 43689  				if zVal != 0 {
 43690  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 43691  				} else {
 43692  					pVal2 = tcl.XTcl_NewObj(tls)
 43693  				}
 43694  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 43695  			}
 43696  		} else {
 43697  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 43698  		}
 43699  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 43700  	}
 43701  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 43702  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43703  		var _objPtr uintptr = pArg
 43704  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43705  			tcl.XTclFreeObj(tls, _objPtr)
 43706  		}
 43707  	}
 43708  
 43709  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 43710  	if rc != TCL_OK {
 43711  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 43712  		rc = SQLITE_ERROR
 43713  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 43714  	} else {
 43715  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 43716  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 43717  
 43718  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 43719  		if rc != TCL_OK {
 43720  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 43721  			rc = SQLITE_ERROR
 43722  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 43723  		} else {
 43724  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 43725  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 43726  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 43727  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 43728  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 43729  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 43730  					if rc != SQLITE_OK {
 43731  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 43732  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 43733  					}
 43734  				} else {
 43735  					rc = SQLITE_ERROR
 43736  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 43737  				}
 43738  			}
 43739  		}
 43740  	}
 43741  
 43742  	if rc == SQLITE_OK {
 43743  		rc = tclNext(tls, pVtabCursor)
 43744  	}
 43745  	return rc
 43746  }
 43747  
 43748  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 43749  	var pCsr uintptr = pVtabCursor
 43750  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 43751  	return SQLITE_OK
 43752  }
 43753  
 43754  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 43755  	var pCsr uintptr = pVtabCursor
 43756  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 43757  	return SQLITE_OK
 43758  }
 43759  
 43760  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 43761  	var pCsr uintptr = pVtabCursor
 43762  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 43763  }
 43764  
 43765  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 43766  	var ii int32
 43767  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 43768  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 43769  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43770  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43771  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 43772  		var zOp uintptr = ts + 3405
 43773  
 43774  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 43775  
 43776  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 43777  		case SQLITE_INDEX_CONSTRAINT_EQ:
 43778  			zOp = ts + 28365
 43779  			break
 43780  		case SQLITE_INDEX_CONSTRAINT_GT:
 43781  			zOp = ts + 28368
 43782  			break
 43783  		case SQLITE_INDEX_CONSTRAINT_LE:
 43784  			zOp = ts + 28371
 43785  			break
 43786  		case SQLITE_INDEX_CONSTRAINT_LT:
 43787  			zOp = ts + 28374
 43788  			break
 43789  		case SQLITE_INDEX_CONSTRAINT_GE:
 43790  			zOp = ts + 28377
 43791  			break
 43792  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 43793  			zOp = ts + 28380
 43794  			break
 43795  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 43796  			zOp = ts + 27587
 43797  			break
 43798  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 43799  			zOp = ts + 27592
 43800  			break
 43801  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43802  			zOp = ts + 6831
 43803  			break
 43804  		case SQLITE_INDEX_CONSTRAINT_NE:
 43805  			zOp = ts + 28386
 43806  			break
 43807  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 43808  			zOp = ts + 28389
 43809  			break
 43810  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 43811  			zOp = ts + 28395
 43812  			break
 43813  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 43814  			zOp = ts + 28405
 43815  			break
 43816  		case SQLITE_INDEX_CONSTRAINT_IS:
 43817  			zOp = ts + 5851
 43818  			break
 43819  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 43820  			zOp = ts + 28412
 43821  			break
 43822  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 43823  			zOp = ts + 28418
 43824  			break
 43825  		}
 43826  
 43827  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 43828  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 43829  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 43830  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 43831  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 43832  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 43833  
 43834  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 43835  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43836  			var _objPtr uintptr = pElem
 43837  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43838  				tcl.XTclFreeObj(tls, _objPtr)
 43839  			}
 43840  		}
 43841  	}
 43842  
 43843  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 43844  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 43845  		var _objPtr uintptr = pRes
 43846  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43847  			tcl.XTclFreeObj(tls, _objPtr)
 43848  		}
 43849  	}
 43850  }
 43851  
 43852  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 43853  	var ii int32
 43854  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 43855  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 43856  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 43857  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 43858  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 43859  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 43860  
 43861  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 43862  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 43863  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 43864  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 43865  
 43866  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 43867  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43868  			var _objPtr uintptr = pElem
 43869  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43870  				tcl.XTclFreeObj(tls, _objPtr)
 43871  			}
 43872  		}
 43873  	}
 43874  
 43875  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 43876  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 43877  		var _objPtr uintptr = pRes
 43878  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43879  			tcl.XTclFreeObj(tls, _objPtr)
 43880  		}
 43881  	}
 43882  }
 43883  
 43884  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43885  	bp := tls.Alloc(80)
 43886  	defer tls.Free(80)
 43887  
 43888  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 43889  		ts + 28444,
 43890  		ts + 28456,
 43891  		ts + 28464,
 43892  		ts + 28469,
 43893  		ts + 28478,
 43894  		ts + 28481,
 43895  		uintptr(0),
 43896  	}
 43897  
 43898  	var pIdxInfo uintptr = clientData
 43899  
 43900  	if objc < 2 {
 43901  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 43902  		return TCL_ERROR
 43903  	}
 43904  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+56) != 0 {
 43905  		return TCL_ERROR
 43906  	}
 43907  
 43908  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 43909  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 43910  		return TCL_ERROR
 43911  	}
 43912  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 43913  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 43914  		return TCL_ERROR
 43915  	}
 43916  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 43917  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 43918  		return TCL_ERROR
 43919  	}
 43920  
 43921  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 43922  	case 0:
 43923  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 43924  		break
 43925  
 43926  	case 1:
 43927  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 43928  		break
 43929  
 43930  	case 2:
 43931  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 43932  		break
 43933  
 43934  	case 3:
 43935  		{
 43936  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 43937  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 43938  			break
 43939  
 43940  		}
 43941  
 43942  	case 4:
 43943  		{
 43944  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 43945  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 43946  				return TCL_ERROR
 43947  			}
 43948  			tcl.XTcl_SetObjResult(tls, interp,
 43949  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 43950  			break
 43951  
 43952  		}
 43953  
 43954  	case 5:
 43955  		{
 43956  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 43957  			var rc int32
 43958  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 43959  			var zVal uintptr = ts + 584
 43960  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 43961  				return TCL_ERROR
 43962  			}
 43963  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 43964  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 43965  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 43966  				return TCL_ERROR
 43967  			}
 43968  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 43969  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 43970  			} else if objc == 4 {
 43971  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 43972  			}
 43973  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 43974  			break
 43975  
 43976  		}
 43977  	}
 43978  
 43979  	return TCL_OK
 43980  }
 43981  
 43982  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 43983  	bp := tls.Alloc(108)
 43984  	defer tls.Free(108)
 43985  
 43986  	var pTab uintptr = tab
 43987  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 43988  	var rc int32 = SQLITE_OK
 43989  
 43990  	var pScript uintptr
 43991  
 43992  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 43993  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 43994  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 43995  
 43996  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]int8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 43997  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 43998  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 43999  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 44000  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 44001  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44002  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 44003  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44004  		var _objPtr uintptr = pScript
 44005  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44006  			tcl.XTclFreeObj(tls, _objPtr)
 44007  		}
 44008  	}
 44009  
 44010  	if rc != TCL_OK {
 44011  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44012  		rc = SQLITE_ERROR
 44013  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44014  	} else {
 44015  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44016  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 44017  
 44018  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 44019  		if rc != TCL_OK {
 44020  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44021  			rc = SQLITE_ERROR
 44022  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 44023  		} else {
 44024  			var ii int32
 44025  			var iArgv int32 = 1
 44026  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 44027  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 44028  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 44029  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 44030  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 44031  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 44032  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 44033  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 44034  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 44035  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 44036  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 44037  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 44038  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 44039  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 44040  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 44041  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 44042  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 44043  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 44044  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 44045  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 44046  					if rc == SQLITE_OK {
 44047  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 44048  							rc = SQLITE_ERROR
 44049  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 44050  						} else {
 44051  							var bOmit int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*int8)(unsafe.Pointer(zCmd))) == 'O')
 44052  							(*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)
 44053  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 44054  						}
 44055  					}
 44056  				} else {
 44057  					rc = SQLITE_ERROR
 44058  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 44059  				}
 44060  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 44061  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44062  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 44063  				}
 44064  			}
 44065  		}
 44066  	}
 44067  
 44068  	return rc
 44069  }
 44070  
 44071  var iNext int32 = 43
 44072  
 44073  var tclModule = sqlite3_module{
 44074  	FxCreate:     0,
 44075  	FxConnect:    0,
 44076  	FxBestIndex:  0,
 44077  	FxDisconnect: 0,
 44078  	FxDestroy:    0,
 44079  	FxOpen:       0,
 44080  	FxClose:      0,
 44081  	FxFilter:     0,
 44082  	FxNext:       0,
 44083  	FxEof:        0,
 44084  	FxColumn:     0,
 44085  	FxRowid:      0,
 44086  }
 44087  
 44088  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44089  	bp := tls.Alloc(8)
 44090  	defer tls.Free(8)
 44091  
 44092  	if objc != 2 {
 44093  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44094  		return TCL_ERROR
 44095  	}
 44096  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44097  		return TCL_ERROR
 44098  	}
 44099  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 44100  	return TCL_OK
 44101  }
 44102  
 44103  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 44104  	var i int32
 44105  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 44106  		FzName      uintptr
 44107  		FxProc      uintptr
 44108  		FclientData uintptr
 44109  	}{})); i++ {
 44110  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 44111  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 44112  	}
 44113  	return TCL_OK
 44114  }
 44115  
 44116  var aObjCmd4 = [1]struct {
 44117  	FzName      uintptr
 44118  	FxProc      uintptr
 44119  	FclientData uintptr
 44120  }{
 44121  	{FzName: ts + 28585, FxProc: 0},
 44122  }
 44123  
 44124  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 44125  	bp := tls.Alloc(8)
 44126  	defer tls.Free(8)
 44127  
 44128  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 44129  	return uintptr(unsafe.Pointer(&buf))
 44130  }
 44131  
 44132  var buf [100]int8
 44133  
 44134  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 44135  	bp := tls.Alloc(8)
 44136  	defer tls.Free(8)
 44137  
 44138  	var z uintptr
 44139  
 44140  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44141  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 44142  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 44143  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint64(9)) {
 44144  		var channel Tcl_Channel
 44145  		var instanceData ClientData
 44146  
 44147  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 44148  		if !(channel != 0) {
 44149  			return TCL_ERROR
 44150  		}
 44151  
 44152  		tcl.XTcl_Flush(tls, channel)
 44153  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 44154  
 44155  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 44156  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 44157  	} else {
 44158  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 44159  	}
 44160  
 44161  	return TCL_OK
 44162  }
 44163  
 44164  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 44165  	bp := tls.Alloc(4)
 44166  	defer tls.Free(4)
 44167  
 44168  	var z uintptr
 44169  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44170  	return func() uintptr {
 44171  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 44172  			return z
 44173  		}
 44174  		return uintptr(0)
 44175  	}()
 44176  }
 44177  
 44178  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44179  	bp := tls.Alloc(40)
 44180  	defer tls.Free(40)
 44181  
 44182  	var zDb uintptr
 44183  	var zTable uintptr
 44184  	var zColumn uintptr
 44185  
 44186  	var zVarname uintptr
 44187  
 44188  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 44189  	var rc int32
 44190  
 44191  	if objc != 8 {
 44192  		var zUsage uintptr = ts + 28615
 44193  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 44194  		return TCL_ERROR
 44195  	}
 44196  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 44197  		return TCL_ERROR
 44198  	}
 44199  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 44200  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44201  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 44202  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 44203  		return TCL_ERROR
 44204  	}
 44205  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 44206  		return TCL_ERROR
 44207  	}
 44208  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 44209  
 44210  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 44211  		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)
 44212  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 44213  	} else {
 44214  		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))
 44215  	}
 44216  
 44217  	if rc == SQLITE_OK {
 44218  		tcl.XTcl_ResetResult(tls, interp)
 44219  	} else {
 44220  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44221  		return TCL_ERROR
 44222  	}
 44223  	return TCL_OK
 44224  }
 44225  
 44226  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44227  	bp := tls.Alloc(8)
 44228  	defer tls.Free(8)
 44229  
 44230  	var rc int32
 44231  
 44232  	if objc != 2 {
 44233  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44234  		return TCL_ERROR
 44235  	}
 44236  
 44237  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44238  		return TCL_ERROR
 44239  	}
 44240  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44241  
 44242  	if rc != 0 {
 44243  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44244  	} else {
 44245  		tcl.XTcl_ResetResult(tls, interp)
 44246  	}
 44247  	return TCL_OK
 44248  }
 44249  
 44250  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44251  	bp := tls.Alloc(8)
 44252  	defer tls.Free(8)
 44253  
 44254  	var nByte int32
 44255  
 44256  	if objc != 2 {
 44257  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44258  		return TCL_ERROR
 44259  	}
 44260  
 44261  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44262  		return TCL_ERROR
 44263  	}
 44264  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44265  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 44266  
 44267  	return TCL_OK
 44268  }
 44269  
 44270  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44271  	bp := tls.Alloc(32)
 44272  	defer tls.Free(32)
 44273  
 44274  	var zBuf uintptr = uintptr(0)
 44275  	var rc int32
 44276  
 44277  	if objc != 4 {
 44278  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 44279  		return TCL_ERROR
 44280  	}
 44281  
 44282  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 44283  		return TCL_ERROR
 44284  	}
 44285  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 44286  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 44287  		return TCL_ERROR
 44288  	}
 44289  
 44290  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 44291  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 44292  		if zBuf == uintptr(0) {
 44293  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 44294  			return TCL_ERROR
 44295  		}
 44296  	}
 44297  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 44298  	if rc == SQLITE_OK {
 44299  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 44300  	} else {
 44301  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44302  	}
 44303  	tcl.XTcl_Free(tls, zBuf)
 44304  
 44305  	return func() int32 {
 44306  		if rc == SQLITE_OK {
 44307  			return TCL_OK
 44308  		}
 44309  		return TCL_ERROR
 44310  	}()
 44311  }
 44312  
 44313  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44314  	bp := tls.Alloc(16)
 44315  	defer tls.Free(16)
 44316  
 44317  	var rc int32
 44318  	var zBuf uintptr
 44319  
 44320  	if objc != 4 && objc != 5 {
 44321  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 44322  		return TCL_ERROR
 44323  	}
 44324  
 44325  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44326  		return TCL_ERROR
 44327  	}
 44328  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 44329  		return TCL_ERROR
 44330  	}
 44331  
 44332  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 44333  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 44334  		return TCL_ERROR
 44335  	}
 44336  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 44337  	if rc != SQLITE_OK {
 44338  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44339  	}
 44340  
 44341  	return func() int32 {
 44342  		if rc == SQLITE_OK {
 44343  			return TCL_OK
 44344  		}
 44345  		return TCL_ERROR
 44346  	}()
 44347  }
 44348  
 44349  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 44350  	var i int32
 44351  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 44352  		FzName uintptr
 44353  		FxProc uintptr
 44354  	}{})); i++ {
 44355  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 44356  	}
 44357  	return TCL_OK
 44358  }
 44359  
 44360  var aObjCmd5 = [5]struct {
 44361  	FzName uintptr
 44362  	FxProc uintptr
 44363  }{
 44364  	{FzName: ts + 28772, FxProc: 0},
 44365  	{FzName: ts + 28790, FxProc: 0},
 44366  	{FzName: ts + 28809, FxProc: 0},
 44367  	{FzName: ts + 28828, FxProc: 0},
 44368  	{FzName: ts + 28846, FxProc: 0},
 44369  }
 44370  
 44371  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44372  	var pBt uintptr
 44373  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 44374  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 44375  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 44376  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 44377  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 44378  	}
 44379  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 44380  	return TCL_OK
 44381  }
 44382  
 44383  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 44384  }
 44385  
 44386  func set_options(tls *libc.TLS, interp uintptr) {
 44387  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+14193,
 44388  		TCL_GLOBAL_ONLY)
 44389  
 44390  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28899, ts+14193, TCL_GLOBAL_ONLY)
 44391  
 44392  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28907, ts+14193, TCL_GLOBAL_ONLY)
 44393  
 44394  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28925, ts+28938, TCL_GLOBAL_ONLY)
 44395  
 44396  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28942, ts+28949, TCL_GLOBAL_ONLY)
 44397  
 44398  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 44399  
 44400  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 44401  
 44402  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 44403  
 44404  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 44405  
 44406  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28949, TCL_GLOBAL_ONLY)
 44407  
 44408  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28949, TCL_GLOBAL_ONLY)
 44409  
 44410  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28949, TCL_GLOBAL_ONLY)
 44411  
 44412  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+14193, TCL_GLOBAL_ONLY)
 44413  
 44414  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 44415  		ts+29060, TCL_GLOBAL_ONLY)
 44416  
 44417  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 44418  
 44419  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 44420  
 44421  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 44422  
 44423  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 44424  
 44425  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28949, TCL_GLOBAL_ONLY)
 44426  
 44427  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28949, TCL_GLOBAL_ONLY)
 44428  
 44429  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 44430  
 44431  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 44432  
 44433  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28949, TCL_GLOBAL_ONLY)
 44434  
 44435  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28949, TCL_GLOBAL_ONLY)
 44436  
 44437  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28949, TCL_GLOBAL_ONLY)
 44438  
 44439  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28949, TCL_GLOBAL_ONLY)
 44440  
 44441  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28949, TCL_GLOBAL_ONLY)
 44442  
 44443  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28949, TCL_GLOBAL_ONLY)
 44444  
 44445  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28949, TCL_GLOBAL_ONLY)
 44446  
 44447  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 44448  
 44449  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 44450  
 44451  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28949, TCL_GLOBAL_ONLY)
 44452  
 44453  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28949, TCL_GLOBAL_ONLY)
 44454  
 44455  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 44456  
 44457  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 44458  
 44459  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28949, TCL_GLOBAL_ONLY)
 44460  
 44461  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28949, TCL_GLOBAL_ONLY)
 44462  
 44463  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28949, TCL_GLOBAL_ONLY)
 44464  
 44465  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28949, TCL_GLOBAL_ONLY)
 44466  
 44467  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28949, TCL_GLOBAL_ONLY)
 44468  
 44469  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28949, TCL_GLOBAL_ONLY)
 44470  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 44471  		ts+14193, TCL_GLOBAL_ONLY)
 44472  
 44473  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28949, TCL_GLOBAL_ONLY)
 44474  
 44475  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28949, TCL_GLOBAL_ONLY)
 44476  
 44477  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28949, TCL_GLOBAL_ONLY)
 44478  
 44479  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28949, TCL_GLOBAL_ONLY)
 44480  
 44481  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28949, TCL_GLOBAL_ONLY)
 44482  
 44483  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28949, TCL_GLOBAL_ONLY)
 44484  
 44485  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28949, TCL_GLOBAL_ONLY)
 44486  
 44487  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 44488  		TCL_GLOBAL_ONLY)
 44489  
 44490  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28949, TCL_GLOBAL_ONLY)
 44491  
 44492  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28949, TCL_GLOBAL_ONLY)
 44493  
 44494  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28949, TCL_GLOBAL_ONLY)
 44495  
 44496  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28949, TCL_GLOBAL_ONLY)
 44497  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28949, TCL_GLOBAL_ONLY)
 44498  
 44499  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28949, TCL_GLOBAL_ONLY)
 44500  
 44501  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28949, TCL_GLOBAL_ONLY)
 44502  
 44503  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28949, TCL_GLOBAL_ONLY)
 44504  
 44505  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28949, TCL_GLOBAL_ONLY)
 44506  
 44507  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28949, TCL_GLOBAL_ONLY)
 44508  
 44509  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28949, TCL_GLOBAL_ONLY)
 44510  
 44511  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28949, TCL_GLOBAL_ONLY)
 44512  
 44513  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 44514  
 44515  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 44516  
 44517  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 44518  
 44519  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28949, TCL_GLOBAL_ONLY)
 44520  
 44521  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 44522  
 44523  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28949, TCL_GLOBAL_ONLY)
 44524  
 44525  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28949, TCL_GLOBAL_ONLY)
 44526  
 44527  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 44528  
 44529  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 44530  
 44531  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28949, TCL_GLOBAL_ONLY)
 44532  
 44533  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28949, TCL_GLOBAL_ONLY)
 44534  
 44535  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 44536  
 44537  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28949, TCL_GLOBAL_ONLY)
 44538  
 44539  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 44540  
 44541  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28949, TCL_GLOBAL_ONLY)
 44542  
 44543  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28949, TCL_GLOBAL_ONLY)
 44544  
 44545  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 44546  		func() uintptr {
 44547  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 44548  				return ts + 28949
 44549  			}
 44550  			return ts + 14193
 44551  		}(),
 44552  		TCL_GLOBAL_ONLY)
 44553  
 44554  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28949, TCL_GLOBAL_ONLY)
 44555  
 44556  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28949, TCL_GLOBAL_ONLY)
 44557  
 44558  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28949, TCL_GLOBAL_ONLY)
 44559  
 44560  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 44561  
 44562  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28949, TCL_GLOBAL_ONLY)
 44563  
 44564  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28949, TCL_GLOBAL_ONLY)
 44565  
 44566  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28949, TCL_GLOBAL_ONLY)
 44567  
 44568  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28949, TCL_GLOBAL_ONLY)
 44569  
 44570  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28949, TCL_GLOBAL_ONLY)
 44571  
 44572  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28949, TCL_GLOBAL_ONLY)
 44573  
 44574  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28949, TCL_GLOBAL_ONLY)
 44575  
 44576  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 44577  
 44578  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28949, TCL_GLOBAL_ONLY)
 44579  
 44580  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28949, TCL_GLOBAL_ONLY)
 44581  
 44582  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28949, TCL_GLOBAL_ONLY)
 44583  
 44584  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28949, TCL_GLOBAL_ONLY)
 44585  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28949, TCL_GLOBAL_ONLY)
 44586  
 44587  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 44588  
 44589  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 44590  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 44591  
 44592  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28949, TCL_GLOBAL_ONLY)
 44593  
 44594  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28949, TCL_GLOBAL_ONLY)
 44595  
 44596  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28949, TCL_GLOBAL_ONLY)
 44597  
 44598  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 44599  		func() uintptr {
 44600  			if 1 != 0 {
 44601  				return ts + 28949
 44602  			}
 44603  			return ts + 14193
 44604  		}(), TCL_GLOBAL_ONLY)
 44605  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 44606  		func() uintptr {
 44607  			if SQLITE_THREADSAFE == 1 {
 44608  				return ts + 28949
 44609  			}
 44610  			return ts + 14193
 44611  		}(), TCL_GLOBAL_ONLY)
 44612  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 44613  		func() uintptr {
 44614  			if SQLITE_THREADSAFE == 2 {
 44615  				return ts + 28949
 44616  			}
 44617  			return ts + 14193
 44618  		}(), TCL_GLOBAL_ONLY)
 44619  
 44620  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28949, TCL_GLOBAL_ONLY)
 44621  
 44622  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28949, TCL_GLOBAL_ONLY)
 44623  
 44624  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28949, TCL_GLOBAL_ONLY)
 44625  
 44626  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28949, TCL_GLOBAL_ONLY)
 44627  
 44628  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28949, TCL_GLOBAL_ONLY)
 44629  
 44630  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28949, TCL_GLOBAL_ONLY)
 44631  
 44632  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28949, TCL_GLOBAL_ONLY)
 44633  
 44634  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28949, TCL_GLOBAL_ONLY)
 44635  
 44636  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28949, TCL_GLOBAL_ONLY)
 44637  
 44638  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28949, TCL_GLOBAL_ONLY)
 44639  
 44640  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 44641  
 44642  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28949, TCL_GLOBAL_ONLY)
 44643  
 44644  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 44645  
 44646  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 44647  
 44648  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 44649  
 44650  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 44651  
 44652  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 44653  
 44654  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 44655  
 44656  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 44657  
 44658  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 44659  
 44660  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28949, TCL_GLOBAL_ONLY)
 44661  
 44662  	{
 44663  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44664  	}
 44665  
 44666  	{
 44667  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44668  	}
 44669  
 44670  	{
 44671  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44672  	}
 44673  
 44674  	{
 44675  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44676  	}
 44677  
 44678  	{
 44679  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44680  	}
 44681  
 44682  	{
 44683  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44684  	}
 44685  
 44686  	{
 44687  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44688  	}
 44689  
 44690  	{
 44691  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44692  	}
 44693  
 44694  	{
 44695  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44696  	}
 44697  
 44698  	{
 44699  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44700  	}
 44701  
 44702  	{
 44703  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44704  	}
 44705  
 44706  	{
 44707  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44708  	}
 44709  
 44710  	{
 44711  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44712  	}
 44713  
 44714  	{
 44715  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44716  	}
 44717  
 44718  	{
 44719  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44720  	}
 44721  
 44722  	{
 44723  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44724  	}
 44725  
 44726  	{
 44727  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44728  	}
 44729  
 44730  	{
 44731  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44732  	}
 44733  
 44734  	{
 44735  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44736  	}
 44737  
 44738  	{
 44739  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44740  	}
 44741  
 44742  	{
 44743  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 44744  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44745  
 44746  	}
 44747  
 44748  	{
 44749  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 44750  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44751  
 44752  	}
 44753  }
 44754  
 44755  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 44756  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 44757  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 44758  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 44759  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 44760  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 44761  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 44762  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 44763  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 44764  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 44765  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 44766  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 44767  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 44768  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 44769  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 44770  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 44771  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 44772  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 44773  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 44774  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 44775  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 44776  var cv___GNUC__ int32 = 1
 44777  
 44778  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 44779  	set_options(tls, interp)
 44780  	return TCL_OK
 44781  }
 44782  
 44783  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 44784  	var i int32
 44785  	var sz int32
 44786  	sz = int32(libc.Xstrlen(tls, z))
 44787  	for i = sz - 1; i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 44788  	}
 44789  	if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 44790  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4))
 44791  	}
 44792  }
 44793  
 44794  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 44795  	var rc int32 = SQLITE_ERROR
 44796  
 44797  	rc = libc.Xaccess(tls, zFile, F_OK)
 44798  	if rc != 0 {
 44799  		if *(*int32)(unsafe.Pointer(libc.X__errno(tls))) == ENOENT {
 44800  			if pbExists != 0 {
 44801  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 44802  			}
 44803  			rc = SQLITE_OK
 44804  		}
 44805  	} else {
 44806  		if pbExists != 0 {
 44807  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 44808  		}
 44809  		rc = libc.Xunlink(tls, zFile)
 44810  	}
 44811  	return rc
 44812  }
 44813  
 44814  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 44815  	bp := tls.Alloc(156)
 44816  	defer tls.Free(156)
 44817  
 44818  	var zBuf uintptr
 44819  	var nBuf int32
 44820  	var rc int32 = 0
 44821  	var i int32
 44822  
 44823  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 44824  
 44825  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 44826  		{FzFmt: ts + 30634},
 44827  		{FzFmt: ts + 30641},
 44828  		{FzFmt: ts + 30656},
 44829  		{FzFmt: ts + 30634, Fb83: 1},
 44830  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 44831  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 44832  	}
 44833  
 44834  	var pVfs uintptr = uintptr(0)
 44835  
 44836  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 44837  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 44838  	if zBuf == uintptr(0) {
 44839  		return SQLITE_NOMEM
 44840  	}
 44841  
 44842  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 44843  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 44844  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 44845  		if rc == 0 && i != 0 {
 44846  			sqlite3Delete83Name(tls, zBuf)
 44847  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 44848  		}
 44849  	}
 44850  
 44851  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 44852  		var p uintptr = bp + 56 + uintptr(i)*16
 44853  		var iChunk int32
 44854  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 44855  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 44856  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 44857  				sqlite3Delete83Name(tls, zBuf)
 44858  			}
 44859  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 44860  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 44861  				break
 44862  			}
 44863  		}
 44864  	}
 44865  
 44866  	sqlite3.Xsqlite3_free(tls, zBuf)
 44867  	return func() int32 {
 44868  		if rc != 0 {
 44869  			return SQLITE_ERROR
 44870  		}
 44871  		return SQLITE_OK
 44872  	}()
 44873  }
 44874  
 44875  type MFile = struct {
 44876  	FzFmt    uintptr
 44877  	FiOffset int32
 44878  	Fb83     int32
 44879  }
 44880  
 44881  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 44882  	return TCL_OK
 44883  }
 44884  
 44885  type devsym_file1 = struct {
 44886  	Fbase  sqlite3_file
 44887  	FpReal uintptr
 44888  }
 44889  
 44890  type devsym_file = devsym_file1
 44891  
 44892  type DevsymGlobal = struct {
 44893  	FpVfs        uintptr
 44894  	FiDeviceChar int32
 44895  	FiSectorSize int32
 44896  	FnWriteCrash int32
 44897  	F__ccgo_pad1 [4]byte
 44898  }
 44899  
 44900  var g1 = DevsymGlobal{FiSectorSize: 512}
 44901  
 44902  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 44903  	var p uintptr = pFile
 44904  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 44905  	return SQLITE_OK
 44906  }
 44907  
 44908  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 44909  	var p uintptr = pFile
 44910  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 44911  }
 44912  
 44913  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 44914  	var p uintptr = pFile
 44915  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 44916  }
 44917  
 44918  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 44919  	var p uintptr = pFile
 44920  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 44921  }
 44922  
 44923  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 44924  	var p uintptr = pFile
 44925  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 44926  }
 44927  
 44928  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 44929  	var p uintptr = pFile
 44930  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 44931  }
 44932  
 44933  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 44934  	var p uintptr = pFile
 44935  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 44936  }
 44937  
 44938  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 44939  	var p uintptr = pFile
 44940  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 44941  }
 44942  
 44943  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 44944  	var p uintptr = pFile
 44945  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 44946  }
 44947  
 44948  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 44949  	var p uintptr = pFile
 44950  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 44951  }
 44952  
 44953  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 44954  	return g1.FiSectorSize
 44955  }
 44956  
 44957  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 44958  	return g1.FiDeviceChar
 44959  }
 44960  
 44961  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 44962  	var p uintptr = pFile
 44963  	return (*struct {
 44964  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 44965  	})(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)
 44966  }
 44967  
 44968  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 44969  	var p uintptr = pFile
 44970  	return (*struct {
 44971  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 44972  	})(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)
 44973  }
 44974  
 44975  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 44976  	var p uintptr = pFile
 44977  	(*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)
 44978  }
 44979  
 44980  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 44981  	var p uintptr = pFile
 44982  	return (*struct {
 44983  		f func(*libc.TLS, uintptr, int32) int32
 44984  	})(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)
 44985  }
 44986  
 44987  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 44988  	var rc int32
 44989  	var p uintptr = pFile
 44990  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 44991  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 44992  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 44993  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 44994  	}
 44995  	return rc
 44996  }
 44997  
 44998  var devsym_io_methods = sqlite3_io_methods{
 44999  	FiVersion:               2,
 45000  	FxClose:                 0,
 45001  	FxRead:                  0,
 45002  	FxWrite:                 0,
 45003  	FxTruncate:              0,
 45004  	FxSync:                  0,
 45005  	FxFileSize:              0,
 45006  	FxLock:                  0,
 45007  	FxUnlock:                0,
 45008  	FxCheckReservedLock:     0,
 45009  	FxFileControl:           0,
 45010  	FxSectorSize:            0,
 45011  	FxDeviceCharacteristics: 0,
 45012  	FxShmMap:                0,
 45013  	FxShmLock:               0,
 45014  	FxShmBarrier:            0,
 45015  	FxShmUnmap:              0,
 45016  }
 45017  
 45018  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 45019  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 45020  }
 45021  
 45022  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 45023  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 45024  }
 45025  
 45026  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 45027  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 45028  }
 45029  
 45030  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 45031  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 45032  }
 45033  
 45034  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 45035  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 45036  }
 45037  
 45038  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 45039  	return (*struct {
 45040  		f func(*libc.TLS, uintptr, uintptr) int32
 45041  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 45042  }
 45043  
 45044  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45045  	var p uintptr = pFile
 45046  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45047  }
 45048  
 45049  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45050  	var p uintptr = pFile
 45051  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45052  }
 45053  
 45054  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45055  	var p uintptr = pFile
 45056  	if g1.FnWriteCrash > 0 {
 45057  		g1.FnWriteCrash--
 45058  		if g1.FnWriteCrash == 0 {
 45059  			libc.Xabort(tls)
 45060  		}
 45061  	}
 45062  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45063  }
 45064  
 45065  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45066  	var rc int32
 45067  	var p uintptr = pFile
 45068  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45069  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45070  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45071  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 45072  	}
 45073  	return rc
 45074  }
 45075  
 45076  var writecrash_io_methods = sqlite3_io_methods{
 45077  	FiVersion:               2,
 45078  	FxClose:                 0,
 45079  	FxRead:                  0,
 45080  	FxWrite:                 0,
 45081  	FxTruncate:              0,
 45082  	FxSync:                  0,
 45083  	FxFileSize:              0,
 45084  	FxLock:                  0,
 45085  	FxUnlock:                0,
 45086  	FxCheckReservedLock:     0,
 45087  	FxFileControl:           0,
 45088  	FxSectorSize:            0,
 45089  	FxDeviceCharacteristics: 0,
 45090  	FxShmMap:                0,
 45091  	FxShmLock:               0,
 45092  	FxShmBarrier:            0,
 45093  	FxShmUnmap:              0,
 45094  }
 45095  
 45096  var devsym_vfs = sqlite3_vfs{
 45097  	FiVersion:      2,
 45098  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45099  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45100  	FzName:         ts + 30667,
 45101  	FxOpen:         0,
 45102  	FxDelete:       0,
 45103  	FxAccess:       0,
 45104  	FxFullPathname: 0,
 45105  	FxRandomness:   0,
 45106  	FxSleep:        0,
 45107  	FxCurrentTime:  0,
 45108  }
 45109  
 45110  var writecrash_vfs = sqlite3_vfs{
 45111  	FiVersion:      2,
 45112  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45113  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45114  	FzName:         ts + 30674,
 45115  	FxOpen:         0,
 45116  	FxDelete:       0,
 45117  	FxAccess:       0,
 45118  	FxFullPathname: 0,
 45119  	FxRandomness:   0,
 45120  	FxSleep:        0,
 45121  	FxCurrentTime:  0,
 45122  }
 45123  
 45124  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 45125  	if g1.FpVfs == uintptr(0) {
 45126  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45127  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45128  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45129  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45130  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45131  	}
 45132  	if iDeviceChar >= 0 {
 45133  		g1.FiDeviceChar = iDeviceChar
 45134  	} else {
 45135  		g1.FiDeviceChar = 0
 45136  	}
 45137  	if iSectorSize >= 0 {
 45138  		g1.FiSectorSize = iSectorSize
 45139  	} else {
 45140  		g1.FiSectorSize = 512
 45141  	}
 45142  }
 45143  
 45144  func devsym_unregister(tls *libc.TLS) {
 45145  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 45146  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 45147  	g1.FpVfs = uintptr(0)
 45148  	g1.FiDeviceChar = 0
 45149  	g1.FiSectorSize = 0
 45150  }
 45151  
 45152  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 45153  	if g1.FpVfs == uintptr(0) {
 45154  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45155  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45156  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45157  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45158  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45159  	}
 45160  	g1.FnWriteCrash = nWrite
 45161  }
 45162  
 45163  type Tcl_StatBuf = stat
 45164  
 45165  type fs_vtab1 = struct {
 45166  	Fbase sqlite3_vtab
 45167  	Fdb   uintptr
 45168  	FzDb  uintptr
 45169  	FzTbl uintptr
 45170  }
 45171  
 45172  type fs_vtab = fs_vtab1
 45173  type fs_cursor1 = struct {
 45174  	Fbase   sqlite3_vtab_cursor
 45175  	FpStmt  uintptr
 45176  	FzBuf   uintptr
 45177  	FnBuf   int32
 45178  	FnAlloc int32
 45179  }
 45180  
 45181  type fs_cursor = fs_cursor1
 45182  
 45183  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 45184  
 45185  type FsdirVtab = FsdirVtab1
 45186  type FsdirCsr1 = struct {
 45187  	Fbase   sqlite3_vtab_cursor
 45188  	FzDir   uintptr
 45189  	FpDir   uintptr
 45190  	FiRowid sqlite3_int64
 45191  	FpEntry uintptr
 45192  }
 45193  
 45194  type FsdirCsr = FsdirCsr1
 45195  
 45196  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45197  	var pTab uintptr
 45198  
 45199  	if argc != 3 {
 45200  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45201  		return SQLITE_ERROR
 45202  	}
 45203  
 45204  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 45205  	if !(pTab != 0) {
 45206  		return SQLITE_NOMEM
 45207  	}
 45208  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})))
 45209  
 45210  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45211  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 45212  
 45213  	return SQLITE_OK
 45214  }
 45215  
 45216  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 45217  	sqlite3.Xsqlite3_free(tls, pVtab)
 45218  	return SQLITE_OK
 45219  }
 45220  
 45221  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45222  	var ii int32
 45223  
 45224  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45225  
 45226  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45227  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45228  		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 {
 45229  			var pUsage uintptr
 45230  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45231  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 45232  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45233  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45234  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45235  			break
 45236  		}
 45237  	}
 45238  
 45239  	return SQLITE_OK
 45240  }
 45241  
 45242  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45243  	var pCur uintptr
 45244  
 45245  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 45246  	if pCur == uintptr(0) {
 45247  		return SQLITE_NOMEM
 45248  	}
 45249  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})))
 45250  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45251  	return SQLITE_OK
 45252  }
 45253  
 45254  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 45255  	var pCur uintptr = cur
 45256  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 45257  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 45258  	}
 45259  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 45260  	sqlite3.Xsqlite3_free(tls, pCur)
 45261  	return SQLITE_OK
 45262  }
 45263  
 45264  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 45265  	var pCsr uintptr = cur
 45266  
 45267  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45268  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45269  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 45270  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45271  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45272  		}
 45273  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 45274  	}
 45275  
 45276  	return SQLITE_OK
 45277  }
 45278  
 45279  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45280  	var pCsr uintptr = pVtabCursor
 45281  	var zDir uintptr
 45282  	var nDir int32
 45283  
 45284  	if idxNum != 1 || argc != 1 {
 45285  		return SQLITE_ERROR
 45286  	}
 45287  
 45288  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 45289  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45290  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45291  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45292  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45293  	}
 45294  
 45295  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45296  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45297  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 45298  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 45299  		return SQLITE_NOMEM
 45300  	}
 45301  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1))
 45302  
 45303  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45304  	return fsdirNext1(tls, pVtabCursor)
 45305  }
 45306  
 45307  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 45308  	var pCsr uintptr = cur
 45309  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 45310  }
 45311  
 45312  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45313  	var pCsr uintptr = cur
 45314  	switch i {
 45315  	case 0:
 45316  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 45317  		break
 45318  
 45319  	case 1:
 45320  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+24, -1, libc.UintptrFromInt32(-1))
 45321  		break
 45322  
 45323  	default:
 45324  	}
 45325  
 45326  	return SQLITE_OK
 45327  }
 45328  
 45329  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45330  	var pCsr uintptr = cur
 45331  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 45332  	return SQLITE_OK
 45333  }
 45334  
 45335  type FstreeVtab1 = struct {
 45336  	Fbase sqlite3_vtab
 45337  	Fdb   uintptr
 45338  }
 45339  
 45340  type FstreeVtab = FstreeVtab1
 45341  type FstreeCsr1 = struct {
 45342  	Fbase        sqlite3_vtab_cursor
 45343  	FpStmt       uintptr
 45344  	Ffd          int32
 45345  	F__ccgo_pad1 [4]byte
 45346  }
 45347  
 45348  type FstreeCsr = FstreeCsr1
 45349  
 45350  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45351  	var pTab uintptr
 45352  
 45353  	if argc != 3 {
 45354  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45355  		return SQLITE_ERROR
 45356  	}
 45357  
 45358  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 45359  	if !(pTab != 0) {
 45360  		return SQLITE_NOMEM
 45361  	}
 45362  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})))
 45363  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 45364  
 45365  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45366  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 45367  
 45368  	return SQLITE_OK
 45369  }
 45370  
 45371  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45372  	sqlite3.Xsqlite3_free(tls, pVtab)
 45373  	return SQLITE_OK
 45374  }
 45375  
 45376  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45377  	var ii int32
 45378  
 45379  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45380  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45381  		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 ||
 45382  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 45383  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 45384  			var pUsage uintptr
 45385  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45386  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 45387  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45388  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 45389  			return SQLITE_OK
 45390  		}
 45391  	}
 45392  
 45393  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45394  	return SQLITE_OK
 45395  }
 45396  
 45397  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45398  	var pCur uintptr
 45399  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 45400  	if pCur == uintptr(0) {
 45401  		return SQLITE_NOMEM
 45402  	}
 45403  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})))
 45404  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 45405  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45406  	return SQLITE_OK
 45407  }
 45408  
 45409  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 45410  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 45411  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 45412  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 45413  	}
 45414  }
 45415  
 45416  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 45417  	var pCsr uintptr = cur
 45418  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45419  	fstreeCloseFd(tls, pCsr)
 45420  	sqlite3.Xsqlite3_free(tls, pCsr)
 45421  	return SQLITE_OK
 45422  }
 45423  
 45424  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 45425  	var pCsr uintptr = cur
 45426  	var rc int32
 45427  
 45428  	fstreeCloseFd(tls, pCsr)
 45429  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45430  	if rc != SQLITE_ROW {
 45431  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45432  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 45433  	} else {
 45434  		rc = SQLITE_OK
 45435  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 45436  	}
 45437  
 45438  	return rc
 45439  }
 45440  
 45441  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45442  	bp := tls.Alloc(2)
 45443  	defer tls.Free(2)
 45444  
 45445  	var pCsr uintptr = pVtabCursor
 45446  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 45447  	var rc int32
 45448  	var zSql uintptr = ts + 30750
 45449  	var zRoot uintptr
 45450  	var nRoot int32
 45451  	var zPrefix uintptr
 45452  	var nPrefix int32
 45453  	var zDir uintptr
 45454  	var nDir int32
 45455  	*(*[2]int8)(unsafe.Pointer(bp)) = [2]int8{int8(0), int8(0)}
 45456  
 45457  	zRoot = ts + 30982
 45458  	nRoot = 1
 45459  	zPrefix = ts + 584
 45460  	nPrefix = 0
 45461  
 45462  	zDir = zRoot
 45463  	nDir = nRoot
 45464  
 45465  	fstreeCloseFd(tls, pCsr)
 45466  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45467  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 45468  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 45469  	if rc != SQLITE_OK {
 45470  		return rc
 45471  	}
 45472  
 45473  	if idxNum != 0 {
 45474  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45475  		switch idxNum {
 45476  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 45477  			*(*int8)(unsafe.Pointer(bp)) = int8('*')
 45478  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('?')
 45479  			break
 45480  			fallthrough
 45481  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 45482  			*(*int8)(unsafe.Pointer(bp)) = int8('_')
 45483  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('%')
 45484  			break
 45485  		}
 45486  
 45487  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 45488  			var i int32
 45489  			for i = nPrefix; *(*int8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 45490  				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))) {
 45491  					break
 45492  				}
 45493  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 45494  					nDir = i
 45495  				}
 45496  			}
 45497  			zDir = zQuery
 45498  		}
 45499  	}
 45500  	if nDir == 0 {
 45501  		nDir = 1
 45502  	}
 45503  
 45504  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 45505  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 45506  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 45507  
 45508  	return fstreeNext(tls, pVtabCursor)
 45509  }
 45510  
 45511  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 45512  	var pCsr uintptr = cur
 45513  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 45514  }
 45515  
 45516  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45517  	bp := tls.Alloc(128)
 45518  	defer tls.Free(128)
 45519  
 45520  	var pCsr uintptr = cur
 45521  	if i == 0 {
 45522  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 45523  	} else {
 45524  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 45525  
 45526  		if (*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0170000) == mode_t(0100000) {
 45527  			if i == 1 {
 45528  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 45529  			} else {
 45530  				var nRead int32
 45531  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode+mode_t(1)))
 45532  				if !(aBuf != 0) {
 45533  					return SQLITE_NOMEM
 45534  				}
 45535  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 45536  				if mode_t(nRead) != (*stat)(unsafe.Pointer(bp)).Fst_mode {
 45537  					return SQLITE_IOERR
 45538  				}
 45539  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 45540  				sqlite3.Xsqlite3_free(tls, aBuf)
 45541  			}
 45542  		}
 45543  	}
 45544  
 45545  	return SQLITE_OK
 45546  }
 45547  
 45548  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45549  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 45550  	return SQLITE_OK
 45551  }
 45552  
 45553  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45554  	var pVtab uintptr
 45555  	var nByte int32
 45556  	var zTbl uintptr
 45557  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 45558  
 45559  	if argc != 4 {
 45560  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45561  		return SQLITE_ERROR
 45562  	}
 45563  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 45564  
 45565  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 45566  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 45567  	if !(pVtab != 0) {
 45568  		return SQLITE_NOMEM
 45569  	}
 45570  
 45571  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 45572  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 45573  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 45574  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 45575  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 45576  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 45577  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 45578  
 45579  	return SQLITE_OK
 45580  }
 45581  
 45582  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45583  	sqlite3.Xsqlite3_free(tls, pVtab)
 45584  	return SQLITE_OK
 45585  }
 45586  
 45587  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45588  	var pCur uintptr
 45589  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 45590  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45591  	return SQLITE_OK
 45592  }
 45593  
 45594  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 45595  	var pCur uintptr = cur
 45596  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45597  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 45598  	sqlite3.Xsqlite3_free(tls, pCur)
 45599  	return SQLITE_OK
 45600  }
 45601  
 45602  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 45603  	var pCur uintptr = cur
 45604  	var rc int32
 45605  
 45606  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45607  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 45608  		rc = SQLITE_OK
 45609  	}
 45610  
 45611  	return rc
 45612  }
 45613  
 45614  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45615  	bp := tls.Alloc(32)
 45616  	defer tls.Free(32)
 45617  
 45618  	var rc int32
 45619  	var pCur uintptr = pVtabCursor
 45620  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 45621  
 45622  	if idxNum == 1 {
 45623  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 45624  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 45625  		if !(zStmt != 0) {
 45626  			return SQLITE_NOMEM
 45627  		}
 45628  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 45629  		sqlite3.Xsqlite3_free(tls, zStmt)
 45630  		if rc == SQLITE_OK {
 45631  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 45632  		}
 45633  	} else {
 45634  		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))
 45635  		if !(zStmt != 0) {
 45636  			return SQLITE_NOMEM
 45637  		}
 45638  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 45639  		sqlite3.Xsqlite3_free(tls, zStmt)
 45640  	}
 45641  
 45642  	if rc == SQLITE_OK {
 45643  		rc = fsNext(tls, pVtabCursor)
 45644  	}
 45645  	return rc
 45646  }
 45647  
 45648  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45649  	bp := tls.Alloc(128)
 45650  	defer tls.Free(128)
 45651  
 45652  	var pCur uintptr = cur
 45653  
 45654  	if i == 0 {
 45655  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 45656  	} else {
 45657  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 45658  
 45659  		var fd int32
 45660  		var n int32
 45661  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 45662  		if fd < 0 {
 45663  			return SQLITE_IOERR
 45664  		}
 45665  		libc.Xfstat(tls, fd, bp)
 45666  
 45667  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= off_t((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 45668  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 45669  			var zNew uintptr
 45670  			if nNew < int64(1024) {
 45671  				nNew = int64(1024)
 45672  			}
 45673  
 45674  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 45675  			if zNew == uintptr(0) {
 45676  				libc.Xclose(tls, fd)
 45677  				return SQLITE_NOMEM
 45678  			}
 45679  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 45680  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 45681  		}
 45682  
 45683  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 45684  		libc.Xclose(tls, fd)
 45685  		if off_t(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 45686  			return SQLITE_ERROR
 45687  		}
 45688  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 45689  		*(*int8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = int8(0)
 45690  
 45691  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 45692  	}
 45693  	return SQLITE_OK
 45694  }
 45695  
 45696  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45697  	var pCur uintptr = cur
 45698  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 45699  	return SQLITE_OK
 45700  }
 45701  
 45702  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 45703  	var pCur uintptr = cur
 45704  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 45705  }
 45706  
 45707  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45708  	var ii int32
 45709  
 45710  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45711  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45712  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 45713  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 45714  			var pUsage uintptr
 45715  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45716  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 45717  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45718  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45719  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45720  			break
 45721  		}
 45722  	}
 45723  
 45724  	return SQLITE_OK
 45725  }
 45726  
 45727  var fsModule = sqlite3_module{
 45728  	FxCreate:     0,
 45729  	FxConnect:    0,
 45730  	FxBestIndex:  0,
 45731  	FxDisconnect: 0,
 45732  	FxDestroy:    0,
 45733  	FxOpen:       0,
 45734  	FxClose:      0,
 45735  	FxFilter:     0,
 45736  	FxNext:       0,
 45737  	FxEof:        0,
 45738  	FxColumn:     0,
 45739  	FxRowid:      0,
 45740  }
 45741  
 45742  var fsdirModule = sqlite3_module{
 45743  	FxCreate:     0,
 45744  	FxConnect:    0,
 45745  	FxBestIndex:  0,
 45746  	FxDisconnect: 0,
 45747  	FxDestroy:    0,
 45748  	FxOpen:       0,
 45749  	FxClose:      0,
 45750  	FxFilter:     0,
 45751  	FxNext:       0,
 45752  	FxEof:        0,
 45753  	FxColumn:     0,
 45754  	FxRowid:      0,
 45755  }
 45756  
 45757  var fstreeModule = sqlite3_module{
 45758  	FxCreate:     0,
 45759  	FxConnect:    0,
 45760  	FxBestIndex:  0,
 45761  	FxDisconnect: 0,
 45762  	FxDestroy:    0,
 45763  	FxOpen:       0,
 45764  	FxClose:      0,
 45765  	FxFilter:     0,
 45766  	FxNext:       0,
 45767  	FxEof:        0,
 45768  	FxColumn:     0,
 45769  	FxRowid:      0,
 45770  }
 45771  
 45772  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45773  	bp := tls.Alloc(8)
 45774  	defer tls.Free(8)
 45775  
 45776  	if objc != 2 {
 45777  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 45778  		return TCL_ERROR
 45779  	}
 45780  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 45781  		return TCL_ERROR
 45782  	}
 45783  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 45784  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 45785  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 45786  	return TCL_OK
 45787  }
 45788  
 45789  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 45790  	var i int32
 45791  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 45792  		FzName      uintptr
 45793  		FxProc      uintptr
 45794  		FclientData uintptr
 45795  	}{})); i++ {
 45796  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 45797  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 45798  	}
 45799  	return TCL_OK
 45800  }
 45801  
 45802  var aObjCmd6 = [1]struct {
 45803  	FzName      uintptr
 45804  	FxProc      uintptr
 45805  	FclientData uintptr
 45806  }{
 45807  	{FzName: ts + 31065, FxProc: 0},
 45808  }
 45809  
 45810  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 45811  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 45812  	if !(z != 0) && nByte > 0 {
 45813  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 45814  	}
 45815  	return z
 45816  }
 45817  
 45818  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 45819  	bp := tls.Alloc(1004)
 45820  	defer tls.Free(1004)
 45821  
 45822  	var iMin int32
 45823  	var iMax int32
 45824  	var n int32
 45825  
 45826  	var i int32
 45827  
 45828  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45829  	if iMin < 0 {
 45830  		iMin = 0
 45831  	}
 45832  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 45833  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 45834  	}
 45835  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 45836  	if iMax < iMin {
 45837  		iMax = iMin
 45838  	}
 45839  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 45840  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 45841  	}
 45842  	n = iMin
 45843  	if iMax > iMin {
 45844  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 45845  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 45846  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 45847  	}
 45848  
 45849  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 45850  	for i = 0; i < n; i++ {
 45851  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 45852  	}
 45853  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 45854  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 45855  }
 45856  
 45857  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 45858  
 45859  var test_destructor_count_var int32 = 0
 45860  
 45861  func destructor(tls *libc.TLS, p uintptr) {
 45862  	var zVal uintptr = p
 45863  
 45864  	zVal--
 45865  	sqlite3.Xsqlite3_free(tls, zVal)
 45866  	test_destructor_count_var--
 45867  }
 45868  
 45869  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45870  	var zVal uintptr
 45871  	var len int32
 45872  
 45873  	test_destructor_count_var++
 45874  
 45875  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 45876  		return
 45877  	}
 45878  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45879  	zVal = testContextMalloc(tls, pCtx, len+3)
 45880  	if !(zVal != 0) {
 45881  		return
 45882  	}
 45883  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 45884  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 45885  	zVal++
 45886  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 45887  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 45888  }
 45889  
 45890  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45891  	var zVal uintptr
 45892  	var len int32
 45893  
 45894  	test_destructor_count_var++
 45895  
 45896  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 45897  		return
 45898  	}
 45899  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45900  	zVal = testContextMalloc(tls, pCtx, len+3)
 45901  	if !(zVal != 0) {
 45902  		return
 45903  	}
 45904  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 45905  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 45906  	zVal++
 45907  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 45908  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 45909  }
 45910  
 45911  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45912  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 45913  }
 45914  
 45915  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 45916  }
 45917  
 45918  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 45919  	var z uintptr
 45920  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 45921  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 45922  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 45923  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 45924  }
 45925  
 45926  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 45927  	sqlite3.Xsqlite3_free(tls, p)
 45928  }
 45929  
 45930  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45931  	var i int32
 45932  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 45933  	if !(zRet != 0) {
 45934  		return
 45935  	}
 45936  	libc.Xmemset(tls, zRet, 0, uint64(nArg*2))
 45937  	for i = 0; i < nArg; i++ {
 45938  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 45939  		if z != 0 {
 45940  			var n int32
 45941  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 45942  			if zAux != 0 {
 45943  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('1')
 45944  
 45945  			} else {
 45946  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('0')
 45947  			}
 45948  			n = int32(libc.Xstrlen(tls, z)) + 1
 45949  			zAux = testContextMalloc(tls, pCtx, n)
 45950  			if zAux != 0 {
 45951  				libc.Xmemcpy(tls, zAux, z, uint64(n))
 45952  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 45953  			}
 45954  			*(*int8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = int8(' ')
 45955  		}
 45956  	}
 45957  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 45958  }
 45959  
 45960  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45961  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 45962  	if nArg == 2 {
 45963  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 45964  	}
 45965  }
 45966  
 45967  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45968  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 45969  	if pCounter == uintptr(0) {
 45970  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 45971  		if pCounter == uintptr(0) {
 45972  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 45973  			return
 45974  		}
 45975  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45976  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 45977  	} else {
 45978  		*(*int32)(unsafe.Pointer(pCounter))++
 45979  	}
 45980  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 45981  }
 45982  
 45983  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45984  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45985  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45986  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45987  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45988  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 45989  }
 45990  
 45991  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45992  	bp := tls.Alloc(16)
 45993  	defer tls.Free(16)
 45994  
 45995  	var rc int32
 45996  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 45997  	var zSql uintptr
 45998  
 45999  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46000  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 46001  	if rc == SQLITE_OK {
 46002  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46003  		if rc == SQLITE_ROW {
 46004  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 46005  		}
 46006  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46007  	}
 46008  	if rc != 0 {
 46009  		var zErr uintptr
 46010  
 46011  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 46012  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46013  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 46014  	}
 46015  }
 46016  
 46017  func testHexChar(tls *libc.TLS, c int8) int32 {
 46018  	if int32(c) >= '0' && int32(c) <= '9' {
 46019  		return int32(c) - '0'
 46020  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 46021  		return int32(c) - 'a' + 10
 46022  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 46023  		return int32(c) - 'A' + 10
 46024  	}
 46025  	return 0
 46026  }
 46027  
 46028  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 46029  	for *(*int8)(unsafe.Pointer(zIn)) != 0 && *(*int8)(unsafe.Pointer(zIn + 1)) != 0 {
 46030  		*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = int8(testHexChar(tls, *(*int8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*int8)(unsafe.Pointer(zIn + 1))))
 46031  		zIn += uintptr(2)
 46032  	}
 46033  }
 46034  
 46035  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46036  	var n int32
 46037  	var zIn uintptr
 46038  	var zOut uintptr
 46039  
 46040  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46041  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46042  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46043  	if zOut == uintptr(0) {
 46044  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46045  	} else {
 46046  		testHexToBin(tls, zIn, zOut)
 46047  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46048  	}
 46049  }
 46050  
 46051  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46052  	var n int32
 46053  	var zIn uintptr
 46054  	var zOut uintptr
 46055  
 46056  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46057  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46058  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46059  	if zOut == uintptr(0) {
 46060  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46061  	} else {
 46062  		testHexToBin(tls, zIn, zOut)
 46063  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46064  	}
 46065  }
 46066  
 46067  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46068  	var n int32
 46069  	var zIn uintptr
 46070  	var zOut uintptr
 46071  
 46072  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46073  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46074  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46075  	if zOut == uintptr(0) {
 46076  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46077  	} else {
 46078  		testHexToBin(tls, zIn, zOut)
 46079  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46080  	}
 46081  }
 46082  
 46083  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46084  	bp := tls.Alloc(28)
 46085  	defer tls.Free(28)
 46086  
 46087  	var i int32
 46088  	var bigEndian int32
 46089  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 46090  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 46091  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46092  	for i = 0; i < 8; i++ {
 46093  		if bigEndian != 0 {
 46094  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46095  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46096  		} else {
 46097  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46098  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46099  		}
 46100  	}
 46101  	*(*int8)(unsafe.Pointer(bp + 8 + 16)) = int8(0)
 46102  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 46103  }
 46104  
 46105  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46106  	bp := tls.Alloc(72)
 46107  	defer tls.Free(72)
 46108  
 46109  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46110  	var pRec uintptr
 46111  	var pEndHdr uintptr
 46112  	var pHdr uintptr
 46113  	var pBody uintptr
 46114  
 46115  	var iIdx int32
 46116  	var iCurrent int32 = 0
 46117  
 46118  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46119  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46120  
 46121  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 46122  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 46123  
 46124  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 46125  		libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})))
 46126  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 46127  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46128  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 46129  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 46130  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 46131  
 46132  		if iCurrent == iIdx {
 46133  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 46134  		}
 46135  
 46136  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 46137  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 46138  		}
 46139  	}
 46140  }
 46141  
 46142  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46143  	bp := tls.Alloc(123)
 46144  	defer tls.Free(123)
 46145  
 46146  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46147  	var pRec uintptr
 46148  	var pEndHdr uintptr
 46149  	var pHdr uintptr
 46150  	var pBody uintptr
 46151  
 46152  	var pRet uintptr
 46153  
 46154  	pRet = tcl.XTcl_NewObj(tls)
 46155  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 46156  
 46157  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46158  
 46159  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 46160  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 46161  	for pHdr < pEndHdr {
 46162  		var pVal uintptr = uintptr(0)
 46163  
 46164  		libc.Xmemset(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})))
 46165  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 46166  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46167  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 46168  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 46169  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 46170  
 46171  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 46172  		case SQLITE_TEXT:
 46173  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 46174  			break
 46175  
 46176  		case SQLITE_BLOB:
 46177  			{
 46178  				*(*[16]int8)(unsafe.Pointer(bp + 107)) = [16]int8{
 46179  					int8('0'), int8('1'), int8('2'), int8('3'), int8('4'), int8('5'), int8('6'), int8('7'),
 46180  					int8('8'), int8('9'), int8('a'), int8('b'), int8('c'), int8('d'), int8('e'), int8('f'),
 46181  				}
 46182  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 46183  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 46184  				var i int32
 46185  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 46186  				for i = 0; i < n; i++ {
 46187  					*(*int8)(unsafe.Pointer(bp + 104)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 46188  					*(*int8)(unsafe.Pointer(bp + 104 + 1)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 46189  					*(*int8)(unsafe.Pointer(bp + 104 + 2)) = int8(0)
 46190  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 46191  				}
 46192  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 46193  				break
 46194  
 46195  			}
 46196  
 46197  		case SQLITE_FLOAT:
 46198  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 46199  			break
 46200  
 46201  		case SQLITE_INTEGER:
 46202  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 46203  			break
 46204  
 46205  		case SQLITE_NULL:
 46206  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 46207  			break
 46208  
 46209  		default:
 46210  		}
 46211  
 46212  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 46213  
 46214  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 46215  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 46216  		}
 46217  	}
 46218  
 46219  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 46220  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46221  		var _objPtr uintptr = pRet
 46222  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 46223  			tcl.XTclFreeObj(tls, _objPtr)
 46224  		}
 46225  	}
 46226  }
 46227  
 46228  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46229  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46230  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 46231  }
 46232  
 46233  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46234  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 46235  }
 46236  
 46237  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46238  	var m sqlite3_uint64 = uint64(0)
 46239  	var i int32
 46240  	for i = 0; i < argc && i < 63; i++ {
 46241  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 46242  			m = m | uint64(1)<<i
 46243  		}
 46244  	}
 46245  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 46246  }
 46247  
 46248  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46249  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 46250  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 46251  }
 46252  
 46253  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 46254  	var i int32
 46255  
 46256  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 46257  		FzName       uintptr
 46258  		FnArg        int8
 46259  		F__ccgo_pad1 [3]byte
 46260  		FeTextRep    uint32
 46261  		FxFunc       uintptr
 46262  	}{})); i++ {
 46263  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 46264  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 46265  	}
 46266  
 46267  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 46268  		*(*uintptr)(unsafe.Pointer(&struct {
 46269  			f func(*libc.TLS, uintptr, int32, uintptr)
 46270  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 46271  
 46272  	return SQLITE_OK
 46273  }
 46274  
 46275  var aFuncs = [20]struct {
 46276  	FzName       uintptr
 46277  	FnArg        int8
 46278  	F__ccgo_pad1 [3]byte
 46279  	FeTextRep    uint32
 46280  	FxFunc       uintptr
 46281  }{
 46282  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46283  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46284  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46285  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46286  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46287  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46288  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46289  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46290  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46291  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46292  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46293  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46294  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46295  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46296  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46297  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46298  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 46299  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46300  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46301  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46302  }
 46303  
 46304  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46305  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46306  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46307  	}{registerTestFunctions})))
 46308  	if rc == SQLITE_OK {
 46309  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46310  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46311  		}{Md5_Register})))
 46312  	}
 46313  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 46314  	return TCL_OK
 46315  }
 46316  
 46317  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46318  }
 46319  
 46320  func tFinal(tls *libc.TLS, a uintptr) {
 46321  }
 46322  
 46323  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46324  	bp := tls.Alloc(24)
 46325  	defer tls.Free(24)
 46326  
 46327  	var rc int32
 46328  	var mxArg int32
 46329  
 46330  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 46331  		goto __1
 46332  	}
 46333  	return TCL_ERROR
 46334  __1:
 46335  	;
 46336  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46337  		f func(*libc.TLS, uintptr, int32, uintptr)
 46338  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46339  		f func(*libc.TLS, uintptr, int32, uintptr)
 46340  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46341  	if !(rc != SQLITE_MISUSE) {
 46342  		goto __2
 46343  	}
 46344  	goto abuse_err
 46345  __2:
 46346  	;
 46347  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46348  		f func(*libc.TLS, uintptr, int32, uintptr)
 46349  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46350  		f func(*libc.TLS, uintptr, int32, uintptr)
 46351  	}{tStep})), uintptr(0))
 46352  	if !(rc != SQLITE_MISUSE) {
 46353  		goto __3
 46354  	}
 46355  	goto abuse_err
 46356  __3:
 46357  	;
 46358  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46359  		f func(*libc.TLS, uintptr, int32, uintptr)
 46360  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46361  	if !(rc != SQLITE_MISUSE) {
 46362  		goto __4
 46363  	}
 46364  	goto abuse_err
 46365  __4:
 46366  	;
 46367  	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})))
 46368  	if !(rc != SQLITE_MISUSE) {
 46369  		goto __5
 46370  	}
 46371  	goto abuse_err
 46372  __5:
 46373  	;
 46374  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46375  		f func(*libc.TLS, uintptr, int32, uintptr)
 46376  	}{tStep})), uintptr(0))
 46377  	if !(rc != SQLITE_MISUSE) {
 46378  		goto __6
 46379  	}
 46380  	goto abuse_err
 46381  __6:
 46382  	;
 46383  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46384  		f func(*libc.TLS, uintptr, int32, uintptr)
 46385  	}{tStep})), uintptr(0), uintptr(0))
 46386  	if !(rc != SQLITE_MISUSE) {
 46387  		goto __7
 46388  	}
 46389  	goto abuse_err
 46390  __7:
 46391  	;
 46392  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46393  		f func(*libc.TLS, uintptr, int32, uintptr)
 46394  	}{tStep})), uintptr(0), uintptr(0))
 46395  	if !(rc != SQLITE_MISUSE) {
 46396  		goto __8
 46397  	}
 46398  	goto abuse_err
 46399  __8:
 46400  	;
 46401  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46402  		ts+31494,
 46403  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46404  			f func(*libc.TLS, uintptr, int32, uintptr)
 46405  		}{tStep})), uintptr(0), uintptr(0))
 46406  	if !(rc != SQLITE_MISUSE) {
 46407  		goto __9
 46408  	}
 46409  	goto abuse_err
 46410  __9:
 46411  	;
 46412  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 46413  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 46414  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46415  		ts+31751,
 46416  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46417  			f func(*libc.TLS, uintptr, int32, uintptr)
 46418  		}{tStep})), uintptr(0), uintptr(0))
 46419  	if !(rc != SQLITE_OK) {
 46420  		goto __10
 46421  	}
 46422  	goto abuse_err
 46423  __10:
 46424  	;
 46425  	return TCL_OK
 46426  
 46427  abuse_err:
 46428  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 46429  		uintptr(0)))
 46430  	return TCL_ERROR
 46431  }
 46432  
 46433  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 46434  	var aMatchinfo uintptr
 46435  	var nMatchinfo int32
 46436  	var nCol int32
 46437  	var nPhrase int32
 46438  	var iPhrase int32
 46439  	var score float64
 46440  	var nHitCount int32
 46441  	var nGlobalHitCount int32
 46442  	var weight float64
 46443  	var iCol int32
 46444  
 46445  	var aPhraseinfo uintptr
 46446  	nCol = 0
 46447  	nPhrase = 0
 46448  	score = 0.0
 46449  
 46450  	if !(nVal < 1) {
 46451  		goto __1
 46452  	}
 46453  	goto wrong_number_args
 46454  __1:
 46455  	;
 46456  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 46457  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 46458  	if !(nMatchinfo >= 2) {
 46459  		goto __2
 46460  	}
 46461  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 46462  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 46463  __2:
 46464  	;
 46465  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 46466  		goto __3
 46467  	}
 46468  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 46469  		ts+32050, -1)
 46470  	return
 46471  __3:
 46472  	;
 46473  	if !(nVal != 1+nCol) {
 46474  		goto __4
 46475  	}
 46476  	goto wrong_number_args
 46477  __4:
 46478  	;
 46479  	iPhrase = 0
 46480  __5:
 46481  	if !(iPhrase < nPhrase) {
 46482  		goto __7
 46483  	}
 46484  
 46485  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 46486  	iCol = 0
 46487  __8:
 46488  	if !(iCol < nCol) {
 46489  		goto __10
 46490  	}
 46491  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 46492  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 46493  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 46494  	if !(nHitCount > 0) {
 46495  		goto __11
 46496  	}
 46497  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 46498  __11:
 46499  	;
 46500  	goto __9
 46501  __9:
 46502  	iCol++
 46503  	goto __8
 46504  	goto __10
 46505  __10:
 46506  	;
 46507  	goto __6
 46508  __6:
 46509  	iPhrase++
 46510  	goto __5
 46511  	goto __7
 46512  __7:
 46513  	;
 46514  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 46515  	return
 46516  
 46517  wrong_number_args:
 46518  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 46519  }
 46520  
 46521  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46522  	bp := tls.Alloc(8)
 46523  	defer tls.Free(8)
 46524  
 46525  	if objc != 2 {
 46526  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46527  		return TCL_ERROR
 46528  	}
 46529  
 46530  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46531  		return TCL_ERROR
 46532  	}
 46533  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46534  		f func(*libc.TLS, uintptr, int32, uintptr)
 46535  	}{rankfunc})), uintptr(0), uintptr(0))
 46536  	return TCL_OK
 46537  }
 46538  
 46539  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 46540  	var i int32
 46541  
 46542  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 46543  		FzName uintptr
 46544  		FxProc uintptr
 46545  	}{})); i++ {
 46546  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 46547  	}
 46548  	sqlite3.Xsqlite3_initialize(tls)
 46549  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46550  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46551  	}{registerTestFunctions})))
 46552  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46553  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46554  	}{Md5_Register})))
 46555  	return TCL_OK
 46556  }
 46557  
 46558  var aObjCmd7 = [3]struct {
 46559  	FzName uintptr
 46560  	FxProc uintptr
 46561  }{
 46562  	{FzName: ts + 32149, FxProc: 0},
 46563  	{FzName: ts + 32176, FxProc: 0},
 46564  	{FzName: ts + 32198, FxProc: 0},
 46565  }
 46566  
 46567  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 46568  	bp := tls.Alloc(17)
 46569  	defer tls.Free(17)
 46570  
 46571  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 46572  	var i int32
 46573  	var j int32
 46574  	var c uint8
 46575  	i = N * 2
 46576  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 46577  	for j = N - 1; j >= 0; j-- {
 46578  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 46579  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 46580  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 46581  	}
 46582  
 46583  }
 46584  
 46585  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 46586  	bp := tls.Alloc(256)
 46587  	defer tls.Free(256)
 46588  
 46589  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 46590  		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),
 46591  		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),
 46592  		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),
 46593  		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),
 46594  		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),
 46595  		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),
 46596  		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),
 46597  		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),
 46598  		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),
 46599  		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),
 46600  		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),
 46601  		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),
 46602  		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),
 46603  		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),
 46604  		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),
 46605  		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),
 46606  	}
 46607  	var i int32
 46608  	var j int32
 46609  	var hi int32 = 1
 46610  	var c uint8
 46611  
 46612  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 46613  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 46614  		if int32(c) == 0 {
 46615  			continue
 46616  		}
 46617  		if hi != 0 {
 46618  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 46619  			hi = 0
 46620  		} else {
 46621  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 46622  			hi = 1
 46623  		}
 46624  	}
 46625  	return j
 46626  }
 46627  
 46628  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46629  	bp := tls.Alloc(48)
 46630  	defer tls.Free(48)
 46631  
 46632  	var got int32
 46633  	var zFile uintptr
 46634  	var zBuf uintptr
 46635  	var in uintptr
 46636  
 46637  	if objc != 4 {
 46638  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 46639  		return TCL_ERROR
 46640  	}
 46641  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 46642  		return TCL_ERROR
 46643  	}
 46644  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 46645  		return TCL_ERROR
 46646  	}
 46647  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46648  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 46649  	if zBuf == uintptr(0) {
 46650  		return TCL_ERROR
 46651  	}
 46652  	in = libc.Xfopen(tls, zFile, ts+4402)
 46653  	if in == uintptr(0) {
 46654  		in = libc.Xfopen(tls, zFile, ts+32262)
 46655  	}
 46656  	if in == uintptr(0) {
 46657  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 46658  		return TCL_ERROR
 46659  	}
 46660  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 46661  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 46662  	libc.Xfclose(tls, in)
 46663  	if got < 0 {
 46664  		got = 0
 46665  	}
 46666  	sqlite3TestBinToHex(tls, zBuf, got)
 46667  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 46668  	sqlite3.Xsqlite3_free(tls, zBuf)
 46669  	return TCL_OK
 46670  }
 46671  
 46672  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46673  	bp := tls.Alloc(32)
 46674  	defer tls.Free(32)
 46675  
 46676  	var nOut int32
 46677  	var written int32
 46678  	var zFile uintptr
 46679  	var zIn uintptr
 46680  	var aOut uintptr
 46681  	var out uintptr
 46682  
 46683  	if objc != 4 {
 46684  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 46685  		return TCL_ERROR
 46686  	}
 46687  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 46688  		return TCL_ERROR
 46689  	}
 46690  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46691  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 46692  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 46693  	if aOut == uintptr(0) {
 46694  		return TCL_ERROR
 46695  	}
 46696  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 46697  	out = libc.Xfopen(tls, zFile, ts+32312)
 46698  	if out == uintptr(0) {
 46699  		out = libc.Xfopen(tls, zFile, ts+32316)
 46700  	}
 46701  	if out == uintptr(0) {
 46702  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 46703  		return TCL_ERROR
 46704  	}
 46705  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 46706  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 46707  	sqlite3.Xsqlite3_free(tls, aOut)
 46708  	libc.Xfclose(tls, out)
 46709  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 46710  	return TCL_OK
 46711  }
 46712  
 46713  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46714  	bp := tls.Alloc(8)
 46715  	defer tls.Free(8)
 46716  
 46717  	var val int32
 46718  
 46719  	var nOut int32
 46720  	var zIn uintptr
 46721  	var aOut uintptr
 46722  
 46723  	if objc != 2 {
 46724  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 46725  		return TCL_ERROR
 46726  	}
 46727  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 46728  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 46729  	if aOut == uintptr(0) {
 46730  		return TCL_ERROR
 46731  	}
 46732  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 46733  	if nOut >= 4 {
 46734  		libc.Xmemcpy(tls, bp+4, aOut, uint64(4))
 46735  	} else {
 46736  		libc.Xmemset(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})))
 46737  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut))
 46738  	}
 46739  	sqlite3.Xsqlite3_free(tls, aOut)
 46740  	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)))
 46741  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 46742  	return TCL_OK
 46743  }
 46744  
 46745  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46746  	bp := tls.Alloc(14)
 46747  	defer tls.Free(14)
 46748  
 46749  	if objc != 2 {
 46750  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 46751  		return TCL_ERROR
 46752  	}
 46753  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 46754  		return TCL_ERROR
 46755  	}
 46756  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 46757  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 46758  	sqlite3TestBinToHex(tls, bp+4, 2)
 46759  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 46760  	return TCL_OK
 46761  }
 46762  
 46763  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46764  	bp := tls.Alloc(14)
 46765  	defer tls.Free(14)
 46766  
 46767  	if objc != 2 {
 46768  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 46769  		return TCL_ERROR
 46770  	}
 46771  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 46772  		return TCL_ERROR
 46773  	}
 46774  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 46775  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 46776  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 46777  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 46778  	sqlite3TestBinToHex(tls, bp+4, 4)
 46779  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 46780  	return TCL_OK
 46781  }
 46782  
 46783  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46784  	bp := tls.Alloc(16)
 46785  	defer tls.Free(16)
 46786  
 46787  	tcl.XTcl_AppendResult(tls, interp,
 46788  		libc.VaList(bp, ts+32352, 0))
 46789  	return TCL_ERROR
 46790  }
 46791  
 46792  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 46793  	var q uintptr = p
 46794  	var x sqlite_uint64 = uint64(0)
 46795  	var y sqlite_uint64 = uint64(1)
 46796  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 46797  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 46798  		y <<= 7
 46799  	}
 46800  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 46801  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 46802  	return int32((int64(q) - int64(p)) / 1)
 46803  }
 46804  
 46805  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 46806  	var q uintptr = p
 46807  	var vu sqlite_uint64 = sqlite_uint64(v)
 46808  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 46809  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 46810  		vu >>= 7
 46811  	}
 46812  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 46813  
 46814  	return int32((int64(q) - int64(p)) / 1)
 46815  }
 46816  
 46817  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46818  	bp := tls.Alloc(16)
 46819  	defer tls.Free(16)
 46820  
 46821  	var zBlob uintptr
 46822  
 46823  	var nVal int32
 46824  
 46825  	if objc != 3 {
 46826  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 46827  		return TCL_ERROR
 46828  	}
 46829  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 46830  
 46831  	nVal = getFts3Varint(tls, zBlob, bp+8)
 46832  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 46833  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 46834  	return TCL_OK
 46835  }
 46836  
 46837  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46838  	bp := tls.Alloc(28)
 46839  	defer tls.Free(28)
 46840  
 46841  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 46842  	*(*int32)(unsafe.Pointer(bp)) = 0
 46843  	var aOut uintptr = uintptr(0)
 46844  	var nOut int32 = 0
 46845  	var nAlloc int32 = 0
 46846  	var i int32
 46847  
 46848  	if objc != 2 {
 46849  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 46850  		return TCL_ERROR
 46851  	}
 46852  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 46853  		return TCL_ERROR
 46854  	}
 46855  
 46856  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 46857  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 46858  			if nOut+10 > nAlloc {
 46859  				var nNew int32
 46860  				if nAlloc != 0 {
 46861  					nNew = nAlloc * 2
 46862  				} else {
 46863  					nNew = 128
 46864  				}
 46865  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 46866  				if aNew == uintptr(0) {
 46867  					sqlite3.Xsqlite3_free(tls, aOut)
 46868  					return TCL_ERROR
 46869  				}
 46870  				aOut = aNew
 46871  				nAlloc = nNew
 46872  			}
 46873  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 46874  		} else {
 46875  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 46876  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 46877  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 46878  				var nNew int32
 46879  				if nAlloc != 0 {
 46880  					nNew = nAlloc * 2
 46881  				} else {
 46882  					nNew = 128
 46883  				}
 46884  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 46885  				if aNew == uintptr(0) {
 46886  					sqlite3.Xsqlite3_free(tls, aOut)
 46887  					return TCL_ERROR
 46888  				}
 46889  				aOut = aNew
 46890  				nAlloc = nNew
 46891  			}
 46892  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))))
 46893  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 46894  		}
 46895  	}
 46896  
 46897  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 46898  	sqlite3.Xsqlite3_free(tls, aOut)
 46899  	return TCL_OK
 46900  }
 46901  
 46902  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 46903  	var i int32
 46904  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 46905  		FzName uintptr
 46906  		FxProc uintptr
 46907  	}{})); i++ {
 46908  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 46909  	}
 46910  	return TCL_OK
 46911  }
 46912  
 46913  var aObjCmd8 = [8]struct {
 46914  	FzName uintptr
 46915  	FxProc uintptr
 46916  }{
 46917  	{FzName: ts + 32424, FxProc: 0},
 46918  	{FzName: ts + 32435, FxProc: 0},
 46919  	{FzName: ts + 32447, FxProc: 0},
 46920  	{FzName: ts + 32461, FxProc: 0},
 46921  	{FzName: ts + 32480, FxProc: 0},
 46922  	{FzName: ts + 32499, FxProc: 0},
 46923  	{FzName: ts + 32512, FxProc: 0},
 46924  	{FzName: ts + 32528, FxProc: 0},
 46925  }
 46926  
 46927  type Wrapped = struct {
 46928  	Fpcache      sqlite3_pcache_methods2
 46929  	Fmem         sqlite3_mem_methods
 46930  	Fmutex       sqlite3_mutex_methods
 46931  	Fmem_init    int32
 46932  	Fmem_fail    int32
 46933  	Fmutex_init  int32
 46934  	Fmutex_fail  int32
 46935  	Fpcache_init int32
 46936  	Fpcache_fail int32
 46937  }
 46938  
 46939  var wrapped Wrapped
 46940  
 46941  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 46942  	var rc int32
 46943  	if wrapped.Fmem_fail != 0 {
 46944  		rc = SQLITE_ERROR
 46945  	} else {
 46946  		rc = (*struct {
 46947  			f func(*libc.TLS, uintptr) int32
 46948  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 46949  	}
 46950  	if rc == SQLITE_OK {
 46951  		wrapped.Fmem_init = 1
 46952  	}
 46953  	return rc
 46954  }
 46955  
 46956  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 46957  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 46958  	wrapped.Fmem_init = 0
 46959  }
 46960  
 46961  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 46962  	return (*struct {
 46963  		f func(*libc.TLS, int32) uintptr
 46964  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 46965  }
 46966  
 46967  func wrMemFree(tls *libc.TLS, p uintptr) {
 46968  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 46969  }
 46970  
 46971  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 46972  	return (*struct {
 46973  		f func(*libc.TLS, uintptr, int32) uintptr
 46974  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 46975  }
 46976  
 46977  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 46978  	return (*struct {
 46979  		f func(*libc.TLS, uintptr) int32
 46980  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 46981  }
 46982  
 46983  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 46984  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 46985  }
 46986  
 46987  func wrMutexInit(tls *libc.TLS) int32 {
 46988  	var rc int32
 46989  	if wrapped.Fmutex_fail != 0 {
 46990  		rc = SQLITE_ERROR
 46991  	} else {
 46992  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 46993  	}
 46994  	if rc == SQLITE_OK {
 46995  		wrapped.Fmutex_init = 1
 46996  	}
 46997  	return rc
 46998  }
 46999  
 47000  func wrMutexEnd(tls *libc.TLS) int32 {
 47001  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 47002  	wrapped.Fmutex_init = 0
 47003  	return SQLITE_OK
 47004  }
 47005  
 47006  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 47007  	return (*struct {
 47008  		f func(*libc.TLS, int32) uintptr
 47009  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 47010  }
 47011  
 47012  func wrMutexFree(tls *libc.TLS, p uintptr) {
 47013  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 47014  }
 47015  
 47016  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 47017  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 47018  }
 47019  
 47020  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 47021  	return (*struct {
 47022  		f func(*libc.TLS, uintptr) int32
 47023  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 47024  }
 47025  
 47026  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 47027  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 47028  }
 47029  
 47030  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 47031  	return (*struct {
 47032  		f func(*libc.TLS, uintptr) int32
 47033  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 47034  }
 47035  
 47036  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 47037  	return (*struct {
 47038  		f func(*libc.TLS, uintptr) int32
 47039  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 47040  }
 47041  
 47042  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 47043  	var rc int32
 47044  	if wrapped.Fpcache_fail != 0 {
 47045  		rc = SQLITE_ERROR
 47046  	} else {
 47047  		rc = (*struct {
 47048  			f func(*libc.TLS, uintptr) int32
 47049  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 47050  	}
 47051  	if rc == SQLITE_OK {
 47052  		wrapped.Fpcache_init = 1
 47053  	}
 47054  	return rc
 47055  }
 47056  
 47057  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 47058  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 47059  	wrapped.Fpcache_init = 0
 47060  }
 47061  
 47062  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 47063  	return (*struct {
 47064  		f func(*libc.TLS, int32, int32, int32) uintptr
 47065  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 47066  }
 47067  
 47068  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 47069  	(*struct {
 47070  		f func(*libc.TLS, uintptr, int32)
 47071  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 47072  }
 47073  
 47074  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 47075  	return (*struct {
 47076  		f func(*libc.TLS, uintptr) int32
 47077  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 47078  }
 47079  
 47080  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 47081  	return (*struct {
 47082  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47083  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 47084  }
 47085  
 47086  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 47087  	(*struct {
 47088  		f func(*libc.TLS, uintptr, uintptr, int32)
 47089  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 47090  }
 47091  
 47092  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 47093  	(*struct {
 47094  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47095  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 47096  }
 47097  
 47098  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 47099  	(*struct {
 47100  		f func(*libc.TLS, uintptr, uint32)
 47101  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 47102  }
 47103  
 47104  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 47105  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 47106  }
 47107  
 47108  func installInitWrappers(tls *libc.TLS) {
 47109  	bp := tls.Alloc(288)
 47110  	defer tls.Free(288)
 47111  
 47112  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 47113  		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 {
 47114  			f func(*libc.TLS, int32) uintptr
 47115  		}{wrMutexAlloc})),
 47116  		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 {
 47117  			f func(*libc.TLS, uintptr) int32
 47118  		}{wrMutexTry})),
 47119  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 47120  			f func(*libc.TLS, uintptr) int32
 47121  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 47122  			f func(*libc.TLS, uintptr) int32
 47123  		}{wrMutexNotheld})),
 47124  	}
 47125  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 47126  		FiVersion: 1,
 47127  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47128  			f func(*libc.TLS, uintptr) int32
 47129  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 47130  			f func(*libc.TLS, int32, int32, int32) uintptr
 47131  		}{wrPCacheCreate})),
 47132  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 47133  			f func(*libc.TLS, uintptr, int32)
 47134  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 47135  			f func(*libc.TLS, uintptr) int32
 47136  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 47137  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47138  		}{wrPCacheFetch})),
 47139  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 47140  			f func(*libc.TLS, uintptr, uintptr, int32)
 47141  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 47142  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47143  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 47144  			f func(*libc.TLS, uintptr, uint32)
 47145  		}{wrPCacheTruncate})),
 47146  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 47147  	}
 47148  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 47149  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 47150  			f func(*libc.TLS, int32) uintptr
 47151  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 47152  			f func(*libc.TLS, uintptr, int32) uintptr
 47153  		}{wrMemRealloc})),
 47154  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 47155  			f func(*libc.TLS, uintptr) int32
 47156  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47157  			f func(*libc.TLS, uintptr) int32
 47158  		}{wrMemInit})),
 47159  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 47160  	}
 47161  
 47162  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)))
 47163  
 47164  	sqlite3.Xsqlite3_shutdown(tls)
 47165  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47166  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47167  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47168  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 47169  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 47170  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 47171  }
 47172  
 47173  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47174  	bp := tls.Alloc(24)
 47175  	defer tls.Free(24)
 47176  
 47177  	var i int32
 47178  	installInitWrappers(tls)
 47179  	for i = 1; i < objc; i++ {
 47180  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 47181  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 47182  			wrapped.Fmem_fail = 1
 47183  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 47184  			wrapped.Fmutex_fail = 1
 47185  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 47186  			wrapped.Fpcache_fail = 1
 47187  		} else {
 47188  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 47189  			return TCL_ERROR
 47190  		}
 47191  	}
 47192  	return TCL_OK
 47193  }
 47194  
 47195  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47196  	bp := tls.Alloc(24)
 47197  	defer tls.Free(24)
 47198  
 47199  	if objc != 1 {
 47200  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47201  		return TCL_ERROR
 47202  	}
 47203  
 47204  	sqlite3.Xsqlite3_shutdown(tls)
 47205  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47206  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47207  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47208  	return TCL_OK
 47209  }
 47210  
 47211  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47212  	if objc != 1 {
 47213  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47214  		return TCL_ERROR
 47215  	}
 47216  
 47217  	wrapped.Fmem_fail = 0
 47218  	wrapped.Fmutex_fail = 0
 47219  	wrapped.Fpcache_fail = 0
 47220  	return TCL_OK
 47221  }
 47222  
 47223  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47224  	var pRet uintptr
 47225  
 47226  	if objc != 1 {
 47227  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47228  		return TCL_ERROR
 47229  	}
 47230  
 47231  	pRet = tcl.XTcl_NewObj(tls)
 47232  	if wrapped.Fmutex_init != 0 {
 47233  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 47234  	}
 47235  	if wrapped.Fmem_init != 0 {
 47236  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 47237  	}
 47238  	if wrapped.Fpcache_init != 0 {
 47239  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 47240  	}
 47241  
 47242  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 47243  	return TCL_OK
 47244  }
 47245  
 47246  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 47247  	var i int32
 47248  
 47249  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 47250  		FzName uintptr
 47251  		FxProc uintptr
 47252  	}{})); i++ {
 47253  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 47254  	}
 47255  
 47256  	return TCL_OK
 47257  }
 47258  
 47259  var aObjCmd9 = [4]struct {
 47260  	FzName uintptr
 47261  	FxProc uintptr
 47262  }{
 47263  	{FzName: ts + 32575, FxProc: 0},
 47264  	{FzName: ts + 32596, FxProc: 0},
 47265  	{FzName: ts + 32615, FxProc: 0},
 47266  	{FzName: ts + 32638, FxProc: 0},
 47267  }
 47268  
 47269  type sqlite3_intarray1 = struct {
 47270  	Fn           int32
 47271  	F__ccgo_pad1 [4]byte
 47272  	Fa           uintptr
 47273  	FxFree       uintptr
 47274  }
 47275  
 47276  type sqlite3_intarray = sqlite3_intarray1
 47277  
 47278  type intarray_vtab1 = struct {
 47279  	Fbase     sqlite3_vtab
 47280  	FpContent uintptr
 47281  }
 47282  
 47283  type intarray_vtab = intarray_vtab1
 47284  type intarray_cursor1 = struct {
 47285  	Fbase        sqlite3_vtab_cursor
 47286  	Fi           int32
 47287  	F__ccgo_pad1 [4]byte
 47288  }
 47289  
 47290  type intarray_cursor = intarray_cursor1
 47291  
 47292  func intarrayFree(tls *libc.TLS, p uintptr) {
 47293  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 47294  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 47295  	}
 47296  	sqlite3.Xsqlite3_free(tls, p)
 47297  }
 47298  
 47299  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 47300  	var pVtab uintptr = p
 47301  	sqlite3.Xsqlite3_free(tls, pVtab)
 47302  	return 0
 47303  }
 47304  
 47305  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 47306  	var rc int32 = SQLITE_NOMEM
 47307  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 47308  
 47309  	if pVtab != 0 {
 47310  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})))
 47311  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 47312  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 47313  	}
 47314  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 47315  	return rc
 47316  }
 47317  
 47318  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 47319  	var rc int32 = SQLITE_NOMEM
 47320  	var pCur uintptr
 47321  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 47322  	if pCur != 0 {
 47323  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})))
 47324  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 47325  		rc = SQLITE_OK
 47326  	}
 47327  	return rc
 47328  }
 47329  
 47330  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 47331  	var pCur uintptr = cur
 47332  	sqlite3.Xsqlite3_free(tls, pCur)
 47333  	return SQLITE_OK
 47334  }
 47335  
 47336  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 47337  	var pCur uintptr = cur
 47338  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47339  	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 {
 47340  		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)))
 47341  	}
 47342  	return SQLITE_OK
 47343  }
 47344  
 47345  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 47346  	var pCur uintptr = cur
 47347  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 47348  	return SQLITE_OK
 47349  }
 47350  
 47351  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 47352  	var pCur uintptr = cur
 47353  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47354  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 47355  }
 47356  
 47357  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 47358  	var pCur uintptr = cur
 47359  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 47360  	return SQLITE_OK
 47361  }
 47362  
 47363  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 47364  	var pCur uintptr = pVtabCursor
 47365  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 47366  	return SQLITE_OK
 47367  }
 47368  
 47369  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 47370  	return SQLITE_OK
 47371  }
 47372  
 47373  var intarrayModule = sqlite3_module{
 47374  	FxCreate:     0,
 47375  	FxConnect:    0,
 47376  	FxBestIndex:  0,
 47377  	FxDisconnect: 0,
 47378  	FxDestroy:    0,
 47379  	FxOpen:       0,
 47380  	FxClose:      0,
 47381  	FxFilter:     0,
 47382  	FxNext:       0,
 47383  	FxEof:        0,
 47384  	FxColumn:     0,
 47385  	FxRowid:      0,
 47386  }
 47387  
 47388  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 47389  	bp := tls.Alloc(16)
 47390  	defer tls.Free(16)
 47391  
 47392  	var rc int32 = SQLITE_OK
 47393  	var p uintptr
 47394  
 47395  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 47396  	if p == uintptr(0) {
 47397  		return SQLITE_NOMEM
 47398  	}
 47399  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})))
 47400  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 47401  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 47402  	if rc == SQLITE_OK {
 47403  		var zSql uintptr
 47404  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 47405  			libc.VaList(bp, zName, zName))
 47406  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 47407  		sqlite3.Xsqlite3_free(tls, zSql)
 47408  	}
 47409  	return rc
 47410  }
 47411  
 47412  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 47413  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 47414  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 47415  	}
 47416  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 47417  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 47418  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 47419  	return SQLITE_OK
 47420  }
 47421  
 47422  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47423  	bp := tls.Alloc(148)
 47424  	defer tls.Free(148)
 47425  
 47426  	var zName uintptr
 47427  
 47428  	var rc int32 = SQLITE_OK
 47429  
 47430  	if objc != 3 {
 47431  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47432  		return TCL_ERROR
 47433  	}
 47434  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 47435  		return TCL_ERROR
 47436  	}
 47437  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 47438  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 47439  	if rc != SQLITE_OK {
 47440  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 47441  		return TCL_ERROR
 47442  	}
 47443  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 47444  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 47445  	return TCL_OK
 47446  }
 47447  
 47448  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47449  	bp := tls.Alloc(40)
 47450  	defer tls.Free(40)
 47451  
 47452  	var pArray uintptr
 47453  	var rc int32 = SQLITE_OK
 47454  	var i int32
 47455  	var n int32
 47456  	var a uintptr
 47457  
 47458  	if objc < 2 {
 47459  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 47460  		return TCL_ERROR
 47461  	}
 47462  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 47463  	n = objc - 2
 47464  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 47465  	if a == uintptr(0) {
 47466  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 47467  		return TCL_ERROR
 47468  	}
 47469  	for i = 0; i < n; i++ {
 47470  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 47471  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 47472  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 47473  	}
 47474  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47475  	if rc != SQLITE_OK {
 47476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 47477  		return TCL_ERROR
 47478  	}
 47479  	return TCL_OK
 47480  }
 47481  
 47482  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 47483  	var i int32
 47484  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 47485  		FzName      uintptr
 47486  		FxProc      uintptr
 47487  		FclientData uintptr
 47488  	}{})); i++ {
 47489  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 47490  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 47491  	}
 47492  	return TCL_OK
 47493  }
 47494  
 47495  var aObjCmd10 = [2]struct {
 47496  	FzName      uintptr
 47497  	FxProc      uintptr
 47498  	FclientData uintptr
 47499  }{
 47500  	{FzName: ts + 32759, FxProc: 0},
 47501  	{FzName: ts + 32783, FxProc: 0},
 47502  }
 47503  
 47504  type jt_file1 = struct {
 47505  	Fbase        sqlite3_file
 47506  	FzName       uintptr
 47507  	Fflags       int32
 47508  	FeLock       int32
 47509  	FnPage       u32
 47510  	FnPagesize   u32
 47511  	FpWritable   uintptr
 47512  	FaCksum      uintptr
 47513  	FnSync       int32
 47514  	F__ccgo_pad1 [4]byte
 47515  	FiMaxOff     sqlite3_int64
 47516  	FpNext       uintptr
 47517  	FpReal       uintptr
 47518  }
 47519  
 47520  type jt_file = jt_file1
 47521  
 47522  var jt_vfs = sqlite3_vfs{
 47523  	FiVersion:          2,
 47524  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 47525  	FmxPathname:        JT_MAX_PATHNAME,
 47526  	FzName:             ts + 32805,
 47527  	FxOpen:             0,
 47528  	FxDelete:           0,
 47529  	FxAccess:           0,
 47530  	FxFullPathname:     0,
 47531  	FxDlOpen:           0,
 47532  	FxDlError:          0,
 47533  	FxDlSym:            0,
 47534  	FxDlClose:          0,
 47535  	FxRandomness:       0,
 47536  	FxSleep:            0,
 47537  	FxCurrentTime:      0,
 47538  	FxGetLastError:     0,
 47539  	FxCurrentTimeInt64: 0,
 47540  }
 47541  
 47542  var jt_io_methods = sqlite3_io_methods{
 47543  	FiVersion:               1,
 47544  	FxClose:                 0,
 47545  	FxRead:                  0,
 47546  	FxWrite:                 0,
 47547  	FxTruncate:              0,
 47548  	FxSync:                  0,
 47549  	FxFileSize:              0,
 47550  	FxLock:                  0,
 47551  	FxUnlock:                0,
 47552  	FxCheckReservedLock:     0,
 47553  	FxFileControl:           0,
 47554  	FxSectorSize:            0,
 47555  	FxDeviceCharacteristics: 0,
 47556  }
 47557  
 47558  type JtGlobal = struct {
 47559  	FpVfs  uintptr
 47560  	FpList uintptr
 47561  }
 47562  
 47563  var g2 = JtGlobal{}
 47564  
 47565  func enterJtMutex(tls *libc.TLS) {
 47566  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 47567  }
 47568  
 47569  func leaveJtMutex(tls *libc.TLS) {
 47570  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 47571  }
 47572  
 47573  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 47574  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 47575  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 47576  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 47577  	sqlite3.Xsqlite3_io_error_hit = 0
 47578  }
 47579  
 47580  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 47581  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 47582  	sqlite3.Xsqlite3_io_error_hit = iSave2
 47583  }
 47584  
 47585  func closeTransaction(tls *libc.TLS, p uintptr) {
 47586  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 47587  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 47588  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 47589  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 47590  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 47591  }
 47592  
 47593  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 47594  	var pp uintptr
 47595  	var p uintptr = pFile
 47596  
 47597  	closeTransaction(tls, p)
 47598  	enterJtMutex(tls)
 47599  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 47600  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 47601  		}
 47602  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 47603  	}
 47604  	leaveJtMutex(tls)
 47605  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 47606  	return SQLITE_OK
 47607  }
 47608  
 47609  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47610  	var p uintptr = pFile
 47611  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 47612  }
 47613  
 47614  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 47615  	var pMain uintptr = uintptr(0)
 47616  	enterJtMutex(tls)
 47617  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 47618  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 47619  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 47620  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 47621  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 47622  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 47623  			break
 47624  		}
 47625  	}
 47626  	leaveJtMutex(tls)
 47627  	return pMain
 47628  }
 47629  
 47630  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 47631  	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))))
 47632  }
 47633  
 47634  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 47635  	var i int32
 47636  	var cksum u32 = u32(0)
 47637  	for i = 0; i < n; i++ {
 47638  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 47639  	}
 47640  	return cksum
 47641  }
 47642  
 47643  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 47644  	bp := tls.Alloc(8)
 47645  	defer tls.Free(8)
 47646  
 47647  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 47648  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 47649  		return SQLITE_ERROR
 47650  	}
 47651  	if pnRec != 0 {
 47652  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 47653  	}
 47654  	if pnPage != 0 {
 47655  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 47656  	}
 47657  	if pnSector != 0 {
 47658  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 47659  	}
 47660  	if pnPagesize != 0 {
 47661  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 47662  	}
 47663  	return SQLITE_OK
 47664  }
 47665  
 47666  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 47667  	bp := tls.Alloc(8)
 47668  	defer tls.Free(8)
 47669  
 47670  	var aData uintptr
 47671  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 47672  	var rc int32 = SQLITE_OK
 47673  
 47674  	closeTransaction(tls, pMain)
 47675  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47676  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 47677  	(*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))))
 47678  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 47679  
 47680  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 47681  		rc = SQLITE_IOERR | int32(12)<<8
 47682  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 47683  		var iTrunk u32
 47684  
 47685  		stop_ioerr_simulation(tls, bp, bp+4)
 47686  
 47687  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 47688  		if rc == SQLITE_OK {
 47689  			var nDbsize u32 = decodeUint32(tls, aData+28)
 47690  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 47691  				var iPg u32
 47692  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 47693  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 47694  				}
 47695  			}
 47696  		}
 47697  		iTrunk = decodeUint32(tls, aData+32)
 47698  		for rc == SQLITE_OK && iTrunk > u32(0) {
 47699  			var nLeaf u32
 47700  			var iLeaf u32
 47701  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 47702  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 47703  			nLeaf = decodeUint32(tls, aData+4)
 47704  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 47705  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 47706  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 47707  			}
 47708  			iTrunk = decodeUint32(tls, aData)
 47709  		}
 47710  
 47711  		if rc == SQLITE_OK {
 47712  			var ii int32
 47713  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 47714  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 47715  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 47716  					continue
 47717  				}
 47718  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 47719  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47720  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 47721  					rc = SQLITE_OK
 47722  				}
 47723  			}
 47724  		}
 47725  
 47726  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 47727  	}
 47728  
 47729  	sqlite3.Xsqlite3_free(tls, aData)
 47730  	return rc
 47731  }
 47732  
 47733  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 47734  	bp := tls.Alloc(52)
 47735  	defer tls.Free(52)
 47736  
 47737  	var rc int32
 47738  
 47739  	var pReal uintptr
 47740  	var iOff sqlite3_int64
 47741  	var iSize sqlite3_int64
 47742  	var aPage uintptr
 47743  
 47744  	var cksum u32
 47745  	_ = cksum
 47746  	var pgno u32
 47747  
 47748  	var ii u32
 47749  	rc = SQLITE_OK
 47750  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 47751  	iOff = int64(0)
 47752  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 47753  
 47754  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47755  	if !!(aPage != 0) {
 47756  		goto __1
 47757  	}
 47758  	return SQLITE_IOERR | int32(12)<<8
 47759  __1:
 47760  	;
 47761  	stop_ioerr_simulation(tls, bp, bp+4)
 47762  
 47763  __2:
 47764  	if !(rc == SQLITE_OK && iOff < iSize) {
 47765  		goto __3
 47766  	}
 47767  
 47768  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 47769  	if !(rc != SQLITE_OK ||
 47770  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 47771  		goto __4
 47772  	}
 47773  	goto finish_rjf
 47774  __4:
 47775  	;
 47776  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 47777  
 47778  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 47779  		goto __5
 47780  	}
 47781  
 47782  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 47783  		goto __6
 47784  	}
 47785  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 47786  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 47787  		goto __7
 47788  	}
 47789  	goto __2
 47790  __7:
 47791  	;
 47792  __6:
 47793  	;
 47794  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 47795  __5:
 47796  	;
 47797  	ii = u32(0)
 47798  __8:
 47799  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 47800  		goto __10
 47801  	}
 47802  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 47803  	if !(rc == SQLITE_OK) {
 47804  		goto __11
 47805  	}
 47806  	pgno = decodeUint32(tls, bp+8)
 47807  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 47808  		goto __12
 47809  	}
 47810  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 47811  		goto __13
 47812  	}
 47813  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 47814  	if !(rc == SQLITE_OK) {
 47815  		goto __14
 47816  	}
 47817  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47818  
 47819  __14:
 47820  	;
 47821  __13:
 47822  	;
 47823  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 47824  __12:
 47825  	;
 47826  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 47827  __11:
 47828  	;
 47829  	goto __9
 47830  __9:
 47831  	ii++
 47832  	goto __8
 47833  	goto __10
 47834  __10:
 47835  	;
 47836  	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)))
 47837  	goto __2
 47838  __3:
 47839  	;
 47840  finish_rjf:
 47841  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 47842  	sqlite3.Xsqlite3_free(tls, aPage)
 47843  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 47844  		goto __15
 47845  	}
 47846  	rc = SQLITE_OK
 47847  __15:
 47848  	;
 47849  	return rc
 47850  }
 47851  
 47852  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47853  	var rc int32
 47854  	var p uintptr = pFile
 47855  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 47856  		if iOfst == int64(0) {
 47857  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47858  
 47859  			if iAmt == 28 {
 47860  				closeTransaction(tls, pMain)
 47861  			} else if iAmt != 12 {
 47862  				var z uintptr = zBuf
 47863  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 47864  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 47865  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 47866  					return rc
 47867  				}
 47868  			}
 47869  		}
 47870  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 47871  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 47872  		}
 47873  	}
 47874  
 47875  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 47876  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 47877  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 47878  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 47879  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 47880  		} else {
 47881  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 47882  			_ = pgno
 47883  
 47884  		}
 47885  	}
 47886  
 47887  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 47888  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 47889  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47890  		var rc2 int32 = readJournalFile(tls, p, pMain)
 47891  		if rc == SQLITE_OK {
 47892  			rc = rc2
 47893  		}
 47894  	}
 47895  	return rc
 47896  }
 47897  
 47898  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 47899  	var p uintptr = pFile
 47900  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 47901  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47902  		closeTransaction(tls, pMain)
 47903  	}
 47904  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 47905  		var pgno u32
 47906  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 47907  		_ = locking_page
 47908  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 47909  		}
 47910  	}
 47911  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 47912  }
 47913  
 47914  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 47915  	var p uintptr = pFile
 47916  
 47917  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 47918  		var rc int32
 47919  		var pMain uintptr
 47920  
 47921  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47922  
 47923  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 47924  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 47925  			rc = readJournalFile(tls, p, pMain)
 47926  			if rc != SQLITE_OK {
 47927  				return rc
 47928  			}
 47929  		}
 47930  	}
 47931  
 47932  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 47933  }
 47934  
 47935  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 47936  	var p uintptr = pFile
 47937  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 47938  }
 47939  
 47940  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 47941  	var rc int32
 47942  	var p uintptr = pFile
 47943  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 47944  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 47945  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 47946  	}
 47947  	return rc
 47948  }
 47949  
 47950  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 47951  	var rc int32
 47952  	var p uintptr = pFile
 47953  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 47954  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 47955  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 47956  	}
 47957  	return rc
 47958  }
 47959  
 47960  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 47961  	var p uintptr = pFile
 47962  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 47963  }
 47964  
 47965  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 47966  	var p uintptr = pFile
 47967  	return (*struct {
 47968  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 47969  	})(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)
 47970  }
 47971  
 47972  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 47973  	var p uintptr = pFile
 47974  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 47975  }
 47976  
 47977  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 47978  	var p uintptr = pFile
 47979  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 47980  }
 47981  
 47982  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 47983  	var rc int32
 47984  	var p uintptr = pFile
 47985  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 47986  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 47987  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 47988  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 47989  
 47990  	if rc == SQLITE_OK {
 47991  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 47992  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 47993  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 47994  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 47995  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 47996  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 47997  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 47998  		enterJtMutex(tls)
 47999  		if zName != 0 {
 48000  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 48001  			g2.FpList = p
 48002  		}
 48003  		leaveJtMutex(tls)
 48004  	}
 48005  	return rc
 48006  }
 48007  
 48008  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48009  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 48010  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 48011  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 48012  		if pMain != 0 {
 48013  			closeTransaction(tls, pMain)
 48014  		}
 48015  	}
 48016  
 48017  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 48018  }
 48019  
 48020  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48021  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 48022  }
 48023  
 48024  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48025  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 48026  }
 48027  
 48028  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48029  	return (*struct {
 48030  		f func(*libc.TLS, uintptr, uintptr) uintptr
 48031  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 48032  }
 48033  
 48034  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48035  	(*struct {
 48036  		f func(*libc.TLS, uintptr, int32, uintptr)
 48037  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 48038  }
 48039  
 48040  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 48041  	return (*struct {
 48042  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 48043  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 48044  }
 48045  
 48046  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 48047  	(*struct {
 48048  		f func(*libc.TLS, uintptr, uintptr)
 48049  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 48050  }
 48051  
 48052  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 48053  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 48054  }
 48055  
 48056  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48057  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 48058  }
 48059  
 48060  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48061  	return (*struct {
 48062  		f func(*libc.TLS, uintptr, uintptr) int32
 48063  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 48064  }
 48065  
 48066  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48067  	return (*struct {
 48068  		f func(*libc.TLS, uintptr, uintptr) int32
 48069  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 48070  }
 48071  
 48072  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 48073  	return (*struct {
 48074  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48075  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 48076  }
 48077  
 48078  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 48079  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 48080  	if g2.FpVfs == uintptr(0) {
 48081  		return SQLITE_ERROR
 48082  	}
 48083  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 48084  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 48085  		jt_vfs.FiVersion = 1
 48086  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 48087  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 48088  	}
 48089  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 48090  	return SQLITE_OK
 48091  }
 48092  
 48093  func jt_unregister(tls *libc.TLS) {
 48094  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 48095  }
 48096  
 48097  type MemFault = struct {
 48098  	FiCountdown   int32
 48099  	FnRepeat      int32
 48100  	FnBenign      int32
 48101  	FnFail        int32
 48102  	FnOkBefore    int32
 48103  	FnOkAfter     int32
 48104  	Fenable       u8
 48105  	F__ccgo_pad1  [3]byte
 48106  	FisInstalled  int32
 48107  	FisBenignMode int32
 48108  	F__ccgo_pad2  [4]byte
 48109  	Fm            sqlite3_mem_methods
 48110  }
 48111  
 48112  var memfault MemFault
 48113  
 48114  func sqlite3Fault(tls *libc.TLS) {
 48115  	cnt1++
 48116  }
 48117  
 48118  var cnt1 int32 = 0
 48119  
 48120  func sqlite3FirstFault(tls *libc.TLS) {
 48121  	cnt2++
 48122  }
 48123  
 48124  var cnt2 int32 = 0
 48125  
 48126  func faultsimStep(tls *libc.TLS) int32 {
 48127  	if !(int32(memfault.Fenable) != 0) {
 48128  		memfault.FnOkAfter++
 48129  		return 0
 48130  	}
 48131  	if memfault.FiCountdown > 0 {
 48132  		memfault.FiCountdown--
 48133  		memfault.FnOkBefore++
 48134  		return 0
 48135  	}
 48136  	if memfault.FnFail == 0 {
 48137  		sqlite3FirstFault(tls)
 48138  	}
 48139  	sqlite3Fault(tls)
 48140  	memfault.FnFail++
 48141  	if memfault.FisBenignMode > 0 {
 48142  		memfault.FnBenign++
 48143  	}
 48144  	memfault.FnRepeat--
 48145  	if memfault.FnRepeat <= 0 {
 48146  		memfault.Fenable = u8(0)
 48147  	}
 48148  	return 1
 48149  }
 48150  
 48151  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 48152  	var p uintptr = uintptr(0)
 48153  	if !(faultsimStep(tls) != 0) {
 48154  		p = (*struct {
 48155  			f func(*libc.TLS, int32) uintptr
 48156  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 48157  	}
 48158  	return p
 48159  }
 48160  
 48161  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 48162  	var p uintptr = uintptr(0)
 48163  	if !(faultsimStep(tls) != 0) {
 48164  		p = (*struct {
 48165  			f func(*libc.TLS, uintptr, int32) uintptr
 48166  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 48167  	}
 48168  	return p
 48169  }
 48170  
 48171  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 48172  	memfault.FiCountdown = nDelay
 48173  	memfault.FnRepeat = nRepeat
 48174  	memfault.FnBenign = 0
 48175  	memfault.FnFail = 0
 48176  	memfault.FnOkBefore = 0
 48177  	memfault.FnOkAfter = 0
 48178  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 48179  
 48180  	memfault.FisBenignMode = 0
 48181  }
 48182  
 48183  func faultsimFailures(tls *libc.TLS) int32 {
 48184  	return memfault.FnFail
 48185  }
 48186  
 48187  func faultsimBenignFailures(tls *libc.TLS) int32 {
 48188  	return memfault.FnBenign
 48189  }
 48190  
 48191  func faultsimPending(tls *libc.TLS) int32 {
 48192  	if memfault.Fenable != 0 {
 48193  		return memfault.FiCountdown
 48194  	} else {
 48195  		return -1
 48196  	}
 48197  	return int32(0)
 48198  }
 48199  
 48200  func faultsimBeginBenign(tls *libc.TLS) {
 48201  	memfault.FisBenignMode++
 48202  }
 48203  
 48204  func faultsimEndBenign(tls *libc.TLS) {
 48205  	memfault.FisBenignMode--
 48206  }
 48207  
 48208  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 48209  	bp := tls.Alloc(200)
 48210  	defer tls.Free(200)
 48211  
 48212  	var rc int32
 48213  
 48214  	install = func() int32 {
 48215  		if install != 0 {
 48216  			return 1
 48217  		}
 48218  		return 0
 48219  	}()
 48220  
 48221  	if install == memfault.FisInstalled {
 48222  		return SQLITE_ERROR
 48223  	}
 48224  
 48225  	if install != 0 {
 48226  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 48227  
 48228  		if rc == SQLITE_OK {
 48229  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 48230  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 48231  				f func(*libc.TLS, int32) uintptr
 48232  			}{faultsimMalloc}))
 48233  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 48234  				f func(*libc.TLS, uintptr, int32) uintptr
 48235  			}{faultsimRealloc}))
 48236  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 48237  		}
 48238  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48239  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 48240  	} else {
 48241  		libc.Xmemset(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})))
 48242  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 48243  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 48244  
 48245  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 48246  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48247  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 48248  	}
 48249  
 48250  	if rc == SQLITE_OK {
 48251  		memfault.FisInstalled = 1
 48252  	}
 48253  	return rc
 48254  }
 48255  
 48256  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 48257  	bp := tls.Alloc(20)
 48258  	defer tls.Free(20)
 48259  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 48260  
 48261  	var i int32
 48262  	var k int32
 48263  
 48264  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 48265  		libc.Xstrcpy(tls, z, ts+14193)
 48266  		return
 48267  	}
 48268  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48269  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 48270  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48271  		libc.Xmemcpy(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48272  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 48273  	} else {
 48274  	}
 48275  	i = 0
 48276  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 48277  __1:
 48278  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 48279  		goto __3
 48280  	}
 48281  	{
 48282  		*(*int8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 48283  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 48284  
 48285  	}
 48286  	goto __2
 48287  __2:
 48288  	i++
 48289  	k--
 48290  	goto __1
 48291  	goto __3
 48292  __3:
 48293  	;
 48294  	*(*int8)(unsafe.Pointer(z + 16)) = int8(0)
 48295  }
 48296  
 48297  var zHex = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 48298  
 48299  func hexToInt(tls *libc.TLS, h int32) int32 {
 48300  	if h >= '0' && h <= '9' {
 48301  		return h - '0'
 48302  	} else if h >= 'a' && h <= 'f' {
 48303  		return h - 'a' + 10
 48304  	} else {
 48305  		return -1
 48306  	}
 48307  	return int32(0)
 48308  }
 48309  
 48310  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 48311  	bp := tls.Alloc(12)
 48312  	defer tls.Free(12)
 48313  
 48314  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 48315  	var i int32
 48316  
 48317  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*int8)(unsafe.Pointer(z)) != 0; i++ {
 48318  		var v int32
 48319  		v = hexToInt(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 48320  		if v < 0 {
 48321  			return TCL_ERROR
 48322  		}
 48323  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 48324  	}
 48325  	if int32(*(*int8)(unsafe.Pointer(z))) != 0 {
 48326  		return TCL_ERROR
 48327  	}
 48328  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48329  		libc.Xmemcpy(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 48330  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48331  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 48332  		libc.Xmemcpy(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48333  	} else {
 48334  	}
 48335  	return TCL_OK
 48336  }
 48337  
 48338  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48339  	bp := tls.Alloc(120)
 48340  	defer tls.Free(120)
 48341  
 48342  	var p uintptr
 48343  
 48344  	if objc != 2 {
 48345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 48346  		return TCL_ERROR
 48347  	}
 48348  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48349  		return TCL_ERROR
 48350  	}
 48351  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 48352  	pointerToText(tls, p, bp+20)
 48353  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 48354  	return TCL_OK
 48355  }
 48356  
 48357  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48358  	bp := tls.Alloc(156)
 48359  	defer tls.Free(156)
 48360  
 48361  	var p uintptr
 48362  
 48363  	if objc != 3 {
 48364  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 48365  		return TCL_ERROR
 48366  	}
 48367  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 48368  		return TCL_ERROR
 48369  	}
 48370  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 48371  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48372  		return TCL_ERROR
 48373  	}
 48374  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 48375  	pointerToText(tls, p, bp+56)
 48376  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 48377  	return TCL_OK
 48378  }
 48379  
 48380  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48381  	bp := tls.Alloc(32)
 48382  	defer tls.Free(32)
 48383  
 48384  	if objc != 2 {
 48385  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 48386  		return TCL_ERROR
 48387  	}
 48388  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 48389  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48390  		return TCL_ERROR
 48391  	}
 48392  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 48393  	return TCL_OK
 48394  }
 48395  
 48396  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48397  	bp := tls.Alloc(172)
 48398  	defer tls.Free(172)
 48399  
 48400  	var i int32
 48401  	var zHex uintptr
 48402  	var zOut uintptr
 48403  
 48404  	if objc != 4 {
 48405  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 48406  		return TCL_ERROR
 48407  	}
 48408  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 48409  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48410  		return TCL_ERROR
 48411  	}
 48412  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 48413  		return TCL_ERROR
 48414  	}
 48415  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 48416  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 48417  		return TCL_ERROR
 48418  	}
 48419  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 48420  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]int8{}))*uint64(2) {
 48421  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]int8{})) * uint64(2))
 48422  	}
 48423  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 48424  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 48425  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 48426  		return TCL_ERROR
 48427  	}
 48428  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 48429  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 48430  		*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 48431  	}
 48432  	return TCL_OK
 48433  }
 48434  
 48435  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48436  	bp := tls.Alloc(168)
 48437  	defer tls.Free(168)
 48438  
 48439  	var n int32
 48440  	var zBin uintptr
 48441  
 48442  	if objc != 3 {
 48443  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 48444  		return TCL_ERROR
 48445  	}
 48446  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 48447  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48448  		return TCL_ERROR
 48449  	}
 48450  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 48451  		return TCL_ERROR
 48452  	}
 48453  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 48454  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 48455  		return TCL_ERROR
 48456  	}
 48457  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 48458  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 48459  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]int8{}))-uint64(1))/uint64(2) {
 48460  			n = int32((uint64(unsafe.Sizeof([100]int8{})) - uint64(1)) / uint64(2))
 48461  		} else {
 48462  			n = *(*int32)(unsafe.Pointer(bp + 64))
 48463  		}
 48464  		libc.Xmemcpy(tls, bp+68, zBin, uint64(n))
 48465  		zBin += uintptr(n)
 48466  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 48467  		sqlite3TestBinToHex(tls, bp+68, n)
 48468  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 48469  	}
 48470  	return TCL_OK
 48471  }
 48472  
 48473  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48474  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 48475  	return TCL_OK
 48476  }
 48477  
 48478  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48479  	bp := tls.Alloc(4)
 48480  	defer tls.Free(4)
 48481  
 48482  	*(*int32)(unsafe.Pointer(bp)) = 0
 48483  	if objc != 1 && objc != 2 {
 48484  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 48485  		return TCL_ERROR
 48486  	}
 48487  	if objc == 2 {
 48488  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48489  			return TCL_ERROR
 48490  		}
 48491  	}
 48492  	tcl.XTcl_SetObjResult(tls, interp,
 48493  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 48494  	return TCL_OK
 48495  }
 48496  
 48497  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48498  	bp := tls.Alloc(4)
 48499  	defer tls.Free(4)
 48500  
 48501  	if objc != 2 {
 48502  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 48503  		return TCL_ERROR
 48504  	}
 48505  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48506  		return TCL_ERROR
 48507  	}
 48508  	return TCL_OK
 48509  }
 48510  
 48511  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48512  	if objc != 2 {
 48513  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 48514  		return TCL_ERROR
 48515  	}
 48516  	return TCL_OK
 48517  }
 48518  
 48519  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48520  	var nMalloc int32 = -1
 48521  	if objc != 1 {
 48522  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48523  		return TCL_ERROR
 48524  	}
 48525  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 48526  	return TCL_OK
 48527  }
 48528  
 48529  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48530  	bp := tls.Alloc(36)
 48531  	defer tls.Free(36)
 48532  
 48533  	var ii int32
 48534  
 48535  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 48536  	var pBenignCnt uintptr = uintptr(0)
 48537  	var nBenign int32
 48538  	var nFail int32 = 0
 48539  
 48540  	if objc < 2 {
 48541  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 48542  		return TCL_ERROR
 48543  	}
 48544  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 48545  		return TCL_ERROR
 48546  	}
 48547  
 48548  	for ii = 2; ii < objc; ii = ii + 2 {
 48549  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 48550  		var zErr uintptr = uintptr(0)
 48551  
 48552  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 48553  			if ii == objc-1 {
 48554  				zErr = ts + 12638
 48555  			} else {
 48556  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 48557  					return TCL_ERROR
 48558  				}
 48559  			}
 48560  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 48561  			if ii == objc-1 {
 48562  				zErr = ts + 12638
 48563  			} else {
 48564  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 48565  			}
 48566  		} else {
 48567  			zErr = ts + 12444
 48568  		}
 48569  
 48570  		if zErr != 0 {
 48571  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 48572  			return TCL_ERROR
 48573  		}
 48574  	}
 48575  
 48576  	nBenign = faultsimBenignFailures(tls)
 48577  	nFail = faultsimFailures(tls)
 48578  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 48579  
 48580  	if pBenignCnt != 0 {
 48581  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 48582  	}
 48583  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 48584  	return TCL_OK
 48585  }
 48586  
 48587  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48588  	var nPending int32
 48589  	if objc != 1 {
 48590  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48591  		return TCL_ERROR
 48592  	}
 48593  	nPending = faultsimPending(tls)
 48594  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 48595  	return TCL_OK
 48596  }
 48597  
 48598  var sqlite3_memdebug_title_count int32 = 0
 48599  
 48600  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48601  	sqlite3_memdebug_title_count++
 48602  	if objc != 2 {
 48603  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 48604  		return TCL_ERROR
 48605  	}
 48606  	return TCL_OK
 48607  }
 48608  
 48609  var aMallocLog Tcl_HashTable
 48610  var mallocLogEnabled int32 = 0
 48611  
 48612  type MallocLog1 = struct {
 48613  	FnCall int32
 48614  	FnByte int32
 48615  }
 48616  
 48617  type MallocLog = MallocLog1
 48618  
 48619  func test_memdebug_log_clear(tls *libc.TLS) {
 48620  	bp := tls.Alloc(24)
 48621  	defer tls.Free(24)
 48622  
 48623  	var pEntry uintptr
 48624  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 48625  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 48626  		tcl.XTcl_Free(tls, pLog)
 48627  	}
 48628  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 48629  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 48630  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 48631  			return uint64(1)
 48632  		}
 48633  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 48634  	}()))
 48635  }
 48636  
 48637  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48638  	bp := tls.Alloc(128)
 48639  	defer tls.Free(128)
 48640  
 48641  	if !(isInit != 0) {
 48642  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 48643  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 48644  				return uint64(1)
 48645  			}
 48646  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 48647  		}()))
 48648  		isInit = 1
 48649  	}
 48650  
 48651  	if objc < 2 {
 48652  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 48653  	}
 48654  	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 {
 48655  		return TCL_ERROR
 48656  	}
 48657  
 48658  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 48659  	case uint32(0):
 48660  		mallocLogEnabled = 1
 48661  		break
 48662  	case uint32(1):
 48663  		mallocLogEnabled = 0
 48664  		break
 48665  	case uint32(2):
 48666  		{
 48667  			var pEntry uintptr
 48668  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 48669  
 48670  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 48671  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 48672  				var aKey uintptr = func() uintptr {
 48673  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 48674  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 48675  					}
 48676  					return pEntry + 32
 48677  				}()
 48678  				var ii int32
 48679  
 48680  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 48681  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 48682  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 48683  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 48684  				}
 48685  
 48686  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 48687  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 48688  			}
 48689  
 48690  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 48691  			break
 48692  
 48693  		}
 48694  	case uint32(3):
 48695  		{
 48696  			test_memdebug_log_clear(tls)
 48697  			break
 48698  
 48699  		}
 48700  
 48701  	case uint32(4):
 48702  		{
 48703  			break
 48704  
 48705  		}
 48706  	}
 48707  
 48708  	return TCL_OK
 48709  }
 48710  
 48711  var isInit int32 = 0
 48712  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 48713  
 48714  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48715  	bp := tls.Alloc(56)
 48716  	defer tls.Free(56)
 48717  
 48718  	var pRes uintptr
 48719  	if objc != 3 {
 48720  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 48721  		return TCL_ERROR
 48722  	}
 48723  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 48724  		return TCL_ERROR
 48725  	}
 48726  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 48727  		return TCL_ERROR
 48728  	}
 48729  	libc.Xfree(tls, buf1)
 48730  	buf1 = uintptr(0)
 48731  
 48732  	pRes = tcl.XTcl_NewObj(tls)
 48733  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 48734  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 48735  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 48736  
 48737  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 48738  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 48739  	} else {
 48740  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 48741  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 48742  	}
 48743  	return TCL_OK
 48744  }
 48745  
 48746  var buf1 uintptr = uintptr(0)
 48747  
 48748  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48749  	bp := tls.Alloc(32)
 48750  	defer tls.Free(32)
 48751  
 48752  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 48753  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 48754  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 48755  	if objc < 2 || objc > 5 {
 48756  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 48757  			ts+33032)
 48758  		return TCL_ERROR
 48759  	}
 48760  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48761  		return TCL_ERROR
 48762  	}
 48763  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 48764  		return TCL_ERROR
 48765  	}
 48766  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 48767  		return TCL_ERROR
 48768  	}
 48769  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 48770  		return TCL_ERROR
 48771  	}
 48772  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 48773  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 48774  			uintptr(0)))
 48775  		return TCL_ERROR
 48776  	}
 48777  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 48778  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 48779  	return TCL_OK
 48780  }
 48781  
 48782  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48783  	bp := tls.Alloc(12)
 48784  	defer tls.Free(12)
 48785  
 48786  	var rc int32
 48787  	if objc != 2 {
 48788  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 48789  		return TCL_ERROR
 48790  	}
 48791  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48792  		return TCL_ERROR
 48793  	}
 48794  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48795  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 48796  	return TCL_OK
 48797  }
 48798  
 48799  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48800  	bp := tls.Alloc(24)
 48801  	defer tls.Free(24)
 48802  
 48803  	var pRet uintptr
 48804  	if objc != 3 {
 48805  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 48806  		return TCL_ERROR
 48807  	}
 48808  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48809  		return TCL_ERROR
 48810  	}
 48811  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 48812  		return TCL_ERROR
 48813  	}
 48814  	pRet = tcl.XTcl_NewObj(tls)
 48815  	tcl.XTcl_ListObjAppendElement(tls,
 48816  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 48817  	tcl.XTcl_ListObjAppendElement(tls,
 48818  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 48819  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 48820  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 48821  	return TCL_OK
 48822  }
 48823  
 48824  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48825  	bp := tls.Alloc(84)
 48826  	defer tls.Free(84)
 48827  
 48828  	var rc int32
 48829  
 48830  	if objc != 5 {
 48831  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 48832  		return TCL_ERROR
 48833  	}
 48834  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 48835  		return TCL_ERROR
 48836  	}
 48837  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 48838  		return TCL_ERROR
 48839  	}
 48840  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 48841  		return TCL_ERROR
 48842  	}
 48843  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 48844  		return TCL_ERROR
 48845  	}
 48846  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 48847  		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))))
 48848  	} 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{})) {
 48849  		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))))
 48850  	} else {
 48851  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 48852  		return TCL_ERROR
 48853  	}
 48854  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 48855  	return TCL_OK
 48856  }
 48857  
 48858  var azBuf [2][10000]int8
 48859  
 48860  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48861  	bp := tls.Alloc(56)
 48862  	defer tls.Free(56)
 48863  
 48864  	var rc int32
 48865  
 48866  	var aArg uintptr = objv + 1*8
 48867  	var nArg int32 = objc - 1
 48868  
 48869  	if nArg != 2 {
 48870  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 48871  		return TCL_ERROR
 48872  	}
 48873  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 48874  		return TCL_ERROR
 48875  	}
 48876  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 48877  		return TCL_ERROR
 48878  	}
 48879  
 48880  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 48881  		libc.Xfree(tls, zBuf)
 48882  		zBuf = uintptr(0)
 48883  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 48884  	} else {
 48885  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 48886  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 48887  	}
 48888  
 48889  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48890  	return TCL_OK
 48891  }
 48892  
 48893  var zBuf uintptr
 48894  
 48895  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48896  	bp := tls.Alloc(12)
 48897  	defer tls.Free(12)
 48898  
 48899  	var rc int32
 48900  
 48901  	var aArg uintptr = objv + 1*8
 48902  	var nArg int32 = objc - 1
 48903  
 48904  	if nArg != 1 {
 48905  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 48906  		return TCL_ERROR
 48907  	}
 48908  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 48909  		return TCL_ERROR
 48910  	}
 48911  
 48912  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48913  
 48914  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48915  	return TCL_OK
 48916  }
 48917  
 48918  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48919  	bp := tls.Alloc(40)
 48920  	defer tls.Free(40)
 48921  
 48922  	if objc != 2 && objc != 1 {
 48923  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 48924  		return TCL_ERROR
 48925  	}
 48926  	if objc == 2 {
 48927  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 48928  			return TCL_ERROR
 48929  		}
 48930  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 48931  			tcl.XTcl_AppendResult(tls, interp,
 48932  				libc.VaList(bp, ts+33209,
 48933  					uintptr(0)))
 48934  			return TCL_ERROR
 48935  		}
 48936  	} else {
 48937  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 48938  			tcl.XTcl_AppendResult(tls, interp,
 48939  				libc.VaList(bp+16, ts+33267,
 48940  					uintptr(0)))
 48941  			return TCL_ERROR
 48942  		}
 48943  	}
 48944  	return TCL_OK
 48945  }
 48946  
 48947  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48948  	bp := tls.Alloc(12)
 48949  	defer tls.Free(12)
 48950  
 48951  	var rc int32
 48952  
 48953  	if objc != 2 {
 48954  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 48955  		return TCL_ERROR
 48956  	}
 48957  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48958  		return TCL_ERROR
 48959  	}
 48960  
 48961  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48962  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48963  
 48964  	return TCL_OK
 48965  }
 48966  
 48967  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48968  	bp := tls.Alloc(12)
 48969  	defer tls.Free(12)
 48970  
 48971  	var rc int32
 48972  
 48973  	if objc != 2 {
 48974  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 48975  		return TCL_ERROR
 48976  	}
 48977  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48978  		return TCL_ERROR
 48979  	}
 48980  
 48981  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48982  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48983  
 48984  	return TCL_OK
 48985  }
 48986  
 48987  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48988  	bp := tls.Alloc(12)
 48989  	defer tls.Free(12)
 48990  
 48991  	var rc int32
 48992  
 48993  	if objc != 2 {
 48994  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 48995  		return TCL_ERROR
 48996  	}
 48997  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48998  		return TCL_ERROR
 48999  	}
 49000  
 49001  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49002  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49003  
 49004  	return TCL_OK
 49005  }
 49006  
 49007  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49008  	if objc != 2 {
 49009  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49010  		return TCL_ERROR
 49011  	}
 49012  
 49013  	switch int32(clientData) {
 49014  	case 3:
 49015  		{
 49016  		}
 49017  		fallthrough
 49018  	case 5:
 49019  		{
 49020  		}
 49021  	}
 49022  	return TCL_OK
 49023  }
 49024  
 49025  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49026  	bp := tls.Alloc(16)
 49027  	defer tls.Free(16)
 49028  
 49029  	var rc int32
 49030  
 49031  	var i int32
 49032  	*(*int32)(unsafe.Pointer(bp)) = 0
 49033  
 49034  	var zOpName uintptr
 49035  	var pResult uintptr
 49036  	if objc != 3 {
 49037  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 49038  		return TCL_ERROR
 49039  	}
 49040  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 49041  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49042  		FzName       uintptr
 49043  		Fop          int32
 49044  		F__ccgo_pad1 [4]byte
 49045  	}{}))); i++ {
 49046  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 49047  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 49048  			break
 49049  		}
 49050  	}
 49051  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49052  		FzName       uintptr
 49053  		Fop          int32
 49054  		F__ccgo_pad1 [4]byte
 49055  	}{}))) {
 49056  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49057  			return TCL_ERROR
 49058  		}
 49059  	}
 49060  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 49061  		return TCL_ERROR
 49062  	}
 49063  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49064  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 49065  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 49066  	pResult = tcl.XTcl_NewObj(tls)
 49067  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49068  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 49069  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 49070  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49071  	return TCL_OK
 49072  }
 49073  
 49074  var aOp1 = [10]struct {
 49075  	FzName       uintptr
 49076  	Fop          int32
 49077  	F__ccgo_pad1 [4]byte
 49078  }{
 49079  	{FzName: ts + 33338},
 49080  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 49081  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 49082  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 49083  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 49084  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 49085  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 49086  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 49087  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 49088  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 49089  }
 49090  
 49091  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49092  	bp := tls.Alloc(24)
 49093  	defer tls.Free(24)
 49094  
 49095  	var rc int32
 49096  
 49097  	var i int32
 49098  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49099  
 49100  	var zOpName uintptr
 49101  
 49102  	var pResult uintptr
 49103  	if objc != 4 {
 49104  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 49105  		return TCL_ERROR
 49106  	}
 49107  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 49108  		return TCL_ERROR
 49109  	}
 49110  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 49111  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint64(7)) == 0 {
 49112  		zOpName += uintptr(7)
 49113  	}
 49114  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint64(9)) == 0 {
 49115  		zOpName += uintptr(9)
 49116  	}
 49117  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49118  		FzName       uintptr
 49119  		Fop          int32
 49120  		F__ccgo_pad1 [4]byte
 49121  	}{}))); i++ {
 49122  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 49123  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 49124  			break
 49125  		}
 49126  	}
 49127  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49128  		FzName       uintptr
 49129  		Fop          int32
 49130  		F__ccgo_pad1 [4]byte
 49131  	}{}))) {
 49132  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 49133  			return TCL_ERROR
 49134  		}
 49135  	}
 49136  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 49137  		return TCL_ERROR
 49138  	}
 49139  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 49140  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49141  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 49142  	pResult = tcl.XTcl_NewObj(tls)
 49143  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49144  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 49145  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 49146  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49147  	return TCL_OK
 49148  }
 49149  
 49150  var aOp2 = [13]struct {
 49151  	FzName       uintptr
 49152  	Fop          int32
 49153  	F__ccgo_pad1 [4]byte
 49154  }{
 49155  	{FzName: ts + 33661},
 49156  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 49157  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 49158  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 49159  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 49160  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 49161  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 49162  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 49163  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 49164  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 49165  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 49166  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 49167  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 49168  }
 49169  
 49170  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49171  	bp := tls.Alloc(4)
 49172  	defer tls.Free(4)
 49173  
 49174  	var rc int32
 49175  
 49176  	if objc != 2 {
 49177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49178  		return TCL_ERROR
 49179  	}
 49180  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 49181  		return TCL_ERROR
 49182  	}
 49183  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 49184  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49185  	return TCL_OK
 49186  }
 49187  
 49188  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49189  	var rc int32 = SQLITE_MISUSE
 49190  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49191  	return TCL_OK
 49192  }
 49193  
 49194  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49195  	bp := tls.Alloc(4)
 49196  	defer tls.Free(4)
 49197  
 49198  	if objc > 2 {
 49199  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 49200  		return TCL_ERROR
 49201  	} else if objc == 2 {
 49202  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49203  			return TCL_ERROR
 49204  		}
 49205  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 49206  	}
 49207  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 49208  	return TCL_OK
 49209  }
 49210  
 49211  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 49212  	var i int32
 49213  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 49214  		FzName       uintptr
 49215  		FxProc       uintptr
 49216  		FclientData  int32
 49217  		F__ccgo_pad1 [4]byte
 49218  	}{})); i++ {
 49219  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 49220  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 49221  	}
 49222  	return TCL_OK
 49223  }
 49224  
 49225  var aObjCmd11 = [32]struct {
 49226  	FzName       uintptr
 49227  	FxProc       uintptr
 49228  	FclientData  int32
 49229  	F__ccgo_pad1 [4]byte
 49230  }{
 49231  	{FzName: ts + 28095, FxProc: 0},
 49232  	{FzName: ts + 28110, FxProc: 0},
 49233  	{FzName: ts + 33849, FxProc: 0},
 49234  	{FzName: ts + 33862, FxProc: 0},
 49235  	{FzName: ts + 33869, FxProc: 0},
 49236  	{FzName: ts + 33876, FxProc: 0},
 49237  	{FzName: ts + 33896, FxProc: 0},
 49238  	{FzName: ts + 33921, FxProc: 0},
 49239  	{FzName: ts + 33948, FxProc: 0},
 49240  	{FzName: ts + 33970, FxProc: 0},
 49241  	{FzName: ts + 33992, FxProc: 0},
 49242  	{FzName: ts + 34017, FxProc: 0},
 49243  	{FzName: ts + 34043, FxProc: 0},
 49244  	{FzName: ts + 34073, FxProc: 0},
 49245  	{FzName: ts + 34094, FxProc: 0},
 49246  	{FzName: ts + 34119, FxProc: 0},
 49247  	{FzName: ts + 34145, FxProc: 0},
 49248  	{FzName: ts + 34160, FxProc: 0},
 49249  	{FzName: ts + 34178, FxProc: 0},
 49250  	{FzName: ts + 34202, FxProc: 0},
 49251  	{FzName: ts + 34222, FxProc: 0},
 49252  	{FzName: ts + 34247, FxProc: 0},
 49253  	{FzName: ts + 34272, FxProc: 0},
 49254  	{FzName: ts + 34297, FxProc: 0},
 49255  	{FzName: ts + 34318, FxProc: 0},
 49256  	{FzName: ts + 34337, FxProc: 0},
 49257  	{FzName: ts + 34356, FxProc: 0},
 49258  	{FzName: ts + 34377, FxProc: 0},
 49259  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 49260  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 49261  	{FzName: ts + 34447, FxProc: 0},
 49262  	{FzName: ts + 34471, FxProc: 0},
 49263  }
 49264  
 49265  type MD5Context1 = struct {
 49266  	FisInit int32
 49267  	Fbuf    [4]uint32
 49268  	Fbits   [2]uint32
 49269  	Fin     [64]uint8
 49270  }
 49271  
 49272  type MD5Context = MD5Context1
 49273  
 49274  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 49275  	var t uint32
 49276  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 49277  		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))))
 49278  		*(*uint32)(unsafe.Pointer(buf)) = t
 49279  		buf += uintptr(4)
 49280  	}
 49281  }
 49282  
 49283  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 49284  	var a uint32
 49285  	var b uint32
 49286  	var c uint32
 49287  	var d uint32
 49288  
 49289  	a = *(*uint32)(unsafe.Pointer(buf))
 49290  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 49291  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 49292  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 49293  
 49294  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 49295  	a = a<<7 | a>>(32-7)
 49296  	a = a + b
 49297  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 49298  	d = d<<12 | d>>(32-12)
 49299  	d = d + a
 49300  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 49301  	c = c<<17 | c>>(32-17)
 49302  	c = c + d
 49303  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 49304  	b = b<<22 | b>>(32-22)
 49305  	b = b + c
 49306  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 49307  	a = a<<7 | a>>(32-7)
 49308  	a = a + b
 49309  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 49310  	d = d<<12 | d>>(32-12)
 49311  	d = d + a
 49312  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 49313  	c = c<<17 | c>>(32-17)
 49314  	c = c + d
 49315  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 49316  	b = b<<22 | b>>(32-22)
 49317  	b = b + c
 49318  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 49319  	a = a<<7 | a>>(32-7)
 49320  	a = a + b
 49321  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 49322  	d = d<<12 | d>>(32-12)
 49323  	d = d + a
 49324  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 49325  	c = c<<17 | c>>(32-17)
 49326  	c = c + d
 49327  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 49328  	b = b<<22 | b>>(32-22)
 49329  	b = b + c
 49330  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 49331  	a = a<<7 | a>>(32-7)
 49332  	a = a + b
 49333  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 49334  	d = d<<12 | d>>(32-12)
 49335  	d = d + a
 49336  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 49337  	c = c<<17 | c>>(32-17)
 49338  	c = c + d
 49339  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 49340  	b = b<<22 | b>>(32-22)
 49341  	b = b + c
 49342  
 49343  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 49344  	a = a<<5 | a>>(32-5)
 49345  	a = a + b
 49346  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 49347  	d = d<<9 | d>>(32-9)
 49348  	d = d + a
 49349  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 49350  	c = c<<14 | c>>(32-14)
 49351  	c = c + d
 49352  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 49353  	b = b<<20 | b>>(32-20)
 49354  	b = b + c
 49355  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 49356  	a = a<<5 | a>>(32-5)
 49357  	a = a + b
 49358  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 49359  	d = d<<9 | d>>(32-9)
 49360  	d = d + a
 49361  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 49362  	c = c<<14 | c>>(32-14)
 49363  	c = c + d
 49364  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 49365  	b = b<<20 | b>>(32-20)
 49366  	b = b + c
 49367  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 49368  	a = a<<5 | a>>(32-5)
 49369  	a = a + b
 49370  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 49371  	d = d<<9 | d>>(32-9)
 49372  	d = d + a
 49373  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 49374  	c = c<<14 | c>>(32-14)
 49375  	c = c + d
 49376  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 49377  	b = b<<20 | b>>(32-20)
 49378  	b = b + c
 49379  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 49380  	a = a<<5 | a>>(32-5)
 49381  	a = a + b
 49382  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 49383  	d = d<<9 | d>>(32-9)
 49384  	d = d + a
 49385  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 49386  	c = c<<14 | c>>(32-14)
 49387  	c = c + d
 49388  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 49389  	b = b<<20 | b>>(32-20)
 49390  	b = b + c
 49391  
 49392  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 49393  	a = a<<4 | a>>(32-4)
 49394  	a = a + b
 49395  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 49396  	d = d<<11 | d>>(32-11)
 49397  	d = d + a
 49398  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 49399  	c = c<<16 | c>>(32-16)
 49400  	c = c + d
 49401  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 49402  	b = b<<23 | b>>(32-23)
 49403  	b = b + c
 49404  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 49405  	a = a<<4 | a>>(32-4)
 49406  	a = a + b
 49407  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 49408  	d = d<<11 | d>>(32-11)
 49409  	d = d + a
 49410  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 49411  	c = c<<16 | c>>(32-16)
 49412  	c = c + d
 49413  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 49414  	b = b<<23 | b>>(32-23)
 49415  	b = b + c
 49416  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 49417  	a = a<<4 | a>>(32-4)
 49418  	a = a + b
 49419  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 49420  	d = d<<11 | d>>(32-11)
 49421  	d = d + a
 49422  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 49423  	c = c<<16 | c>>(32-16)
 49424  	c = c + d
 49425  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 49426  	b = b<<23 | b>>(32-23)
 49427  	b = b + c
 49428  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 49429  	a = a<<4 | a>>(32-4)
 49430  	a = a + b
 49431  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 49432  	d = d<<11 | d>>(32-11)
 49433  	d = d + a
 49434  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 49435  	c = c<<16 | c>>(32-16)
 49436  	c = c + d
 49437  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 49438  	b = b<<23 | b>>(32-23)
 49439  	b = b + c
 49440  
 49441  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 49442  	a = a<<6 | a>>(32-6)
 49443  	a = a + b
 49444  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 49445  	d = d<<10 | d>>(32-10)
 49446  	d = d + a
 49447  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 49448  	c = c<<15 | c>>(32-15)
 49449  	c = c + d
 49450  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 49451  	b = b<<21 | b>>(32-21)
 49452  	b = b + c
 49453  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 49454  	a = a<<6 | a>>(32-6)
 49455  	a = a + b
 49456  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 49457  	d = d<<10 | d>>(32-10)
 49458  	d = d + a
 49459  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 49460  	c = c<<15 | c>>(32-15)
 49461  	c = c + d
 49462  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 49463  	b = b<<21 | b>>(32-21)
 49464  	b = b + c
 49465  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 49466  	a = a<<6 | a>>(32-6)
 49467  	a = a + b
 49468  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 49469  	d = d<<10 | d>>(32-10)
 49470  	d = d + a
 49471  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 49472  	c = c<<15 | c>>(32-15)
 49473  	c = c + d
 49474  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 49475  	b = b<<21 | b>>(32-21)
 49476  	b = b + c
 49477  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 49478  	a = a<<6 | a>>(32-6)
 49479  	a = a + b
 49480  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 49481  	d = d<<10 | d>>(32-10)
 49482  	d = d + a
 49483  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 49484  	c = c<<15 | c>>(32-15)
 49485  	c = c + d
 49486  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 49487  	b = b<<21 | b>>(32-21)
 49488  	b = b + c
 49489  
 49490  	*(*uint32)(unsafe.Pointer(buf)) += a
 49491  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 49492  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 49493  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 49494  }
 49495  
 49496  func MD5Init(tls *libc.TLS, ctx uintptr) {
 49497  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 49498  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 49499  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 49500  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 49501  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 49502  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 49503  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 49504  }
 49505  
 49506  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 49507  	var t uint32
 49508  
 49509  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 49510  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 49511  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 49512  	}
 49513  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 49514  
 49515  	t = t >> 3 & uint32(0x3f)
 49516  
 49517  	if t != 0 {
 49518  		var p uintptr = ctx + 28 + uintptr(t)
 49519  
 49520  		t = uint32(64) - t
 49521  		if len < t {
 49522  			libc.Xmemcpy(tls, p, buf, uint64(len))
 49523  			return
 49524  		}
 49525  		libc.Xmemcpy(tls, p, buf, uint64(t))
 49526  		byteReverse(tls, ctx+28, uint32(16))
 49527  		MD5Transform(tls, ctx+4, ctx+28)
 49528  		buf += uintptr(t)
 49529  		len = len - t
 49530  	}
 49531  
 49532  	for len >= uint32(64) {
 49533  		libc.Xmemcpy(tls, ctx+28, buf, uint64(64))
 49534  		byteReverse(tls, ctx+28, uint32(16))
 49535  		MD5Transform(tls, ctx+4, ctx+28)
 49536  		buf += uintptr(64)
 49537  		len = len - uint32(64)
 49538  	}
 49539  
 49540  	libc.Xmemcpy(tls, ctx+28, buf, uint64(len))
 49541  }
 49542  
 49543  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 49544  	var count uint32
 49545  	var p uintptr
 49546  
 49547  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 49548  
 49549  	p = ctx + 28 + uintptr(count)
 49550  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 49551  
 49552  	count = uint32(64-1) - count
 49553  
 49554  	if count < uint32(8) {
 49555  		libc.Xmemset(tls, p, 0, uint64(count))
 49556  		byteReverse(tls, ctx+28, uint32(16))
 49557  		MD5Transform(tls, ctx+4, ctx+28)
 49558  
 49559  		libc.Xmemset(tls, ctx+28, 0, uint64(56))
 49560  	} else {
 49561  		libc.Xmemset(tls, p, 0, uint64(count-uint32(8)))
 49562  	}
 49563  	byteReverse(tls, ctx+28, uint32(14))
 49564  
 49565  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8))
 49566  
 49567  	MD5Transform(tls, ctx+4, ctx+28)
 49568  	byteReverse(tls, ctx+4, uint32(4))
 49569  	libc.Xmemcpy(tls, digest, ctx+4, uint64(16))
 49570  }
 49571  
 49572  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 49573  	var i int32
 49574  	var j int32
 49575  
 49576  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 49577  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 49578  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 49579  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 49580  	}
 49581  	*(*int8)(unsafe.Pointer(zBuf + uintptr(j))) = int8(0)
 49582  }
 49583  
 49584  var zEncode = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 49585  
 49586  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 49587  	bp := tls.Alloc(8)
 49588  	defer tls.Free(8)
 49589  
 49590  	var i int32
 49591  	var j int32
 49592  	var x uint32
 49593  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 49594  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 49595  		if i > 0 {
 49596  			*(*int8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = int8('-')
 49597  		}
 49598  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 49599  		j = j + 5
 49600  	}
 49601  	*(*int8)(unsafe.Pointer(zDigest + uintptr(j))) = int8(0)
 49602  }
 49603  
 49604  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 49605  	bp := tls.Alloc(206)
 49606  	defer tls.Free(206)
 49607  
 49608  	var converter uintptr
 49609  
 49610  	if argc != 2 {
 49611  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 49612  			ts+15307, uintptr(0)))
 49613  		return TCL_ERROR
 49614  	}
 49615  	MD5Init(tls, bp+48)
 49616  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 49617  	MD5Final(tls, bp+140, bp+48)
 49618  	converter = cd
 49619  	(*struct {
 49620  		f func(*libc.TLS, uintptr, uintptr)
 49621  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 49622  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 49623  	return TCL_OK
 49624  }
 49625  
 49626  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 49627  	bp := tls.Alloc(10428)
 49628  	defer tls.Free(10428)
 49629  
 49630  	var in uintptr
 49631  	var ofst int32
 49632  	var amt int32
 49633  
 49634  	var converter uintptr
 49635  
 49636  	if argc != 2 && argc != 4 {
 49637  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 49638  			ts+34506, uintptr(0)))
 49639  		return TCL_ERROR
 49640  	}
 49641  	if argc == 4 {
 49642  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 49643  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 49644  	} else {
 49645  		ofst = 0
 49646  		amt = 2147483647
 49647  	}
 49648  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 49649  	if in == uintptr(0) {
 49650  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 49651  			ts+34552, uintptr(0)))
 49652  		return TCL_ERROR
 49653  	}
 49654  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 49655  	MD5Init(tls, bp+80)
 49656  	for amt > 0 {
 49657  		var n int32
 49658  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 49659  			if uint64(unsafe.Sizeof([10240]int8{})) <= uint64(amt) {
 49660  				return uint64(unsafe.Sizeof([10240]int8{}))
 49661  			}
 49662  			return uint64(amt)
 49663  		}(), in))
 49664  		if n <= 0 {
 49665  			break
 49666  		}
 49667  		MD5Update(tls, bp+80, bp+172, uint32(n))
 49668  		amt = amt - n
 49669  	}
 49670  	libc.Xfclose(tls, in)
 49671  	MD5Final(tls, bp+10412, bp+80)
 49672  	converter = cd
 49673  	(*struct {
 49674  		f func(*libc.TLS, uintptr, uintptr)
 49675  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 49676  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 49677  	return TCL_OK
 49678  }
 49679  
 49680  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 49681  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 49682  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49683  	}{md5_cmd})),
 49684  		*(*uintptr)(unsafe.Pointer(&struct {
 49685  			f func(*libc.TLS, uintptr, uintptr)
 49686  		}{MD5DigestToBase16})), uintptr(0))
 49687  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 49688  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49689  	}{md5_cmd})),
 49690  		*(*uintptr)(unsafe.Pointer(&struct {
 49691  			f func(*libc.TLS, uintptr, uintptr)
 49692  		}{MD5DigestToBase10x8})), uintptr(0))
 49693  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 49694  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49695  	}{md5file_cmd})),
 49696  		*(*uintptr)(unsafe.Pointer(&struct {
 49697  			f func(*libc.TLS, uintptr, uintptr)
 49698  		}{MD5DigestToBase16})), uintptr(0))
 49699  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 49700  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49701  	}{md5file_cmd})),
 49702  		*(*uintptr)(unsafe.Pointer(&struct {
 49703  			f func(*libc.TLS, uintptr, uintptr)
 49704  		}{MD5DigestToBase10x8})), uintptr(0))
 49705  	return TCL_OK
 49706  }
 49707  
 49708  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49709  	var p uintptr
 49710  	var i int32
 49711  	if argc < 1 {
 49712  		return
 49713  	}
 49714  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 49715  	if p == uintptr(0) {
 49716  		return
 49717  	}
 49718  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 49719  		MD5Init(tls, p)
 49720  	}
 49721  	for i = 0; i < argc; i++ {
 49722  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 49723  		if zData != 0 {
 49724  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 49725  		}
 49726  	}
 49727  }
 49728  
 49729  func md5finalize(tls *libc.TLS, context uintptr) {
 49730  	bp := tls.Alloc(49)
 49731  	defer tls.Free(49)
 49732  
 49733  	var p uintptr
 49734  
 49735  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 49736  	MD5Final(tls, bp, p)
 49737  	MD5DigestToBase16(tls, bp, bp+16)
 49738  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 49739  }
 49740  
 49741  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 49742  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 49743  		*(*uintptr)(unsafe.Pointer(&struct {
 49744  			f func(*libc.TLS, uintptr, int32, uintptr)
 49745  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 49746  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 49747  	return rc
 49748  }
 49749  
 49750  type multiplexGroup1 = struct {
 49751  	FaReal       uintptr
 49752  	FnReal       int32
 49753  	F__ccgo_pad1 [4]byte
 49754  	FzName       uintptr
 49755  	FnName       int32
 49756  	Fflags       int32
 49757  	FszChunk     uint32
 49758  	FbEnabled    uint8
 49759  	FbTruncate   uint8
 49760  	F__ccgo_pad2 [2]byte
 49761  }
 49762  
 49763  type multiplexGroup = multiplexGroup1
 49764  type multiplexConn1 = struct {
 49765  	Fbase   sqlite3_file
 49766  	FpGroup uintptr
 49767  }
 49768  
 49769  type multiplexConn = multiplexConn1
 49770  
 49771  type multiplexReal = struct {
 49772  	Fp uintptr
 49773  	Fz uintptr
 49774  }
 49775  
 49776  var gMultiplex struct {
 49777  	FpOrigVfs      uintptr
 49778  	FsThisVfs      sqlite3_vfs
 49779  	FsIoMethodsV1  sqlite3_io_methods
 49780  	FsIoMethodsV2  sqlite3_io_methods
 49781  	FisInitialized int32
 49782  	F__ccgo_pad1   [4]byte
 49783  }
 49784  
 49785  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 49786  	var z2 uintptr = z
 49787  	if z == uintptr(0) {
 49788  		return 0
 49789  	}
 49790  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 49791  		z2++
 49792  	}
 49793  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 49794  }
 49795  
 49796  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 49797  	bp := tls.Alloc(8)
 49798  	defer tls.Free(8)
 49799  
 49800  	var n int32 = nBase
 49801  	libc.Xmemcpy(tls, zOut, zBase, uint64(n+1))
 49802  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 49803  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 49804  		n = n + 3
 49805  	}
 49806  
 49807  	*(*int8)(unsafe.Pointer(zOut + uintptr(n+1))) = int8(0)
 49808  }
 49809  
 49810  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 49811  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 49812  		var p uintptr
 49813  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 49814  		if p == uintptr(0) {
 49815  			return SQLITE_NOMEM
 49816  		}
 49817  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 49818  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 49819  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 49820  	}
 49821  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49822  		var z uintptr
 49823  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 49824  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 49825  		if z == uintptr(0) {
 49826  			return SQLITE_NOMEM
 49827  		}
 49828  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 49829  		(*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))
 49830  		sqlite3.Xsqlite3_free(tls, z)
 49831  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49832  			return SQLITE_NOMEM
 49833  		}
 49834  	}
 49835  	return SQLITE_OK
 49836  }
 49837  
 49838  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 49839  	bp := tls.Alloc(20)
 49840  	defer tls.Free(20)
 49841  
 49842  	var pSubOpen uintptr = uintptr(0)
 49843  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 49844  
 49845  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 49846  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 49847  		var flags int32
 49848  
 49849  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 49850  		if createFlag != 0 {
 49851  			flags = flags | SQLITE_OPEN_CREATE
 49852  		} else if iChunk == 0 {
 49853  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49854  			return uintptr(0)
 49855  		} else {
 49856  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49857  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49858  			})(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,
 49859  				SQLITE_ACCESS_EXISTS, bp+16)
 49860  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 49861  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 49862  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 49863  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 49864  				}
 49865  				return uintptr(0)
 49866  			}
 49867  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 49868  		}
 49869  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 49870  		if pSubOpen == uintptr(0) {
 49871  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 49872  			return uintptr(0)
 49873  		}
 49874  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 49875  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49876  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 49877  		})(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,
 49878  			flags, pOutFlags)
 49879  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 49880  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 49881  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 49882  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 49883  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 49884  			return uintptr(0)
 49885  		}
 49886  	}
 49887  	return pSubOpen
 49888  }
 49889  
 49890  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 49891  	bp := tls.Alloc(8)
 49892  	defer tls.Free(8)
 49893  
 49894  	var pSub uintptr
 49895  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 49896  
 49897  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 49898  		return int64(0)
 49899  	}
 49900  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 49901  	if pSub == uintptr(0) {
 49902  		return int64(0)
 49903  	}
 49904  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49905  		f func(*libc.TLS, uintptr, uintptr) int32
 49906  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 49907  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 49908  }
 49909  
 49910  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49911  	bp := tls.Alloc(4)
 49912  	defer tls.Free(4)
 49913  
 49914  	var rc int32 = SQLITE_OK
 49915  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 49916  	var op int32 = 0
 49917  
 49918  	if !(db != 0) || argc != 2 {
 49919  		rc = SQLITE_ERROR
 49920  	} else {
 49921  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49922  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 49923  
 49924  		switch op {
 49925  		case 1:
 49926  			op = MULTIPLEX_CTRL_ENABLE
 49927  			break
 49928  			fallthrough
 49929  		case 2:
 49930  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 49931  			break
 49932  			fallthrough
 49933  		case 3:
 49934  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 49935  			break
 49936  			fallthrough
 49937  		default:
 49938  			rc = SQLITE_NOTFOUND
 49939  			break
 49940  		}
 49941  	}
 49942  	if rc == SQLITE_OK {
 49943  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 49944  	}
 49945  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 49946  }
 49947  
 49948  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 49949  	var rc int32
 49950  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 49951  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49952  			f func(*libc.TLS, uintptr, int32, uintptr)
 49953  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 49954  	return rc
 49955  }
 49956  
 49957  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 49958  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 49959  	if pSubOpen != 0 {
 49960  		(*struct {
 49961  			f func(*libc.TLS, uintptr) int32
 49962  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 49963  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 49964  			(*struct {
 49965  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 49966  			})(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)
 49967  		}
 49968  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 49969  	}
 49970  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 49971  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})))
 49972  }
 49973  
 49974  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 49975  	var i int32
 49976  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 49977  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 49978  	}
 49979  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 49980  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 49981  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 49982  }
 49983  
 49984  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 49985  	bp := tls.Alloc(20)
 49986  	defer tls.Free(20)
 49987  
 49988  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 49989  	var pMultiplexOpen uintptr
 49990  	var pGroup uintptr = uintptr(0)
 49991  	var pSubOpen uintptr = uintptr(0)
 49992  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 49993  	var nName int32 = 0
 49994  	var sz int32 = 0
 49995  	var zToFree uintptr = uintptr(0)
 49996  
 49997  	_ = pVfs
 49998  	libc.Xmemset(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 49999  
 50000  	pMultiplexOpen = pConn
 50001  
 50002  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50003  		if zName != 0 {
 50004  			nName = multiplexStrlen30(tls, zName)
 50005  		} else {
 50006  			nName = 0
 50007  		}
 50008  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 50009  			uint64(nName) + uint64(1))
 50010  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 50011  		if pGroup == uintptr(0) {
 50012  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 50013  		}
 50014  	}
 50015  
 50016  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50017  		var zUri uintptr
 50018  		if flags&SQLITE_OPEN_URI != 0 {
 50019  			zUri = zName
 50020  		} else {
 50021  			zUri = uintptr(0)
 50022  		}
 50023  
 50024  		libc.Xmemset(tls, pGroup, 0, uint64(sz))
 50025  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 50026  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 50027  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 50028  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 50029  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 50030  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 50031  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 50032  		if zName != 0 {
 50033  			var p uintptr = pGroup + 1*40
 50034  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 50035  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1))
 50036  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 50037  		}
 50038  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50039  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 50040  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 50041  			}
 50042  		}
 50043  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 50044  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 50045  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50046  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 50047  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50048  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 50049  			}
 50050  		}
 50051  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50052  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50053  				f func(*libc.TLS, uintptr, uintptr) int32
 50054  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 50055  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 50056  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 50057  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50058  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 50059  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 50060  						var iChunk int32 = 1
 50061  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50062  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50063  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50064  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 50065  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 50066  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50067  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50068  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 50069  								})(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)
 50070  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50071  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 50072  								}
 50073  							}
 50074  						}
 50075  					}
 50076  				} else {
 50077  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50078  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50079  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 50080  						SQLITE_ACCESS_EXISTS, bp+16)
 50081  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 50082  					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) &&
 50083  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50084  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 50085  					} 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) {
 50086  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50087  					}
 50088  				}
 50089  			}
 50090  		}
 50091  
 50092  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50093  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 50094  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 50095  			} else {
 50096  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 50097  			}
 50098  		} else {
 50099  			multiplexFreeComponents(tls, pGroup)
 50100  			sqlite3.Xsqlite3_free(tls, pGroup)
 50101  		}
 50102  	}
 50103  	sqlite3.Xsqlite3_free(tls, zToFree)
 50104  	return *(*int32)(unsafe.Pointer(bp))
 50105  }
 50106  
 50107  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 50108  	bp := tls.Alloc(4)
 50109  	defer tls.Free(4)
 50110  
 50111  	var rc int32
 50112  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50113  	rc = (*struct {
 50114  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50115  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 50116  	if rc == SQLITE_OK {
 50117  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 50118  		var z uintptr
 50119  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 50120  		if z == uintptr(0) {
 50121  			rc = SQLITE_IOERR | int32(12)<<8
 50122  		} else {
 50123  			var iChunk int32 = 0
 50124  
 50125  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50126  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 50127  				rc = (*struct {
 50128  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50129  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50130  			}
 50131  			for rc == SQLITE_OK && iChunk > 1 {
 50132  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 50133  				rc = (*struct {
 50134  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 50135  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50136  			}
 50137  			if rc == SQLITE_OK {
 50138  				iChunk = 0
 50139  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50140  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 50141  					rc = (*struct {
 50142  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50143  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50144  				}
 50145  				for rc == SQLITE_OK && iChunk > 1 {
 50146  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 50147  					rc = (*struct {
 50148  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 50149  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50150  				}
 50151  			}
 50152  		}
 50153  		sqlite3.Xsqlite3_free(tls, z)
 50154  	}
 50155  	return rc
 50156  }
 50157  
 50158  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50159  	return (*struct {
 50160  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50161  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50162  }
 50163  
 50164  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50165  	return (*struct {
 50166  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50167  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50168  }
 50169  
 50170  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 50171  	return (*struct {
 50172  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50173  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 50174  }
 50175  
 50176  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 50177  	(*struct {
 50178  		f func(*libc.TLS, uintptr, int32, uintptr)
 50179  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50180  }
 50181  
 50182  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 50183  	return (*struct {
 50184  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50185  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50186  }
 50187  
 50188  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 50189  	(*struct {
 50190  		f func(*libc.TLS, uintptr, uintptr)
 50191  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 50192  }
 50193  
 50194  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50195  	return (*struct {
 50196  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50197  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50198  }
 50199  
 50200  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 50201  	return (*struct {
 50202  		f func(*libc.TLS, uintptr, int32) int32
 50203  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 50204  }
 50205  
 50206  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50207  	return (*struct {
 50208  		f func(*libc.TLS, uintptr, uintptr) int32
 50209  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 50210  }
 50211  
 50212  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50213  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 50214  		return (*struct {
 50215  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 50216  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50217  	} else {
 50218  		return 0
 50219  	}
 50220  	return int32(0)
 50221  }
 50222  
 50223  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50224  	return (*struct {
 50225  		f func(*libc.TLS, uintptr, uintptr) int32
 50226  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 50227  }
 50228  
 50229  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 50230  	var p uintptr = pConn
 50231  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50232  	var rc int32 = SQLITE_OK
 50233  	multiplexFreeComponents(tls, pGroup)
 50234  	sqlite3.Xsqlite3_free(tls, pGroup)
 50235  	return rc
 50236  }
 50237  
 50238  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50239  	bp := tls.Alloc(4)
 50240  	defer tls.Free(4)
 50241  
 50242  	var p uintptr = pConn
 50243  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50244  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50245  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50246  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50247  		if pSubOpen == uintptr(0) {
 50248  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50249  		} else {
 50250  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50251  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50252  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50253  		}
 50254  	} else {
 50255  		for iAmt > 0 {
 50256  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50257  			var pSubOpen uintptr
 50258  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50259  			if pSubOpen != 0 {
 50260  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50261  				if extra < 0 {
 50262  					extra = 0
 50263  				}
 50264  				iAmt = iAmt - extra
 50265  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50266  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50267  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 50268  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50269  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 50270  					break
 50271  				}
 50272  				pBuf = pBuf + uintptr(iAmt)
 50273  				iOfst = iOfst + sqlite3_int64(iAmt)
 50274  				iAmt = extra
 50275  			} else {
 50276  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50277  				break
 50278  			}
 50279  		}
 50280  	}
 50281  
 50282  	return *(*int32)(unsafe.Pointer(bp))
 50283  }
 50284  
 50285  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50286  	bp := tls.Alloc(4)
 50287  	defer tls.Free(4)
 50288  
 50289  	var p uintptr = pConn
 50290  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50291  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50292  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50293  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50294  		if pSubOpen == uintptr(0) {
 50295  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 50296  		} else {
 50297  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50298  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50299  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50300  		}
 50301  	} else {
 50302  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 50303  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50304  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50305  			if pSubOpen != 0 {
 50306  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50307  				if extra < 0 {
 50308  					extra = 0
 50309  				}
 50310  				iAmt = iAmt - extra
 50311  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50312  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50313  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 50314  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50315  				pBuf = pBuf + uintptr(iAmt)
 50316  				iOfst = iOfst + sqlite3_int64(iAmt)
 50317  				iAmt = extra
 50318  			}
 50319  		}
 50320  	}
 50321  	return *(*int32)(unsafe.Pointer(bp))
 50322  }
 50323  
 50324  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 50325  	bp := tls.Alloc(4)
 50326  	defer tls.Free(4)
 50327  
 50328  	var p uintptr = pConn
 50329  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50330  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50331  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50332  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50333  		if pSubOpen == uintptr(0) {
 50334  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50335  		} else {
 50336  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50337  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50338  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 50339  		}
 50340  	} else {
 50341  		var i int32
 50342  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50343  		var pSubOpen uintptr
 50344  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50345  
 50346  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 50347  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 50348  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 50349  			} else {
 50350  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 50351  				if pSubOpen != 0 {
 50352  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50353  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50354  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 50355  				}
 50356  			}
 50357  		}
 50358  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50359  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 50360  			if pSubOpen != 0 {
 50361  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50362  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50363  				})(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))
 50364  			}
 50365  		}
 50366  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 50367  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50368  		}
 50369  	}
 50370  	return *(*int32)(unsafe.Pointer(bp))
 50371  }
 50372  
 50373  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 50374  	var p uintptr = pConn
 50375  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50376  	var rc int32 = SQLITE_OK
 50377  	var i int32
 50378  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50379  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 50380  		if pSubOpen != 0 {
 50381  			var rc2 int32 = (*struct {
 50382  				f func(*libc.TLS, uintptr, int32) int32
 50383  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 50384  			if rc2 != SQLITE_OK {
 50385  				rc = rc2
 50386  			}
 50387  		}
 50388  	}
 50389  	return rc
 50390  }
 50391  
 50392  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 50393  	bp := tls.Alloc(4)
 50394  	defer tls.Free(4)
 50395  
 50396  	var p uintptr = pConn
 50397  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50398  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50399  	var i int32
 50400  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50401  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50402  		if pSubOpen == uintptr(0) {
 50403  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 50404  		} else {
 50405  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50406  				f func(*libc.TLS, uintptr, uintptr) int32
 50407  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 50408  		}
 50409  	} else {
 50410  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 50411  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 50412  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 50413  			if sz == int64(0) {
 50414  				break
 50415  			}
 50416  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 50417  		}
 50418  	}
 50419  	return *(*int32)(unsafe.Pointer(bp))
 50420  }
 50421  
 50422  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 50423  	bp := tls.Alloc(4)
 50424  	defer tls.Free(4)
 50425  
 50426  	var p uintptr = pConn
 50427  
 50428  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50429  	if pSubOpen != 0 {
 50430  		return (*struct {
 50431  			f func(*libc.TLS, uintptr, int32) int32
 50432  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 50433  	}
 50434  	return SQLITE_BUSY
 50435  }
 50436  
 50437  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 50438  	bp := tls.Alloc(4)
 50439  	defer tls.Free(4)
 50440  
 50441  	var p uintptr = pConn
 50442  
 50443  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50444  	if pSubOpen != 0 {
 50445  		return (*struct {
 50446  			f func(*libc.TLS, uintptr, int32) int32
 50447  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 50448  	}
 50449  	return SQLITE_IOERR | int32(8)<<8
 50450  }
 50451  
 50452  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 50453  	bp := tls.Alloc(4)
 50454  	defer tls.Free(4)
 50455  
 50456  	var p uintptr = pConn
 50457  
 50458  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50459  	if pSubOpen != 0 {
 50460  		return (*struct {
 50461  			f func(*libc.TLS, uintptr, uintptr) int32
 50462  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 50463  	}
 50464  	return SQLITE_IOERR | int32(14)<<8
 50465  }
 50466  
 50467  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 50468  	bp := tls.Alloc(44)
 50469  	defer tls.Free(44)
 50470  
 50471  	var p uintptr = pConn
 50472  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50473  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 50474  	var pSubOpen uintptr
 50475  
 50476  	if !(gMultiplex.FisInitialized != 0) {
 50477  		return SQLITE_MISUSE
 50478  	}
 50479  	switch op {
 50480  	case MULTIPLEX_CTRL_ENABLE:
 50481  		if pArg != 0 {
 50482  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 50483  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 50484  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50485  		}
 50486  		break
 50487  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 50488  		if pArg != 0 {
 50489  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 50490  			if szChunk < uint32(1) {
 50491  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 50492  			} else {
 50493  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 50494  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 50495  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 50496  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50497  			}
 50498  		}
 50499  		break
 50500  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 50501  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50502  		break
 50503  	case SQLITE_FCNTL_SIZE_HINT:
 50504  		fallthrough
 50505  	case SQLITE_FCNTL_CHUNK_SIZE:
 50506  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50507  		break
 50508  	case SQLITE_FCNTL_PRAGMA:
 50509  		{
 50510  			var aFcntl uintptr = pArg
 50511  
 50512  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34706, 10) == 0 {
 50513  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 50514  				multiplexFileSize(tls, pConn, bp+32)
 50515  
 50516  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34717) == 0 {
 50517  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 50518  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 50519  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+28949) == 0 {
 50520  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 50521  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 50522  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 50523  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 50524  						}
 50525  					}
 50526  
 50527  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 50528  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 50529  							return ts + 4178
 50530  						}
 50531  						return ts + 4542
 50532  					}(), 0)
 50533  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50534  					break
 50535  				}
 50536  
 50537  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34736) == 0 {
 50538  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 50539  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50540  					break
 50541  				}
 50542  
 50543  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34754) == 0 &&
 50544  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50545  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50546  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50547  					break
 50548  				}
 50549  
 50550  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34774) == 0 {
 50551  					var n int32 = 0
 50552  					var ii int32
 50553  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 50554  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 50555  							n++
 50556  						}
 50557  					}
 50558  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 50559  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50560  					break
 50561  				}
 50562  			}
 50563  
 50564  		}
 50565  		fallthrough
 50566  	default:
 50567  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 50568  		if pSubOpen != 0 {
 50569  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 50570  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 50571  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 50572  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 50573  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 50574  			}
 50575  		}
 50576  		break
 50577  	}
 50578  	return *(*int32)(unsafe.Pointer(bp + 40))
 50579  }
 50580  
 50581  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 50582  	bp := tls.Alloc(4)
 50583  	defer tls.Free(4)
 50584  
 50585  	var p uintptr = pConn
 50586  
 50587  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50588  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 50589  		return (*struct {
 50590  			f func(*libc.TLS, uintptr) int32
 50591  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 50592  	}
 50593  	return DEFAULT_SECTOR_SIZE
 50594  }
 50595  
 50596  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 50597  	bp := tls.Alloc(4)
 50598  	defer tls.Free(4)
 50599  
 50600  	var p uintptr = pConn
 50601  
 50602  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50603  	if pSubOpen != 0 {
 50604  		return (*struct {
 50605  			f func(*libc.TLS, uintptr) int32
 50606  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 50607  	}
 50608  	return 0
 50609  }
 50610  
 50611  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 50612  	bp := tls.Alloc(4)
 50613  	defer tls.Free(4)
 50614  
 50615  	var p uintptr = pConn
 50616  
 50617  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50618  	if pSubOpen != 0 {
 50619  		return (*struct {
 50620  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 50621  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 50622  	}
 50623  	return SQLITE_IOERR
 50624  }
 50625  
 50626  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 50627  	bp := tls.Alloc(4)
 50628  	defer tls.Free(4)
 50629  
 50630  	var p uintptr = pConn
 50631  
 50632  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50633  	if pSubOpen != 0 {
 50634  		return (*struct {
 50635  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 50636  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 50637  	}
 50638  	return SQLITE_BUSY
 50639  }
 50640  
 50641  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 50642  	bp := tls.Alloc(4)
 50643  	defer tls.Free(4)
 50644  
 50645  	var p uintptr = pConn
 50646  
 50647  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50648  	if pSubOpen != 0 {
 50649  		(*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)
 50650  	}
 50651  }
 50652  
 50653  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 50654  	bp := tls.Alloc(4)
 50655  	defer tls.Free(4)
 50656  
 50657  	var p uintptr = pConn
 50658  
 50659  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50660  	if pSubOpen != 0 {
 50661  		return (*struct {
 50662  			f func(*libc.TLS, uintptr, int32) int32
 50663  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 50664  	}
 50665  	return SQLITE_OK
 50666  }
 50667  
 50668  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 50669  	var pOrigVfs uintptr
 50670  	if gMultiplex.FisInitialized != 0 {
 50671  		return SQLITE_MISUSE
 50672  	}
 50673  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 50674  	if pOrigVfs == uintptr(0) {
 50675  		return SQLITE_ERROR
 50676  	}
 50677  
 50678  	gMultiplex.FisInitialized = 1
 50679  	gMultiplex.FpOrigVfs = pOrigVfs
 50680  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 50681  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 50682  	gMultiplex.FsThisVfs.FzName = ts + 34807
 50683  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 50684  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 50685  	}{multiplexOpen}))
 50686  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 50687  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50688  	}{multiplexDelete}))
 50689  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 50690  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50691  	}{multiplexAccess}))
 50692  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 50693  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50694  	}{multiplexFullPathname}))
 50695  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 50696  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50697  	}{multiplexDlOpen}))
 50698  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 50699  		f func(*libc.TLS, uintptr, int32, uintptr)
 50700  	}{multiplexDlError}))
 50701  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 50702  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50703  	}{multiplexDlSym}))
 50704  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 50705  		f func(*libc.TLS, uintptr, uintptr)
 50706  	}{multiplexDlClose}))
 50707  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 50708  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50709  	}{multiplexRandomness}))
 50710  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 50711  		f func(*libc.TLS, uintptr, int32) int32
 50712  	}{multiplexSleep}))
 50713  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 50714  		f func(*libc.TLS, uintptr, uintptr) int32
 50715  	}{multiplexCurrentTime}))
 50716  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 50717  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50718  	}{multiplexGetLastError}))
 50719  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 50720  		f func(*libc.TLS, uintptr, uintptr) int32
 50721  	}{multiplexCurrentTimeInt64}))
 50722  
 50723  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 50724  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 50725  		f func(*libc.TLS, uintptr) int32
 50726  	}{multiplexClose}))
 50727  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 50728  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50729  	}{multiplexRead}))
 50730  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 50731  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50732  	}{multiplexWrite}))
 50733  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 50734  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50735  	}{multiplexTruncate}))
 50736  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 50737  		f func(*libc.TLS, uintptr, int32) int32
 50738  	}{multiplexSync}))
 50739  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 50740  		f func(*libc.TLS, uintptr, uintptr) int32
 50741  	}{multiplexFileSize}))
 50742  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 50743  		f func(*libc.TLS, uintptr, int32) int32
 50744  	}{multiplexLock}))
 50745  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 50746  		f func(*libc.TLS, uintptr, int32) int32
 50747  	}{multiplexUnlock}))
 50748  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 50749  		f func(*libc.TLS, uintptr, uintptr) int32
 50750  	}{multiplexCheckReservedLock}))
 50751  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 50752  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50753  	}{multiplexFileControl}))
 50754  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 50755  		f func(*libc.TLS, uintptr) int32
 50756  	}{multiplexSectorSize}))
 50757  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 50758  		f func(*libc.TLS, uintptr) int32
 50759  	}{multiplexDeviceCharacteristics}))
 50760  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 50761  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 50762  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 50763  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 50764  	}{multiplexShmMap}))
 50765  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 50766  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 50767  	}{multiplexShmLock}))
 50768  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 50769  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 50770  		f func(*libc.TLS, uintptr, int32) int32
 50771  	}{multiplexShmUnmap}))
 50772  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 50773  
 50774  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 50775  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 50776  	}{multiplexFuncInit})))
 50777  
 50778  	return SQLITE_OK
 50779  }
 50780  
 50781  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 50782  	var rc int32 = SQLITE_OK
 50783  	if gMultiplex.FisInitialized == 0 {
 50784  		return SQLITE_MISUSE
 50785  	}
 50786  	gMultiplex.FisInitialized = 0
 50787  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 50788  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)))
 50789  	return rc
 50790  }
 50791  
 50792  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50793  	bp := tls.Alloc(4)
 50794  	defer tls.Free(4)
 50795  
 50796  	var zName uintptr
 50797  
 50798  	var rc int32
 50799  
 50800  	_ = clientData
 50801  
 50802  	if objc != 3 {
 50803  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 50804  		return TCL_ERROR
 50805  	}
 50806  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50807  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 50808  		return TCL_ERROR
 50809  	}
 50810  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 50811  		zName = uintptr(0)
 50812  	}
 50813  
 50814  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 50815  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50816  
 50817  	return TCL_OK
 50818  }
 50819  
 50820  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50821  	var rc int32
 50822  
 50823  	_ = clientData
 50824  
 50825  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+34834) != 0 {
 50826  		objc = 3
 50827  	}
 50828  	if objc != 1 && objc != 2 {
 50829  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 50830  		return TCL_ERROR
 50831  	}
 50832  
 50833  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 50834  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50835  
 50836  	return TCL_OK
 50837  }
 50838  
 50839  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50840  	bp := tls.Alloc(176)
 50841  	defer tls.Free(176)
 50842  
 50843  	var rc int32
 50844  
 50845  	var db uintptr
 50846  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 50847  	var pArg uintptr = uintptr(0)
 50848  
 50849  	*(*[4]struct {
 50850  		FzName   uintptr
 50851  		Fop      int32
 50852  		Fargtype int32
 50853  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 50854  		FzName   uintptr
 50855  		Fop      int32
 50856  		Fargtype int32
 50857  	}{
 50858  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 50859  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 50860  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 50861  		{},
 50862  	}
 50863  
 50864  	if objc != 5 {
 50865  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 50866  		return TCL_ERROR
 50867  	}
 50868  
 50869  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 50870  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 50871  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 50872  		return TCL_ERROR
 50873  	} else {
 50874  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 50875  	}
 50876  
 50877  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 50878  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 50879  			FzName   uintptr
 50880  			Fop      int32
 50881  			Fargtype int32
 50882  		}{})), ts+2014, 0, bp+168)
 50883  	if rc != TCL_OK {
 50884  		return rc
 50885  	}
 50886  
 50887  	switch (*struct {
 50888  		FzName   uintptr
 50889  		Fop      int32
 50890  		Fargtype int32
 50891  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 50892  	case 1:
 50893  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 50894  			return TCL_ERROR
 50895  		}
 50896  		pArg = bp + 172
 50897  		break
 50898  	default:
 50899  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 50900  		return TCL_ERROR
 50901  	}
 50902  
 50903  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 50904  		FzName   uintptr
 50905  		Fop      int32
 50906  		Fargtype int32
 50907  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 50908  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50909  	if rc == SQLITE_OK {
 50910  		return TCL_OK
 50911  	}
 50912  	return TCL_ERROR
 50913  }
 50914  
 50915  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 50916  	var i int32
 50917  
 50918  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 50919  		FzName uintptr
 50920  		FxProc uintptr
 50921  	}{})); i++ {
 50922  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 50923  	}
 50924  
 50925  	return TCL_OK
 50926  }
 50927  
 50928  var aCmd7 = [3]struct {
 50929  	FzName uintptr
 50930  	FxProc uintptr
 50931  }{
 50932  	{FzName: ts + 34940, FxProc: 0},
 50933  	{FzName: ts + 34969, FxProc: 0},
 50934  	{FzName: ts + 34996, FxProc: 0},
 50935  }
 50936  
 50937  type sqlite3_mutex = sqlite3_mutex1
 50938  
 50939  var aName = [15]uintptr{
 50940  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 50941  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 50942  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 50943  	ts + 35155, ts + 35167, uintptr(0),
 50944  }
 50945  
 50946  type test_mutex_globals = struct {
 50947  	FisInstalled int32
 50948  	FdisableInit int32
 50949  	FdisableTry  int32
 50950  	FisInit      int32
 50951  	Fm           sqlite3_mutex_methods
 50952  	FaCounter    [14]int32
 50953  	FaStatic     [12]sqlite3_mutex
 50954  }
 50955  
 50956  var g3 = test_mutex_globals{}
 50957  
 50958  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 50959  	return (*struct {
 50960  		f func(*libc.TLS, uintptr) int32
 50961  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 50962  }
 50963  
 50964  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 50965  	return (*struct {
 50966  		f func(*libc.TLS, uintptr) int32
 50967  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 50968  }
 50969  
 50970  func counterMutexInit(tls *libc.TLS) int32 {
 50971  	var rc int32
 50972  	if g3.FdisableInit != 0 {
 50973  		return g3.FdisableInit
 50974  	}
 50975  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 50976  	g3.FisInit = 1
 50977  	return rc
 50978  }
 50979  
 50980  func counterMutexEnd(tls *libc.TLS) int32 {
 50981  	g3.FisInit = 0
 50982  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 50983  }
 50984  
 50985  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 50986  	var pReal uintptr
 50987  	var pRet uintptr = uintptr(0)
 50988  
 50989  	pReal = (*struct {
 50990  		f func(*libc.TLS, int32) uintptr
 50991  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 50992  	if !(pReal != 0) {
 50993  		return uintptr(0)
 50994  	}
 50995  
 50996  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 50997  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 50998  	} else {
 50999  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 51000  
 51001  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 51002  	}
 51003  
 51004  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 51005  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 51006  	return pRet
 51007  }
 51008  
 51009  func counterMutexFree(tls *libc.TLS, p uintptr) {
 51010  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51011  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 51012  		libc.Xfree(tls, p)
 51013  	}
 51014  }
 51015  
 51016  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 51017  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51018  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51019  }
 51020  
 51021  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 51022  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51023  	if g3.FdisableTry != 0 {
 51024  		return SQLITE_BUSY
 51025  	}
 51026  	return (*struct {
 51027  		f func(*libc.TLS, uintptr) int32
 51028  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51029  }
 51030  
 51031  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 51032  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51033  }
 51034  
 51035  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51036  	var rc int32
 51037  
 51038  	if objc != 1 {
 51039  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51040  		return TCL_ERROR
 51041  	}
 51042  
 51043  	rc = sqlite3.Xsqlite3_shutdown(tls)
 51044  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51045  	return TCL_OK
 51046  }
 51047  
 51048  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51049  	var rc int32
 51050  
 51051  	if objc != 1 {
 51052  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51053  		return TCL_ERROR
 51054  	}
 51055  
 51056  	rc = sqlite3.Xsqlite3_initialize(tls)
 51057  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51058  	return TCL_OK
 51059  }
 51060  
 51061  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51062  	bp := tls.Alloc(136)
 51063  	defer tls.Free(136)
 51064  
 51065  	var rc int32 = SQLITE_OK
 51066  
 51067  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 51068  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 51069  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 51070  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 51071  			f func(*libc.TLS, int32) uintptr
 51072  		}{counterMutexAlloc})),
 51073  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 51074  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 51075  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 51076  			f func(*libc.TLS, uintptr) int32
 51077  		}{counterMutexTry})),
 51078  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 51079  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 51080  			f func(*libc.TLS, uintptr) int32
 51081  		}{counterMutexHeld})),
 51082  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 51083  			f func(*libc.TLS, uintptr) int32
 51084  		}{counterMutexNotheld})),
 51085  	}
 51086  
 51087  	if objc != 2 {
 51088  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 51089  		return TCL_ERROR
 51090  	}
 51091  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 51092  		return TCL_ERROR
 51093  	}
 51094  
 51095  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 51096  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 51097  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 51098  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51099  				return ts + 35199
 51100  			}
 51101  			return ts + 35217
 51102  		}(), 0))
 51103  		return TCL_ERROR
 51104  	}
 51105  
 51106  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51107  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 51108  		if rc == SQLITE_OK {
 51109  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 51110  		}
 51111  		g3.FdisableTry = 0
 51112  	} else {
 51113  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 51114  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})))
 51115  	}
 51116  
 51117  	if rc == SQLITE_OK {
 51118  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 51119  	}
 51120  
 51121  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51122  	return TCL_OK
 51123  }
 51124  
 51125  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51126  	var pRet uintptr
 51127  	var ii int32
 51128  
 51129  	if objc != 1 {
 51130  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51131  		return TCL_ERROR
 51132  	}
 51133  
 51134  	pRet = tcl.XTcl_NewObj(tls)
 51135  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 51136  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51137  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 51138  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 51139  	}
 51140  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 51141  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 51142  		var _objPtr uintptr = pRet
 51143  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 51144  			tcl.XTclFreeObj(tls, _objPtr)
 51145  		}
 51146  	}
 51147  
 51148  	return TCL_OK
 51149  }
 51150  
 51151  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51152  	var ii int32
 51153  
 51154  	if objc != 1 {
 51155  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51156  		return TCL_ERROR
 51157  	}
 51158  
 51159  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51160  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 51161  	}
 51162  	return TCL_OK
 51163  }
 51164  
 51165  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51166  	bp := tls.Alloc(124)
 51167  	defer tls.Free(124)
 51168  
 51169  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 51170  
 51171  	sqlite3.Xsqlite3_mutex_free(tls, p)
 51172  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+9889, libc.VaList(bp, p))
 51173  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 51174  	return TCL_OK
 51175  }
 51176  
 51177  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51178  	bp := tls.Alloc(68)
 51179  	defer tls.Free(68)
 51180  
 51181  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 51182  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 51183  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 51184  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 51185  		{},
 51186  	}
 51187  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 51188  
 51189  	var rc int32
 51190  
 51191  	if objc != 2 {
 51192  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51193  		return TCL_ERROR
 51194  	}
 51195  
 51196  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 51197  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 51198  			return TCL_ERROR
 51199  		}
 51200  	} else {
 51201  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 51202  	}
 51203  
 51204  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 51205  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51206  	return TCL_OK
 51207  }
 51208  
 51209  type ConfigOption = struct {
 51210  	FzName       uintptr
 51211  	FiValue      int32
 51212  	F__ccgo_pad1 [4]byte
 51213  }
 51214  
 51215  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51216  	bp := tls.Alloc(64)
 51217  	defer tls.Free(64)
 51218  
 51219  	var db uintptr
 51220  
 51221  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 51222  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 51223  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 51224  	} else {
 51225  		db = sqlite3TestTextToPtr(tls, zCmd)
 51226  	}
 51227  
 51228  	return db
 51229  }
 51230  
 51231  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51232  	bp := tls.Alloc(4)
 51233  	defer tls.Free(4)
 51234  
 51235  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 51236  		return uintptr(0)
 51237  	}
 51238  
 51239  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 51240  }
 51241  
 51242  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51243  	var pMutex uintptr
 51244  	if objc != 2 {
 51245  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51246  		return TCL_ERROR
 51247  	}
 51248  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51249  	if !(pMutex != 0) {
 51250  		return TCL_ERROR
 51251  	}
 51252  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 51253  	return TCL_OK
 51254  }
 51255  
 51256  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51257  	var pMutex uintptr
 51258  	if objc != 2 {
 51259  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51260  		return TCL_ERROR
 51261  	}
 51262  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51263  	if !(pMutex != 0) {
 51264  		return TCL_ERROR
 51265  	}
 51266  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 51267  	return TCL_OK
 51268  }
 51269  
 51270  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51271  	var db uintptr
 51272  	if objc != 2 {
 51273  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51274  		return TCL_ERROR
 51275  	}
 51276  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51277  	if !(db != 0) {
 51278  		return TCL_ERROR
 51279  	}
 51280  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51281  	return TCL_OK
 51282  }
 51283  
 51284  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51285  	var db uintptr
 51286  	if objc != 2 {
 51287  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51288  		return TCL_ERROR
 51289  	}
 51290  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51291  	if !(db != 0) {
 51292  		return TCL_ERROR
 51293  	}
 51294  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51295  	return TCL_OK
 51296  }
 51297  
 51298  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 51299  	var i int32
 51300  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 51301  		FzName uintptr
 51302  		FxProc uintptr
 51303  	}{})); i++ {
 51304  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 51305  	}
 51306  
 51307  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 51308  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 51309  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 51310  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 51311  	return SQLITE_OK
 51312  }
 51313  
 51314  var aCmd8 = [11]struct {
 51315  	FzName uintptr
 51316  	FxProc uintptr
 51317  }{
 51318  	{FzName: ts + 35315, FxProc: 0},
 51319  	{FzName: ts + 35332, FxProc: 0},
 51320  	{FzName: ts + 35351, FxProc: 0},
 51321  	{FzName: ts + 35366, FxProc: 0},
 51322  	{FzName: ts + 35385, FxProc: 0},
 51323  	{FzName: ts + 35404, FxProc: 0},
 51324  	{FzName: ts + 35419, FxProc: 0},
 51325  	{FzName: ts + 35434, FxProc: 0},
 51326  	{FzName: ts + 35454, FxProc: 0},
 51327  	{FzName: ts + 35477, FxProc: 0},
 51328  	{FzName: ts + 35497, FxProc: 0},
 51329  }
 51330  
 51331  type fs_real_file1 = struct {
 51332  	FpFile     uintptr
 51333  	FzName     uintptr
 51334  	FnDatabase int32
 51335  	FnJournal  int32
 51336  	FnBlob     int32
 51337  	FnRef      int32
 51338  	FpNext     uintptr
 51339  	FppThis    uintptr
 51340  }
 51341  
 51342  type fs_real_file = fs_real_file1
 51343  
 51344  type fs_file1 = struct {
 51345  	Fbase        sqlite3_file
 51346  	FeType       int32
 51347  	F__ccgo_pad1 [4]byte
 51348  	FpReal       uintptr
 51349  }
 51350  
 51351  type fs_file = fs_file1
 51352  
 51353  type tmp_file1 = struct {
 51354  	Fbase   sqlite3_file
 51355  	FnSize  int32
 51356  	FnAlloc int32
 51357  	FzAlloc uintptr
 51358  }
 51359  
 51360  type tmp_file = tmp_file1
 51361  
 51362  type fs_vfs_t1 = struct {
 51363  	Fbase      sqlite3_vfs
 51364  	FpFileList uintptr
 51365  	FpParent   uintptr
 51366  }
 51367  
 51368  type fs_vfs_t = fs_vfs_t1
 51369  
 51370  var fs_vfs = fs_vfs_t{
 51371  	Fbase: sqlite3_vfs{
 51372  		FiVersion:      1,
 51373  		FzName:         ts + 31055,
 51374  		FxOpen:         0,
 51375  		FxDelete:       0,
 51376  		FxAccess:       0,
 51377  		FxFullPathname: 0,
 51378  		FxDlOpen:       0,
 51379  		FxDlError:      0,
 51380  		FxDlSym:        0,
 51381  		FxDlClose:      0,
 51382  		FxRandomness:   0,
 51383  		FxSleep:        0,
 51384  		FxCurrentTime:  0,
 51385  	},
 51386  }
 51387  
 51388  var fs_io_methods = sqlite3_io_methods{
 51389  	FiVersion:               1,
 51390  	FxClose:                 0,
 51391  	FxRead:                  0,
 51392  	FxWrite:                 0,
 51393  	FxTruncate:              0,
 51394  	FxSync:                  0,
 51395  	FxFileSize:              0,
 51396  	FxLock:                  0,
 51397  	FxUnlock:                0,
 51398  	FxCheckReservedLock:     0,
 51399  	FxFileControl:           0,
 51400  	FxSectorSize:            0,
 51401  	FxDeviceCharacteristics: 0,
 51402  }
 51403  
 51404  var tmp_io_methods = sqlite3_io_methods{
 51405  	FiVersion:               1,
 51406  	FxClose:                 0,
 51407  	FxRead:                  0,
 51408  	FxWrite:                 0,
 51409  	FxTruncate:              0,
 51410  	FxSync:                  0,
 51411  	FxFileSize:              0,
 51412  	FxLock:                  0,
 51413  	FxUnlock:                0,
 51414  	FxCheckReservedLock:     0,
 51415  	FxFileControl:           0,
 51416  	FxSectorSize:            0,
 51417  	FxDeviceCharacteristics: 0,
 51418  }
 51419  
 51420  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 51421  	var pTmp uintptr = pFile
 51422  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 51423  	return SQLITE_OK
 51424  }
 51425  
 51426  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51427  	var pTmp uintptr = pFile
 51428  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 51429  		return SQLITE_IOERR | int32(2)<<8
 51430  	}
 51431  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt))
 51432  	return SQLITE_OK
 51433  }
 51434  
 51435  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51436  	var pTmp uintptr = pFile
 51437  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 51438  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 51439  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 51440  		if !(zNew != 0) {
 51441  			return SQLITE_NOMEM
 51442  		}
 51443  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 51444  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 51445  	}
 51446  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt))
 51447  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 51448  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 51449  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 51450  		}
 51451  		return int32(iOfst + sqlite_int64(iAmt))
 51452  	}()
 51453  	return SQLITE_OK
 51454  }
 51455  
 51456  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 51457  	var pTmp uintptr = pFile
 51458  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 51459  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 51460  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 51461  		}
 51462  		return int32(size)
 51463  	}()
 51464  	return SQLITE_OK
 51465  }
 51466  
 51467  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 51468  	return SQLITE_OK
 51469  }
 51470  
 51471  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 51472  	var pTmp uintptr = pFile
 51473  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 51474  	return SQLITE_OK
 51475  }
 51476  
 51477  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51478  	return SQLITE_OK
 51479  }
 51480  
 51481  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51482  	return SQLITE_OK
 51483  }
 51484  
 51485  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 51486  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 51487  	return SQLITE_OK
 51488  }
 51489  
 51490  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 51491  	return SQLITE_OK
 51492  }
 51493  
 51494  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 51495  	return 0
 51496  }
 51497  
 51498  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 51499  	return 0
 51500  }
 51501  
 51502  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 51503  	var rc int32 = SQLITE_OK
 51504  	var p uintptr = pFile
 51505  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51506  
 51507  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 51508  
 51509  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 51510  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 51511  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 51512  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 51513  		}
 51514  		rc = (*struct {
 51515  			f func(*libc.TLS, uintptr) int32
 51516  		})(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)
 51517  		sqlite3.Xsqlite3_free(tls, pReal)
 51518  	}
 51519  
 51520  	return rc
 51521  }
 51522  
 51523  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51524  	var rc int32 = SQLITE_OK
 51525  	var p uintptr = pFile
 51526  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51527  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51528  
 51529  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 51530  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 51531  		rc = SQLITE_IOERR | int32(2)<<8
 51532  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51533  		rc = (*struct {
 51534  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51535  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 51536  	} else {
 51537  		var iRem int32 = iAmt
 51538  		var iBuf int32 = 0
 51539  		var ii int32 = int32(iOfst)
 51540  		for iRem > 0 && rc == SQLITE_OK {
 51541  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 51542  			var iRealAmt int32 = func() int32 {
 51543  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 51544  					return iRem
 51545  				}
 51546  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 51547  			}()
 51548  
 51549  			rc = (*struct {
 51550  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51551  			})(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))
 51552  			ii = ii + iRealAmt
 51553  			iBuf = iBuf + iRealAmt
 51554  			iRem = iRem - iRealAmt
 51555  		}
 51556  	}
 51557  
 51558  	return rc
 51559  }
 51560  
 51561  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51562  	var rc int32 = SQLITE_OK
 51563  	var p uintptr = pFile
 51564  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51565  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51566  
 51567  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51568  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 51569  			rc = SQLITE_FULL
 51570  		} else {
 51571  			rc = (*struct {
 51572  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51573  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 51574  			if rc == SQLITE_OK {
 51575  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 51576  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 51577  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 51578  					}
 51579  					return int32(sqlite_int64(iAmt) + iOfst)
 51580  				}()
 51581  			}
 51582  		}
 51583  	} else {
 51584  		var iRem int32 = iAmt
 51585  		var iBuf int32 = 0
 51586  		var ii int32 = int32(iOfst)
 51587  		for iRem > 0 && rc == SQLITE_OK {
 51588  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 51589  			var iRealAmt int32 = func() int32 {
 51590  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 51591  					return iRem
 51592  				}
 51593  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 51594  			}()
 51595  
 51596  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 51597  				rc = SQLITE_FULL
 51598  			} else {
 51599  				rc = (*struct {
 51600  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51601  				})(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))
 51602  				ii = ii + iRealAmt
 51603  				iBuf = iBuf + iRealAmt
 51604  				iRem = iRem - iRealAmt
 51605  			}
 51606  		}
 51607  		if rc == SQLITE_OK {
 51608  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 51609  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 51610  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 51611  				}
 51612  				return int32(sqlite_int64(iAmt) + iOfst)
 51613  			}()
 51614  		}
 51615  	}
 51616  
 51617  	return rc
 51618  }
 51619  
 51620  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 51621  	var p uintptr = pFile
 51622  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51623  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51624  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 51625  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 51626  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 51627  			}
 51628  			return int32(size)
 51629  		}()
 51630  	} else {
 51631  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 51632  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 51633  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 51634  			}
 51635  			return int32(size)
 51636  		}()
 51637  	}
 51638  	return SQLITE_OK
 51639  }
 51640  
 51641  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 51642  	bp := tls.Alloc(4)
 51643  	defer tls.Free(4)
 51644  
 51645  	var p uintptr = pFile
 51646  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51647  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51648  	var rc int32 = SQLITE_OK
 51649  
 51650  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51651  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 51652  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 51653  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 51654  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 51655  		rc = (*struct {
 51656  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51657  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 51658  	}
 51659  	if rc == SQLITE_OK {
 51660  		rc = (*struct {
 51661  			f func(*libc.TLS, uintptr, int32) int32
 51662  		})(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))
 51663  	}
 51664  
 51665  	return rc
 51666  }
 51667  
 51668  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 51669  	var p uintptr = pFile
 51670  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51671  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51672  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 51673  	} else {
 51674  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 51675  	}
 51676  	return SQLITE_OK
 51677  }
 51678  
 51679  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51680  	return SQLITE_OK
 51681  }
 51682  
 51683  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51684  	return SQLITE_OK
 51685  }
 51686  
 51687  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 51688  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 51689  	return SQLITE_OK
 51690  }
 51691  
 51692  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 51693  	if op == SQLITE_FCNTL_PRAGMA {
 51694  		return SQLITE_NOTFOUND
 51695  	}
 51696  	return SQLITE_OK
 51697  }
 51698  
 51699  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 51700  	return BLOCKSIZE
 51701  }
 51702  
 51703  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 51704  	return 0
 51705  }
 51706  
 51707  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 51708  	bp := tls.Alloc(12)
 51709  	defer tls.Free(12)
 51710  
 51711  	var pFsVfs uintptr
 51712  	var p uintptr
 51713  	var pReal uintptr
 51714  	var eType int32
 51715  	var nName int32
 51716  	var rc int32
 51717  	var p2 uintptr
 51718  
 51719  	var real_flags int32
 51720  
 51721  	var pRealFile uintptr
 51722  	var pParent uintptr
 51723  	pFsVfs = pVfs
 51724  	p = pFile
 51725  	pReal = uintptr(0)
 51726  	rc = SQLITE_OK
 51727  
 51728  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 51729  		goto __1
 51730  	}
 51731  	p2 = pFile
 51732  	libc.Xmemset(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})))
 51733  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 51734  	return SQLITE_OK
 51735  __1:
 51736  	;
 51737  	eType = func() int32 {
 51738  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 51739  			return DATABASE_FILE
 51740  		}
 51741  		return JOURNAL_FILE
 51742  	}()
 51743  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 51744  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 51745  
 51746  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 51747  		if eType == JOURNAL_FILE {
 51748  			return 8
 51749  		}
 51750  		return 0
 51751  	}()
 51752  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51753  __2:
 51754  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 51755  		goto __4
 51756  	}
 51757  	goto __3
 51758  __3:
 51759  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 51760  	goto __2
 51761  	goto __4
 51762  __4:
 51763  	;
 51764  	if !!(pReal != 0) {
 51765  		goto __5
 51766  	}
 51767  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 51768  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 51769  
 51770  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 51771  	if !!(pReal != 0) {
 51772  		goto __6
 51773  	}
 51774  	rc = SQLITE_NOMEM
 51775  	goto open_out
 51776  __6:
 51777  	;
 51778  	libc.Xmemset(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 51779  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 51780  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 51781  
 51782  	rc = (*struct {
 51783  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51784  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 51785  	if !(rc != SQLITE_OK) {
 51786  		goto __7
 51787  	}
 51788  	goto open_out
 51789  __7:
 51790  	;
 51791  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51792  
 51793  	rc = (*struct {
 51794  		f func(*libc.TLS, uintptr, uintptr) int32
 51795  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 51796  	if !(rc != SQLITE_OK) {
 51797  		goto __8
 51798  	}
 51799  	goto open_out
 51800  __8:
 51801  	;
 51802  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 51803  		goto __9
 51804  	}
 51805  	rc = (*struct {
 51806  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51807  	})(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))
 51808  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 51809  	goto __10
 51810  __9:
 51811  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 51812  	rc = (*struct {
 51813  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51814  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 51815  	(*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)))
 51816  	if !(rc == SQLITE_OK) {
 51817  		goto __11
 51818  	}
 51819  	rc = (*struct {
 51820  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51821  	})(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))
 51822  	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) {
 51823  		goto __12
 51824  	}
 51825  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 51826  __12:
 51827  	;
 51828  __11:
 51829  	;
 51830  __10:
 51831  	;
 51832  	if !(rc == SQLITE_OK) {
 51833  		goto __13
 51834  	}
 51835  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51836  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 51837  		goto __14
 51838  	}
 51839  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 51840  __14:
 51841  	;
 51842  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 51843  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 51844  __13:
 51845  	;
 51846  __5:
 51847  	;
 51848  open_out:
 51849  	if !(pReal != 0) {
 51850  		goto __15
 51851  	}
 51852  	if !(rc == SQLITE_OK) {
 51853  		goto __16
 51854  	}
 51855  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 51856  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 51857  	goto __17
 51858  __16:
 51859  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 51860  		goto __18
 51861  	}
 51862  	(*struct {
 51863  		f func(*libc.TLS, uintptr) int32
 51864  	})(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)
 51865  __18:
 51866  	;
 51867  	sqlite3.Xsqlite3_free(tls, pReal)
 51868  __17:
 51869  	;
 51870  __15:
 51871  	;
 51872  	return rc
 51873  }
 51874  
 51875  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 51876  	var rc int32 = SQLITE_OK
 51877  	var pFsVfs uintptr = pVfs
 51878  	var pReal uintptr
 51879  	var pF uintptr
 51880  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 51881  
 51882  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51883  	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 {
 51884  	}
 51885  	if pReal != 0 {
 51886  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51887  		rc = (*struct {
 51888  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51889  		})(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))
 51890  		if rc == SQLITE_OK {
 51891  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 51892  		}
 51893  	}
 51894  	return rc
 51895  }
 51896  
 51897  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 51898  	var pFsVfs uintptr = pVfs
 51899  	var pReal uintptr
 51900  	var isJournal int32 = 0
 51901  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 51902  
 51903  	if flags != SQLITE_ACCESS_EXISTS {
 51904  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51905  		return (*struct {
 51906  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51907  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 51908  	}
 51909  
 51910  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 51911  		nName = nName - 8
 51912  		isJournal = 1
 51913  	}
 51914  
 51915  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51916  	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 {
 51917  	}
 51918  
 51919  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 51920  	return SQLITE_OK
 51921  }
 51922  
 51923  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 51924  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51925  	return (*struct {
 51926  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51927  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 51928  }
 51929  
 51930  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 51931  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51932  	return (*struct {
 51933  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51934  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 51935  }
 51936  
 51937  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 51938  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51939  	(*struct {
 51940  		f func(*libc.TLS, uintptr, int32, uintptr)
 51941  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 51942  }
 51943  
 51944  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 51945  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51946  	return (*struct {
 51947  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51948  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 51949  }
 51950  
 51951  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 51952  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51953  	(*struct {
 51954  		f func(*libc.TLS, uintptr, uintptr)
 51955  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 51956  }
 51957  
 51958  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 51959  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51960  	return (*struct {
 51961  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51962  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 51963  }
 51964  
 51965  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 51966  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51967  	return (*struct {
 51968  		f func(*libc.TLS, uintptr, int32) int32
 51969  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 51970  }
 51971  
 51972  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 51973  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51974  	return (*struct {
 51975  		f func(*libc.TLS, uintptr, uintptr) int32
 51976  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 51977  }
 51978  
 51979  func fs_register(tls *libc.TLS) int32 {
 51980  	if fs_vfs.FpParent != 0 {
 51981  		return SQLITE_OK
 51982  	}
 51983  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 51984  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 51985  	fs_vfs.Fbase.FszOsFile = func() int32 {
 51986  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 51987  			return int32(unsafe.Sizeof(tmp_file{}))
 51988  		}
 51989  		return int32(unsafe.Sizeof(fs_file{}))
 51990  	}()
 51991  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 51992  }
 51993  
 51994  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 51995  	return fs_register(tls)
 51996  }
 51997  
 51998  type VfslogVfs1 = struct {
 51999  	Fbase        sqlite3_vfs
 52000  	FpVfs        uintptr
 52001  	FiNextFileId int32
 52002  	F__ccgo_pad1 [4]byte
 52003  	FpLog        uintptr
 52004  	FiOffset     sqlite3_int64
 52005  	FnBuf        int32
 52006  	FaBuf        [8192]int8
 52007  	F__ccgo_pad2 [4]byte
 52008  }
 52009  
 52010  type VfslogVfs = VfslogVfs1
 52011  type VfslogFile1 = struct {
 52012  	Fbase        sqlite3_file
 52013  	FpReal       uintptr
 52014  	FpVfslog     uintptr
 52015  	FiFileId     int32
 52016  	F__ccgo_pad1 [4]byte
 52017  }
 52018  
 52019  type VfslogFile = VfslogFile1
 52020  
 52021  var vfslog_vfs = sqlite3_vfs{
 52022  	FiVersion:          1,
 52023  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 52024  	FmxPathname:        INST_MAX_PATHNAME,
 52025  	FxOpen:             0,
 52026  	FxDelete:           0,
 52027  	FxAccess:           0,
 52028  	FxFullPathname:     0,
 52029  	FxDlOpen:           0,
 52030  	FxDlError:          0,
 52031  	FxDlSym:            0,
 52032  	FxDlClose:          0,
 52033  	FxRandomness:       0,
 52034  	FxSleep:            0,
 52035  	FxCurrentTime:      0,
 52036  	FxGetLastError:     0,
 52037  	FxCurrentTimeInt64: 0,
 52038  }
 52039  
 52040  var vfslog_io_methods = sqlite3_io_methods{
 52041  	FiVersion:               2,
 52042  	FxClose:                 0,
 52043  	FxRead:                  0,
 52044  	FxWrite:                 0,
 52045  	FxTruncate:              0,
 52046  	FxSync:                  0,
 52047  	FxFileSize:              0,
 52048  	FxLock:                  0,
 52049  	FxUnlock:                0,
 52050  	FxCheckReservedLock:     0,
 52051  	FxFileControl:           0,
 52052  	FxSectorSize:            0,
 52053  	FxDeviceCharacteristics: 0,
 52054  	FxShmMap:                0,
 52055  	FxShmLock:               0,
 52056  	FxShmBarrier:            0,
 52057  	FxShmUnmap:              0,
 52058  }
 52059  
 52060  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 52061  	bp := tls.Alloc(16)
 52062  	defer tls.Free(16)
 52063  
 52064  	libc.Xgettimeofday(tls, bp, uintptr(0))
 52065  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 52066  }
 52067  
 52068  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 52069  	var t sqlite3_uint64
 52070  	var rc int32 = SQLITE_OK
 52071  	var p uintptr = pFile
 52072  
 52073  	t = vfslog_time(tls)
 52074  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 52075  		rc = (*struct {
 52076  			f func(*libc.TLS, uintptr) int32
 52077  		})(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)
 52078  	}
 52079  	t = vfslog_time(tls) - t
 52080  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52081  	return rc
 52082  }
 52083  
 52084  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52085  	var rc int32
 52086  	var t sqlite3_uint64
 52087  	var p uintptr = pFile
 52088  	t = vfslog_time(tls)
 52089  	rc = (*struct {
 52090  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52091  	})(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)
 52092  	t = vfslog_time(tls) - t
 52093  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52094  	return rc
 52095  }
 52096  
 52097  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52098  	var rc int32
 52099  	var t sqlite3_uint64
 52100  	var p uintptr = pFile
 52101  	t = vfslog_time(tls)
 52102  	rc = (*struct {
 52103  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52104  	})(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)
 52105  	t = vfslog_time(tls) - t
 52106  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52107  	return rc
 52108  }
 52109  
 52110  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52111  	var rc int32
 52112  	var t sqlite3_uint64
 52113  	var p uintptr = pFile
 52114  	t = vfslog_time(tls)
 52115  	rc = (*struct {
 52116  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 52117  	})(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)
 52118  	t = vfslog_time(tls) - t
 52119  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 52120  	return rc
 52121  }
 52122  
 52123  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52124  	var rc int32
 52125  	var t sqlite3_uint64
 52126  	var p uintptr = pFile
 52127  	t = vfslog_time(tls)
 52128  	rc = (*struct {
 52129  		f func(*libc.TLS, uintptr, int32) int32
 52130  	})(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)
 52131  	t = vfslog_time(tls) - t
 52132  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 52133  	return rc
 52134  }
 52135  
 52136  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52137  	var rc int32
 52138  	var t sqlite3_uint64
 52139  	var p uintptr = pFile
 52140  	t = vfslog_time(tls)
 52141  	rc = (*struct {
 52142  		f func(*libc.TLS, uintptr, uintptr) int32
 52143  	})(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)
 52144  	t = vfslog_time(tls) - t
 52145  	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))))
 52146  	return rc
 52147  }
 52148  
 52149  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52150  	var rc int32
 52151  	var t sqlite3_uint64
 52152  	var p uintptr = pFile
 52153  	t = vfslog_time(tls)
 52154  	rc = (*struct {
 52155  		f func(*libc.TLS, uintptr, int32) int32
 52156  	})(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)
 52157  	t = vfslog_time(tls) - t
 52158  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52159  	return rc
 52160  }
 52161  
 52162  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52163  	var rc int32
 52164  	var t sqlite3_uint64
 52165  	var p uintptr = pFile
 52166  	t = vfslog_time(tls)
 52167  	rc = (*struct {
 52168  		f func(*libc.TLS, uintptr, int32) int32
 52169  	})(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)
 52170  	t = vfslog_time(tls) - t
 52171  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52172  	return rc
 52173  }
 52174  
 52175  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52176  	var rc int32
 52177  	var t sqlite3_uint64
 52178  	var p uintptr = pFile
 52179  	t = vfslog_time(tls)
 52180  	rc = (*struct {
 52181  		f func(*libc.TLS, uintptr, uintptr) int32
 52182  	})(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)
 52183  	t = vfslog_time(tls) - t
 52184  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 52185  	return rc
 52186  }
 52187  
 52188  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52189  	bp := tls.Alloc(8)
 52190  	defer tls.Free(8)
 52191  
 52192  	var p uintptr = pFile
 52193  	var rc int32 = (*struct {
 52194  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52195  	})(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)
 52196  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 52197  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 52198  	}
 52199  	return rc
 52200  }
 52201  
 52202  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52203  	var rc int32
 52204  	var t sqlite3_uint64
 52205  	var p uintptr = pFile
 52206  	t = vfslog_time(tls)
 52207  	rc = (*struct {
 52208  		f func(*libc.TLS, uintptr) int32
 52209  	})(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)
 52210  	t = vfslog_time(tls) - t
 52211  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52212  	return rc
 52213  }
 52214  
 52215  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52216  	var rc int32
 52217  	var t sqlite3_uint64
 52218  	var p uintptr = pFile
 52219  	t = vfslog_time(tls)
 52220  	rc = (*struct {
 52221  		f func(*libc.TLS, uintptr) int32
 52222  	})(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)
 52223  	t = vfslog_time(tls) - t
 52224  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52225  	return rc
 52226  }
 52227  
 52228  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 52229  	var rc int32
 52230  	var t sqlite3_uint64
 52231  	var p uintptr = pFile
 52232  	t = vfslog_time(tls)
 52233  	rc = (*struct {
 52234  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 52235  	})(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)
 52236  	t = vfslog_time(tls) - t
 52237  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52238  	return rc
 52239  }
 52240  
 52241  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 52242  	var rc int32
 52243  	var t sqlite3_uint64
 52244  	var p uintptr = pFile
 52245  	t = vfslog_time(tls)
 52246  	rc = (*struct {
 52247  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 52248  	})(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)
 52249  	t = vfslog_time(tls) - t
 52250  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52251  	return rc
 52252  }
 52253  
 52254  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 52255  	var t sqlite3_uint64
 52256  	var p uintptr = pFile
 52257  	t = vfslog_time(tls)
 52258  	(*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)
 52259  	t = vfslog_time(tls) - t
 52260  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 52261  }
 52262  
 52263  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 52264  	var rc int32
 52265  	var t sqlite3_uint64
 52266  	var p uintptr = pFile
 52267  	t = vfslog_time(tls)
 52268  	rc = (*struct {
 52269  		f func(*libc.TLS, uintptr, int32) int32
 52270  	})(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)
 52271  	t = vfslog_time(tls) - t
 52272  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52273  	return rc
 52274  }
 52275  
 52276  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52277  	var rc int32
 52278  	var t sqlite3_uint64
 52279  	var p uintptr = pFile
 52280  	var pLog uintptr = pVfs
 52281  
 52282  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 52283  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 52284  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 52285  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 52286  
 52287  	t = vfslog_time(tls)
 52288  	rc = (*struct {
 52289  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52290  	})(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)
 52291  	t = vfslog_time(tls) - t
 52292  
 52293  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52294  	vfslog_string(tls, pVfs, zName)
 52295  	return rc
 52296  }
 52297  
 52298  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52299  	var rc int32
 52300  	var t sqlite3_uint64
 52301  	t = vfslog_time(tls)
 52302  	rc = (*struct {
 52303  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 52304  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 52305  	t = vfslog_time(tls) - t
 52306  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 52307  	vfslog_string(tls, pVfs, zPath)
 52308  	return rc
 52309  }
 52310  
 52311  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52312  	var rc int32
 52313  	var t sqlite3_uint64
 52314  	t = vfslog_time(tls)
 52315  	rc = (*struct {
 52316  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52317  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 52318  	t = vfslog_time(tls) - t
 52319  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 52320  	vfslog_string(tls, pVfs, zPath)
 52321  	return rc
 52322  }
 52323  
 52324  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52325  	return (*struct {
 52326  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52327  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 52328  }
 52329  
 52330  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52331  	return (*struct {
 52332  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52333  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 52334  }
 52335  
 52336  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52337  	(*struct {
 52338  		f func(*libc.TLS, uintptr, int32, uintptr)
 52339  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 52340  }
 52341  
 52342  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 52343  	return (*struct {
 52344  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52345  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 52346  }
 52347  
 52348  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52349  	(*struct {
 52350  		f func(*libc.TLS, uintptr, uintptr)
 52351  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 52352  }
 52353  
 52354  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52355  	return (*struct {
 52356  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52357  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 52358  }
 52359  
 52360  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52361  	return (*struct {
 52362  		f func(*libc.TLS, uintptr, int32) int32
 52363  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 52364  }
 52365  
 52366  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52367  	return (*struct {
 52368  		f func(*libc.TLS, uintptr, uintptr) int32
 52369  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 52370  }
 52371  
 52372  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 52373  	return (*struct {
 52374  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52375  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 52376  }
 52377  
 52378  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 52379  	return (*struct {
 52380  		f func(*libc.TLS, uintptr, uintptr) int32
 52381  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 52382  }
 52383  
 52384  func vfslog_flush(tls *libc.TLS, p uintptr) {
 52385  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 52386  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 52387  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 52388  
 52389  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 52390  	sqlite3.Xsqlite3_io_error_persist = 0
 52391  	sqlite3.Xsqlite3_diskfull_pending = 0
 52392  
 52393  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 52394  		(*struct {
 52395  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52396  		})(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)
 52397  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52398  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 52399  	}
 52400  
 52401  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 52402  	sqlite3.Xsqlite3_io_error_persist = persist
 52403  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 52404  }
 52405  
 52406  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 52407  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 52408  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 52409  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 52410  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 52411  }
 52412  
 52413  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 52414  	var p uintptr = pVfs
 52415  	var zRec uintptr
 52416  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 52417  		vfslog_flush(tls, p)
 52418  	}
 52419  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52420  	put32bits(tls, zRec, uint32(eEvent))
 52421  	put32bits(tls, zRec+4, uint32(iFileid))
 52422  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 52423  	put32bits(tls, zRec+12, uint32(return_code))
 52424  	put32bits(tls, zRec+16, uint32(size))
 52425  	put32bits(tls, zRec+20, uint32(offset))
 52426  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 52427  }
 52428  
 52429  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 52430  	var p uintptr = pVfs
 52431  	var zRec uintptr
 52432  	var nStr int32
 52433  	if zStr != 0 {
 52434  		nStr = int32(libc.Xstrlen(tls, zStr))
 52435  	} else {
 52436  		nStr = 0
 52437  	}
 52438  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 52439  		vfslog_flush(tls, p)
 52440  	}
 52441  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52442  	put32bits(tls, zRec, uint32(nStr))
 52443  	if zStr != 0 {
 52444  		libc.Xmemcpy(tls, zRec+4, zStr, uint64(nStr))
 52445  	}
 52446  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 52447  }
 52448  
 52449  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 52450  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 52451  		vfslog_flush(tls, p)
 52452  		(*struct {
 52453  			f func(*libc.TLS, uintptr) int32
 52454  		})(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)
 52455  	}
 52456  	sqlite3.Xsqlite3_free(tls, p)
 52457  }
 52458  
 52459  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 52460  	var pVfs uintptr
 52461  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 52462  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 52463  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52464  	}{vfslogOpen})) {
 52465  		return SQLITE_ERROR
 52466  	}
 52467  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 52468  	vfslog_finalize(tls, pVfs)
 52469  	return SQLITE_OK
 52470  }
 52471  
 52472  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 52473  	bp := tls.Alloc(4)
 52474  	defer tls.Free(4)
 52475  
 52476  	var p uintptr
 52477  	var pParent uintptr
 52478  	var nByte int32
 52479  
 52480  	var rc int32
 52481  	var zFile uintptr
 52482  	var nVfs int32
 52483  
 52484  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 52485  	if !(pParent != 0) {
 52486  		return SQLITE_ERROR
 52487  	}
 52488  
 52489  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 52490  	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))
 52491  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 52492  	libc.Xmemset(tls, p, 0, uint64(nByte))
 52493  
 52494  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 52495  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 52496  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 52497  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 52498  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 52499  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs))
 52500  
 52501  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 52502  	(*struct {
 52503  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52504  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 52505  
 52506  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 52507  	(*struct {
 52508  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 52509  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 52510  	rc = (*struct {
 52511  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52512  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 52513  	if rc == SQLITE_OK {
 52514  		libc.Xmemcpy(tls, p+204, ts+35535, uint64(20))
 52515  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 52516  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 52517  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 52518  	}
 52519  	if rc != 0 {
 52520  		vfslog_finalize(tls, p)
 52521  	}
 52522  	return rc
 52523  }
 52524  
 52525  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 52526  	var pVfs uintptr
 52527  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 52528  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 52529  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52530  	}{vfslogOpen})) {
 52531  		return SQLITE_ERROR
 52532  	}
 52533  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 52534  	vfslog_string(tls, pVfs, zMsg)
 52535  	return SQLITE_OK
 52536  }
 52537  
 52538  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 52539  	var zEvent uintptr = uintptr(0)
 52540  
 52541  	switch eEvent {
 52542  	case OS_CLOSE:
 52543  		zEvent = ts + 35556
 52544  		break
 52545  	case OS_READ:
 52546  		zEvent = ts + 35563
 52547  		break
 52548  	case OS_WRITE:
 52549  		zEvent = ts + 35569
 52550  		break
 52551  	case OS_TRUNCATE:
 52552  		zEvent = ts + 35576
 52553  		break
 52554  	case OS_SYNC:
 52555  		zEvent = ts + 27843
 52556  		break
 52557  	case OS_FILESIZE:
 52558  		zEvent = ts + 35586
 52559  		break
 52560  	case OS_LOCK:
 52561  		zEvent = ts + 35596
 52562  		break
 52563  	case OS_UNLOCK:
 52564  		zEvent = ts + 35602
 52565  		break
 52566  	case OS_CHECKRESERVEDLOCK:
 52567  		zEvent = ts + 35610
 52568  		break
 52569  	case OS_FILECONTROL:
 52570  		zEvent = ts + 35624
 52571  		break
 52572  	case OS_SECTORSIZE:
 52573  		zEvent = ts + 35637
 52574  		break
 52575  	case OS_DEVCHAR:
 52576  		zEvent = ts + 35649
 52577  		break
 52578  	case OS_OPEN:
 52579  		zEvent = ts + 27421
 52580  		break
 52581  	case OS_DELETE:
 52582  		zEvent = ts + 35661
 52583  		break
 52584  	case OS_ACCESS:
 52585  		zEvent = ts + 35669
 52586  		break
 52587  	case OS_FULLPATHNAME:
 52588  		zEvent = ts + 35677
 52589  		break
 52590  	case OS_RANDOMNESS:
 52591  		zEvent = ts + 35691
 52592  		break
 52593  	case OS_SLEEP:
 52594  		zEvent = ts + 35703
 52595  		break
 52596  	case OS_CURRENTTIME:
 52597  		zEvent = ts + 35710
 52598  		break
 52599  
 52600  	case OS_SHMUNMAP:
 52601  		zEvent = ts + 35723
 52602  		break
 52603  	case OS_SHMLOCK:
 52604  		zEvent = ts + 35733
 52605  		break
 52606  	case OS_SHMBARRIER:
 52607  		zEvent = ts + 35742
 52608  		break
 52609  	case OS_SHMMAP:
 52610  		zEvent = ts + 35754
 52611  		break
 52612  
 52613  	case OS_ANNOTATE:
 52614  		zEvent = ts + 35762
 52615  		break
 52616  	}
 52617  
 52618  	return zEvent
 52619  }
 52620  
 52621  type VfslogVtab1 = struct {
 52622  	Fbase  sqlite3_vtab
 52623  	FpFd   uintptr
 52624  	FnByte sqlite3_int64
 52625  	FzFile uintptr
 52626  }
 52627  
 52628  type VfslogVtab = VfslogVtab1
 52629  type VfslogCsr1 = struct {
 52630  	Fbase        sqlite3_vtab_cursor
 52631  	FiRowid      sqlite3_int64
 52632  	FiOffset     sqlite3_int64
 52633  	FzTransient  uintptr
 52634  	FnFile       int32
 52635  	F__ccgo_pad1 [4]byte
 52636  	FazFile      uintptr
 52637  	FaBuf        [1024]uint8
 52638  }
 52639  
 52640  type VfslogCsr = VfslogCsr1
 52641  
 52642  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 52643  	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))))
 52644  }
 52645  
 52646  func dequote(tls *libc.TLS, z uintptr) {
 52647  	var quote int8
 52648  	quote = *(*int8)(unsafe.Pointer(z))
 52649  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 52650  		var iIn int32 = 1
 52651  		var iOut int32 = 0
 52652  		if int32(quote) == '[' {
 52653  			quote = int8(']')
 52654  		}
 52655  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 52656  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 52657  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 52658  					break
 52659  				}
 52660  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 52661  				iIn = iIn + 2
 52662  			} else {
 52663  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 52664  			}
 52665  		}
 52666  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 52667  	}
 52668  }
 52669  
 52670  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 52671  	bp := tls.Alloc(12)
 52672  	defer tls.Free(12)
 52673  
 52674  	var pVfs uintptr
 52675  
 52676  	var p uintptr
 52677  	var rc int32
 52678  	var nByte int32
 52679  	var zFile uintptr
 52680  
 52681  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 52682  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52683  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 52684  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 52685  	if p == uintptr(0) {
 52686  		return SQLITE_NOMEM
 52687  	}
 52688  	libc.Xmemset(tls, p, 0, uint64(nByte))
 52689  
 52690  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 52691  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 52692  
 52693  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 52694  	if !(zFile != 0) {
 52695  		sqlite3.Xsqlite3_free(tls, p)
 52696  		return SQLITE_NOMEM
 52697  	}
 52698  	dequote(tls, zFile)
 52699  	(*struct {
 52700  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52701  	})(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)
 52702  	sqlite3.Xsqlite3_free(tls, zFile)
 52703  
 52704  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 52705  	rc = (*struct {
 52706  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52707  	})(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)
 52708  
 52709  	if rc == SQLITE_OK {
 52710  		(*struct {
 52711  			f func(*libc.TLS, uintptr, uintptr) int32
 52712  		})(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)
 52713  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 52714  			ts+35773)
 52715  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 52716  	} else {
 52717  		sqlite3.Xsqlite3_free(tls, p)
 52718  	}
 52719  
 52720  	return rc
 52721  }
 52722  
 52723  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 52724  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 52725  	return SQLITE_OK
 52726  }
 52727  
 52728  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 52729  	var p uintptr = pVtab
 52730  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 52731  		(*struct {
 52732  			f func(*libc.TLS, uintptr) int32
 52733  		})(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)
 52734  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 52735  	}
 52736  	sqlite3.Xsqlite3_free(tls, p)
 52737  	return SQLITE_OK
 52738  }
 52739  
 52740  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 52741  	var pCsr uintptr
 52742  
 52743  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 52744  	if !(pCsr != 0) {
 52745  		return SQLITE_NOMEM
 52746  	}
 52747  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})))
 52748  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 52749  	return SQLITE_OK
 52750  }
 52751  
 52752  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 52753  	var p uintptr = pCursor
 52754  	var i int32
 52755  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 52756  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 52757  	}
 52758  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 52759  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 52760  	sqlite3.Xsqlite3_free(tls, p)
 52761  	return SQLITE_OK
 52762  }
 52763  
 52764  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 52765  	bp := tls.Alloc(4)
 52766  	defer tls.Free(4)
 52767  
 52768  	var pCsr uintptr = pCursor
 52769  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 52770  	var rc int32 = SQLITE_OK
 52771  	var nRead int32
 52772  
 52773  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 52774  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 52775  
 52776  	nRead = 24
 52777  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 52778  		var eEvent int32
 52779  		rc = (*struct {
 52780  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52781  		})(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)
 52782  
 52783  		eEvent = int32(get32bits(tls, pCsr+48))
 52784  		if rc == SQLITE_OK &&
 52785  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 52786  			rc = (*struct {
 52787  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52788  			})(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))
 52789  			nRead = nRead + 4
 52790  			if rc == SQLITE_OK {
 52791  				var nStr int32 = int32(get32bits(tls, bp))
 52792  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 52793  				rc = (*struct {
 52794  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52795  				})(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))
 52796  				*(*int8)(unsafe.Pointer(zStr + uintptr(nStr))) = int8(0)
 52797  				nRead = nRead + nStr
 52798  
 52799  				if eEvent == OS_OPEN {
 52800  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 52801  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 52802  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 52803  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 52804  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 52805  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew))
 52806  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 52807  					}
 52808  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 52809  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 52810  				} else {
 52811  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 52812  				}
 52813  			}
 52814  		}
 52815  	}
 52816  
 52817  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 52818  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 52819  	return rc
 52820  }
 52821  
 52822  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 52823  	var pCsr uintptr = pCursor
 52824  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 52825  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 52826  }
 52827  
 52828  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 52829  	var pCsr uintptr = pCursor
 52830  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 52831  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 52832  	return vlogNext(tls, pCursor)
 52833  }
 52834  
 52835  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 52836  	var val uint32
 52837  	var pCsr uintptr = pCursor
 52838  
 52839  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 52840  
 52841  	switch i {
 52842  	case 0:
 52843  		{
 52844  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 52845  			break
 52846  
 52847  		}
 52848  	case 1:
 52849  		{
 52850  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 52851  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 52852  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 52853  			}
 52854  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 52855  			break
 52856  
 52857  		}
 52858  	default:
 52859  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 52860  		break
 52861  	}
 52862  
 52863  	return SQLITE_OK
 52864  }
 52865  
 52866  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 52867  	var pCsr uintptr = pCursor
 52868  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 52869  	return SQLITE_OK
 52870  }
 52871  
 52872  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 52873  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 52874  	return SQLITE_OK
 52875  }
 52876  
 52877  var vfslog_module = sqlite3_module{
 52878  	FxCreate:     0,
 52879  	FxConnect:    0,
 52880  	FxBestIndex:  0,
 52881  	FxDisconnect: 0,
 52882  	FxDestroy:    0,
 52883  	FxOpen:       0,
 52884  	FxClose:      0,
 52885  	FxFilter:     0,
 52886  	FxNext:       0,
 52887  	FxEof:        0,
 52888  	FxColumn:     0,
 52889  	FxRowid:      0,
 52890  }
 52891  
 52892  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52893  	bp := tls.Alloc(144)
 52894  	defer tls.Free(144)
 52895  
 52896  	var db uintptr
 52897  
 52898  	var rc int32 = SQLITE_ERROR
 52899  
 52900  	if objc < 2 {
 52901  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 52902  		return TCL_ERROR
 52903  	}
 52904  	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 {
 52905  		return TCL_ERROR
 52906  	}
 52907  
 52908  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 52909  	case uint32(0):
 52910  		{
 52911  			var zVfs uintptr
 52912  			var zMsg uintptr
 52913  			if objc != 4 {
 52914  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 52915  				return TCL_ERROR
 52916  			}
 52917  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52918  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 52919  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 52920  			if rc != SQLITE_OK {
 52921  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 52922  				return TCL_ERROR
 52923  			}
 52924  			break
 52925  
 52926  		}
 52927  	case uint32(1):
 52928  		{
 52929  			var zVfs uintptr
 52930  			if objc != 3 {
 52931  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 52932  				return TCL_ERROR
 52933  			}
 52934  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52935  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 52936  			if rc != SQLITE_OK {
 52937  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 52938  				return TCL_ERROR
 52939  			}
 52940  			break
 52941  
 52942  		}
 52943  
 52944  	case uint32(2):
 52945  		{
 52946  			var zVfs uintptr
 52947  			var zParent uintptr
 52948  			var zLog uintptr
 52949  			if objc != 5 {
 52950  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 52951  				return TCL_ERROR
 52952  			}
 52953  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52954  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 52955  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 52956  			if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 52957  				zParent = uintptr(0)
 52958  			}
 52959  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 52960  			if rc != SQLITE_OK {
 52961  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 52962  				return TCL_ERROR
 52963  			}
 52964  			break
 52965  
 52966  		}
 52967  
 52968  	case uint32(3):
 52969  		{
 52970  			var zDb uintptr
 52971  			if objc != 3 {
 52972  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 52973  				return TCL_ERROR
 52974  			}
 52975  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52976  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 52977  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 52978  				rc = sqlite3_vfslog_register(tls, db)
 52979  			}
 52980  			if rc != SQLITE_OK {
 52981  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 52982  				return TCL_ERROR
 52983  			}
 52984  			break
 52985  
 52986  		}
 52987  	}
 52988  
 52989  	return TCL_OK
 52990  }
 52991  
 52992  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 52993  
 52994  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 52995  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 52996  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52997  	}{test_vfslog})), uintptr(0), uintptr(0))
 52998  	return TCL_OK
 52999  }
 53000  
 53001  type testpcacheGlobalType1 = struct {
 53002  	FpDummy        uintptr
 53003  	FnInstance     int32
 53004  	FdiscardChance uint32
 53005  	FprngSeed      uint32
 53006  	FhighStress    uint32
 53007  }
 53008  
 53009  type testpcacheGlobalType = testpcacheGlobalType1
 53010  
 53011  var testpcacheGlobal testpcacheGlobalType
 53012  
 53013  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 53014  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 53015  	if testpcacheGlobal.FpDummy == uintptr(0) {
 53016  		return SQLITE_NOMEM
 53017  	}
 53018  	return SQLITE_OK
 53019  }
 53020  
 53021  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 53022  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 53023  	testpcacheGlobal.FpDummy = uintptr(0)
 53024  }
 53025  
 53026  type testpcache1 = struct {
 53027  	FszPage      int32
 53028  	FszExtra     int32
 53029  	FbPurgeable  int32
 53030  	FnFree       int32
 53031  	FnPinned     int32
 53032  	FiRand       uint32
 53033  	FiMagic      uint32
 53034  	F__ccgo_pad1 [4]byte
 53035  	Fa           [217]struct {
 53036  		Fpage     sqlite3_pcache_page
 53037  		Fkey      uint32
 53038  		FisPinned int32
 53039  	}
 53040  }
 53041  
 53042  type testpcache = testpcache1
 53043  type testpcachePage = struct {
 53044  	Fpage     sqlite3_pcache_page
 53045  	Fkey      uint32
 53046  	FisPinned int32
 53047  }
 53048  
 53049  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 53050  	var x uint32 = uint32(0)
 53051  	var i int32
 53052  	for i = 0; i < 4; i++ {
 53053  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 53054  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 53055  	}
 53056  	return x
 53057  }
 53058  
 53059  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 53060  	var nMem int32
 53061  	var x uintptr
 53062  	var p uintptr
 53063  	var i int32
 53064  
 53065  	szPage = (szPage + 7) & libc.CplInt32(7)
 53066  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 53067  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 53068  	if p == uintptr(0) {
 53069  		return uintptr(0)
 53070  	}
 53071  	x = p + 1*5240
 53072  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 53073  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 53074  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 53075  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 53076  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 53077  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 53078  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 53079  	i = 0
 53080  __1:
 53081  	if !(i < TESTPCACHE_NPAGE) {
 53082  		goto __3
 53083  	}
 53084  	{
 53085  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53086  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53087  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 53088  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 53089  
 53090  	}
 53091  	goto __2
 53092  __2:
 53093  	i++
 53094  	x += uintptr(szPage + szExtra)
 53095  	goto __1
 53096  	goto __3
 53097  __3:
 53098  	;
 53099  	testpcacheGlobal.FnInstance++
 53100  	return p
 53101  }
 53102  
 53103  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 53104  	var p uintptr = pCache
 53105  	_ = p
 53106  
 53107  }
 53108  
 53109  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 53110  	var p uintptr = pCache
 53111  
 53112  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 53113  }
 53114  
 53115  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 53116  	var p uintptr = pCache
 53117  	var i int32
 53118  	var j int32
 53119  
 53120  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53121  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 53122  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 53123  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53124  
 53125  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 53126  			}
 53127  			return p + 32 + uintptr(i)*24
 53128  		}
 53129  	}
 53130  
 53131  	if createFlag == 0 {
 53132  		return uintptr(0)
 53133  	}
 53134  
 53135  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 53136  		return uintptr(0)
 53137  	}
 53138  
 53139  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 53140  		return uintptr(0)
 53141  	}
 53142  
 53143  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 53144  		return uintptr(0)
 53145  	}
 53146  
 53147  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 53148  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53149  		i = 0
 53150  	__1:
 53151  		if !(i < TESTPCACHE_NPAGE) {
 53152  			goto __3
 53153  		}
 53154  		{
 53155  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 53156  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53157  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53158  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53159  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53160  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53161  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 53162  
 53163  				return p + 32 + uintptr(j)*24
 53164  			}
 53165  
 53166  		}
 53167  		goto __2
 53168  	__2:
 53169  		i++
 53170  		j = (j + 1) % TESTPCACHE_NPAGE
 53171  		goto __1
 53172  		goto __3
 53173  	__3:
 53174  	}
 53175  
 53176  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 53177  		return uintptr(0)
 53178  	}
 53179  
 53180  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53181  	i = 0
 53182  __4:
 53183  	if !(i < TESTPCACHE_NPAGE) {
 53184  		goto __6
 53185  	}
 53186  	{
 53187  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 53188  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53189  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53190  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53191  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53192  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53193  
 53194  			return p + 32 + uintptr(j)*24
 53195  		}
 53196  
 53197  	}
 53198  	goto __5
 53199  __5:
 53200  	i++
 53201  	j = (j + 1) % TESTPCACHE_NPAGE
 53202  	goto __4
 53203  	goto __6
 53204  __6:
 53205  	;
 53206  	return uintptr(0)
 53207  }
 53208  
 53209  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 53210  	var p uintptr = pCache
 53211  	var i int32
 53212  
 53213  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 53214  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 53215  		discard = 1
 53216  	}
 53217  
 53218  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53219  		if p+32+uintptr(i)*24 == pOldPage {
 53220  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53221  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53222  
 53223  			if discard != 0 {
 53224  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53225  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 53226  
 53227  			}
 53228  			return
 53229  		}
 53230  	}
 53231  
 53232  }
 53233  
 53234  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 53235  	var p uintptr = pCache
 53236  	var i int32
 53237  
 53238  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53239  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 53240  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53241  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53242  
 53243  			break
 53244  		}
 53245  	}
 53246  
 53247  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53248  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 53249  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 53250  			return
 53251  		}
 53252  	}
 53253  
 53254  }
 53255  
 53256  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 53257  	var p uintptr = pCache
 53258  	var i uint32
 53259  
 53260  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 53261  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 53262  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53263  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 53264  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53265  
 53266  			}
 53267  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53268  
 53269  		}
 53270  	}
 53271  }
 53272  
 53273  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 53274  	var p uintptr = pCache
 53275  
 53276  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 53277  	sqlite3.Xsqlite3_free(tls, p)
 53278  	testpcacheGlobal.FnInstance--
 53279  }
 53280  
 53281  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 53282  	bp := tls.Alloc(24)
 53283  	defer tls.Free(24)
 53284  
 53285  	testpcacheGlobal.FdiscardChance = discardChance
 53286  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 53287  	testpcacheGlobal.FhighStress = highStress
 53288  	if installFlag != isInstalled {
 53289  		if installFlag != 0 {
 53290  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 53291  
 53292  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 53293  		} else {
 53294  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 53295  		}
 53296  		isInstalled = installFlag
 53297  	}
 53298  }
 53299  
 53300  var testPcache = sqlite3_pcache_methods2{
 53301  	FiVersion:   1,
 53302  	FpArg:       0,
 53303  	FxInit:      0,
 53304  	FxShutdown:  0,
 53305  	FxCreate:    0,
 53306  	FxCachesize: 0,
 53307  	FxPagecount: 0,
 53308  	FxFetch:     0,
 53309  	FxUnpin:     0,
 53310  	FxRekey:     0,
 53311  	FxTruncate:  0,
 53312  	FxDestroy:   0,
 53313  }
 53314  var defaultPcache sqlite3_pcache_methods2
 53315  var isInstalled int32 = 0
 53316  
 53317  type quota_FILE1 = struct {
 53318  	Ff     uintptr
 53319  	FiOfst sqlite3_int64
 53320  	FpFile uintptr
 53321  }
 53322  
 53323  type quota_FILE = quota_FILE1
 53324  
 53325  type quotaGroup1 = struct {
 53326  	FzPattern  uintptr
 53327  	FiLimit    sqlite3_int64
 53328  	FiSize     sqlite3_int64
 53329  	FxCallback uintptr
 53330  	FpArg      uintptr
 53331  	FxDestroy  uintptr
 53332  	FpNext     uintptr
 53333  	FppPrev    uintptr
 53334  	FpFiles    uintptr
 53335  }
 53336  
 53337  type quotaGroup = quotaGroup1
 53338  type quotaConn1 = struct {
 53339  	Fbase  sqlite3_file
 53340  	FpFile uintptr
 53341  }
 53342  
 53343  type quotaConn = quotaConn1
 53344  type quotaFile1 = struct {
 53345  	FzFilename     uintptr
 53346  	FpGroup        uintptr
 53347  	FiSize         sqlite3_int64
 53348  	FnRef          int32
 53349  	FdeleteOnClose int32
 53350  	FpNext         uintptr
 53351  	FppPrev        uintptr
 53352  }
 53353  
 53354  type quotaFile = quotaFile1
 53355  
 53356  var gQuota struct {
 53357  	FpOrigVfs      uintptr
 53358  	FsThisVfs      sqlite3_vfs
 53359  	FsIoMethodsV1  sqlite3_io_methods
 53360  	FsIoMethodsV2  sqlite3_io_methods
 53361  	FisInitialized int32
 53362  	F__ccgo_pad1   [4]byte
 53363  	FpMutex        uintptr
 53364  	FpGroup        uintptr
 53365  }
 53366  
 53367  func quotaEnter(tls *libc.TLS) {
 53368  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 53369  }
 53370  
 53371  func quotaLeave(tls *libc.TLS) {
 53372  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 53373  }
 53374  
 53375  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 53376  	var N int32 = 0
 53377  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53378  	for pFile != 0 {
 53379  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 53380  			N++
 53381  		}
 53382  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53383  	}
 53384  	return N
 53385  }
 53386  
 53387  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 53388  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53389  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53390  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53391  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 53392  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 53393  	}
 53394  	sqlite3.Xsqlite3_free(tls, pFile)
 53395  }
 53396  
 53397  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 53398  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 53399  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 53400  	}
 53401  }
 53402  
 53403  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 53404  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 53405  		quotaRemoveAllFiles(tls, pGroup)
 53406  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53407  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 53408  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 53409  		}
 53410  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 53411  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53412  		}
 53413  		sqlite3.Xsqlite3_free(tls, pGroup)
 53414  	}
 53415  }
 53416  
 53417  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 53418  	var c int32
 53419  	var c2 int32
 53420  	var cx int32
 53421  	var invert int32
 53422  	var seen int32
 53423  
 53424  	for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 53425  		if c == '*' {
 53426  			for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 53427  				if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 53428  					return 0
 53429  				}
 53430  			}
 53431  			if c == 0 {
 53432  				return 1
 53433  			} else if c == '[' {
 53434  				for *(*int8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 53435  					z++
 53436  				}
 53437  				return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
 53438  			}
 53439  			if c == '/' {
 53440  				cx = '\\'
 53441  			} else {
 53442  				cx = c
 53443  			}
 53444  			for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 53445  				for c2 != c && c2 != cx {
 53446  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 53447  					if c2 == 0 {
 53448  						return 0
 53449  					}
 53450  				}
 53451  				if quotaStrglob(tls, zGlob, z) != 0 {
 53452  					return 1
 53453  				}
 53454  			}
 53455  			return 0
 53456  		} else if c == '?' {
 53457  			if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 53458  				return 0
 53459  			}
 53460  		} else if c == '[' {
 53461  			var prior_c int32 = 0
 53462  			seen = 0
 53463  			invert = 0
 53464  			c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 53465  			if c == 0 {
 53466  				return 0
 53467  			}
 53468  			c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53469  			if c2 == '^' {
 53470  				invert = 1
 53471  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53472  			}
 53473  			if c2 == ']' {
 53474  				if c == ']' {
 53475  					seen = 1
 53476  				}
 53477  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53478  			}
 53479  			for c2 != 0 && c2 != ']' {
 53480  				if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 53481  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53482  					if c >= prior_c && c <= c2 {
 53483  						seen = 1
 53484  					}
 53485  					prior_c = 0
 53486  				} else {
 53487  					if c == c2 {
 53488  						seen = 1
 53489  					}
 53490  					prior_c = c2
 53491  				}
 53492  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53493  			}
 53494  			if c2 == 0 || seen^invert == 0 {
 53495  				return 0
 53496  			}
 53497  		} else if c == '/' {
 53498  			if int32(*(*int8)(unsafe.Pointer(z))) != '/' && int32(*(*int8)(unsafe.Pointer(z))) != '\\' {
 53499  				return 0
 53500  			}
 53501  			z++
 53502  		} else {
 53503  			if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 53504  				return 0
 53505  			}
 53506  		}
 53507  	}
 53508  	return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
 53509  }
 53510  
 53511  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 53512  	var p uintptr
 53513  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 53514  	}
 53515  	return p
 53516  }
 53517  
 53518  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 53519  	var p uintptr = pConn
 53520  	return p + 1*16
 53521  }
 53522  
 53523  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 53524  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53525  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 53526  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53527  	}
 53528  	if pFile == uintptr(0) && createFlag != 0 {
 53529  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 53530  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 53531  		if pFile != 0 {
 53532  			libc.Xmemset(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})))
 53533  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 53534  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1))
 53535  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53536  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 53537  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 53538  			}
 53539  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 53540  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 53541  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 53542  		}
 53543  	}
 53544  	return pFile
 53545  }
 53546  
 53547  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 53548  	return zUtf8
 53549  }
 53550  
 53551  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 53552  }
 53553  
 53554  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 53555  	var rc int32
 53556  	var pQuotaOpen uintptr
 53557  	var pFile uintptr
 53558  	var pGroup uintptr
 53559  	var pSubOpen uintptr
 53560  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 53561  
 53562  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 53563  		return (*struct {
 53564  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53565  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 53566  	}
 53567  
 53568  	quotaEnter(tls)
 53569  	pGroup = quotaGroupFind(tls, zName)
 53570  	if pGroup == uintptr(0) {
 53571  		rc = (*struct {
 53572  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53573  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 53574  	} else {
 53575  		pQuotaOpen = pConn
 53576  		pSubOpen = quotaSubOpen(tls, pConn)
 53577  		rc = (*struct {
 53578  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53579  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 53580  		if rc == SQLITE_OK {
 53581  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 53582  			if pFile == uintptr(0) {
 53583  				quotaLeave(tls)
 53584  				(*struct {
 53585  					f func(*libc.TLS, uintptr) int32
 53586  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 53587  				return SQLITE_NOMEM
 53588  			}
 53589  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 53590  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 53591  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 53592  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 53593  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 53594  			} else {
 53595  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 53596  			}
 53597  		}
 53598  	}
 53599  	quotaLeave(tls)
 53600  	return rc
 53601  }
 53602  
 53603  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 53604  	var rc int32
 53605  	var pFile uintptr
 53606  	var pGroup uintptr
 53607  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 53608  
 53609  	rc = (*struct {
 53610  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53611  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 53612  
 53613  	if rc == SQLITE_OK {
 53614  		quotaEnter(tls)
 53615  		pGroup = quotaGroupFind(tls, zName)
 53616  		if pGroup != 0 {
 53617  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 53618  			if pFile != 0 {
 53619  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 53620  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 53621  				} else {
 53622  					quotaRemoveFile(tls, pFile)
 53623  					quotaGroupDeref(tls, pGroup)
 53624  				}
 53625  			}
 53626  		}
 53627  		quotaLeave(tls)
 53628  	}
 53629  	return rc
 53630  }
 53631  
 53632  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 53633  	var p uintptr = pConn
 53634  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53635  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53636  	var rc int32
 53637  	rc = (*struct {
 53638  		f func(*libc.TLS, uintptr) int32
 53639  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 53640  	quotaEnter(tls)
 53641  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 53642  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 53643  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53644  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 53645  			(*struct {
 53646  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 53647  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 53648  			quotaRemoveFile(tls, pFile)
 53649  		}
 53650  		quotaGroupDeref(tls, pGroup)
 53651  	}
 53652  	quotaLeave(tls)
 53653  	return rc
 53654  }
 53655  
 53656  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53657  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53658  	return (*struct {
 53659  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53660  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53661  }
 53662  
 53663  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53664  	var p uintptr = pConn
 53665  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53666  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 53667  	var pGroup uintptr
 53668  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53669  	var szNew sqlite3_int64
 53670  
 53671  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 53672  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53673  		quotaEnter(tls)
 53674  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 53675  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 53676  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 53677  				(*struct {
 53678  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 53679  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 53680  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53681  			}
 53682  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 53683  				quotaLeave(tls)
 53684  				return SQLITE_FULL
 53685  			}
 53686  		}
 53687  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 53688  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 53689  		quotaLeave(tls)
 53690  	}
 53691  	return (*struct {
 53692  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53693  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53694  }
 53695  
 53696  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 53697  	var p uintptr = pConn
 53698  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53699  	var rc int32 = (*struct {
 53700  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53701  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 53702  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53703  	var pGroup uintptr
 53704  	if rc == SQLITE_OK {
 53705  		quotaEnter(tls)
 53706  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53707  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53708  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 53709  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 53710  		quotaLeave(tls)
 53711  	}
 53712  	return rc
 53713  }
 53714  
 53715  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 53716  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53717  	return (*struct {
 53718  		f func(*libc.TLS, uintptr, int32) int32
 53719  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 53720  }
 53721  
 53722  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 53723  	bp := tls.Alloc(8)
 53724  	defer tls.Free(8)
 53725  
 53726  	var p uintptr = pConn
 53727  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53728  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53729  	var pGroup uintptr
 53730  
 53731  	var rc int32
 53732  
 53733  	rc = (*struct {
 53734  		f func(*libc.TLS, uintptr, uintptr) int32
 53735  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 53736  	if rc == SQLITE_OK {
 53737  		quotaEnter(tls)
 53738  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53739  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53740  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 53741  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 53742  		quotaLeave(tls)
 53743  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 53744  	}
 53745  	return rc
 53746  }
 53747  
 53748  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53749  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53750  	return (*struct {
 53751  		f func(*libc.TLS, uintptr, int32) int32
 53752  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 53753  }
 53754  
 53755  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53756  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53757  	return (*struct {
 53758  		f func(*libc.TLS, uintptr, int32) int32
 53759  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 53760  }
 53761  
 53762  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 53763  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53764  	return (*struct {
 53765  		f func(*libc.TLS, uintptr, uintptr) int32
 53766  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 53767  }
 53768  
 53769  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 53770  	bp := tls.Alloc(8)
 53771  	defer tls.Free(8)
 53772  
 53773  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53774  	var rc int32 = (*struct {
 53775  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53776  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 53777  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 53778  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 53779  	}
 53780  	return rc
 53781  }
 53782  
 53783  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 53784  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53785  	return (*struct {
 53786  		f func(*libc.TLS, uintptr) int32
 53787  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 53788  }
 53789  
 53790  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 53791  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53792  	return (*struct {
 53793  		f func(*libc.TLS, uintptr) int32
 53794  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 53795  }
 53796  
 53797  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 53798  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53799  	return (*struct {
 53800  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53801  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 53802  }
 53803  
 53804  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 53805  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53806  	return (*struct {
 53807  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53808  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 53809  }
 53810  
 53811  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 53812  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53813  	(*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)
 53814  }
 53815  
 53816  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 53817  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53818  	return (*struct {
 53819  		f func(*libc.TLS, uintptr, int32) int32
 53820  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 53821  }
 53822  
 53823  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 53824  	var pOrigVfs uintptr
 53825  	if gQuota.FisInitialized != 0 {
 53826  		return SQLITE_MISUSE
 53827  	}
 53828  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 53829  	if pOrigVfs == uintptr(0) {
 53830  		return SQLITE_ERROR
 53831  	}
 53832  
 53833  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 53834  	if !(int32(gQuota.FpMutex) != 0) {
 53835  		return SQLITE_NOMEM
 53836  	}
 53837  	gQuota.FisInitialized = 1
 53838  	gQuota.FpOrigVfs = pOrigVfs
 53839  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 53840  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 53841  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53842  	}{quotaOpen}))
 53843  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 53844  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53845  	}{quotaDelete}))
 53846  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 53847  	gQuota.FsThisVfs.FzName = ts + 35922
 53848  	gQuota.FsIoMethodsV1.FiVersion = 1
 53849  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 53850  		f func(*libc.TLS, uintptr) int32
 53851  	}{quotaClose}))
 53852  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 53853  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53854  	}{quotaRead}))
 53855  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 53856  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53857  	}{quotaWrite}))
 53858  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 53859  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53860  	}{quotaTruncate}))
 53861  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 53862  		f func(*libc.TLS, uintptr, int32) int32
 53863  	}{quotaSync}))
 53864  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 53865  		f func(*libc.TLS, uintptr, uintptr) int32
 53866  	}{quotaFileSize}))
 53867  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 53868  		f func(*libc.TLS, uintptr, int32) int32
 53869  	}{quotaLock}))
 53870  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 53871  		f func(*libc.TLS, uintptr, int32) int32
 53872  	}{quotaUnlock}))
 53873  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 53874  		f func(*libc.TLS, uintptr, uintptr) int32
 53875  	}{quotaCheckReservedLock}))
 53876  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 53877  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53878  	}{quotaFileControl}))
 53879  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 53880  		f func(*libc.TLS, uintptr) int32
 53881  	}{quotaSectorSize}))
 53882  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 53883  		f func(*libc.TLS, uintptr) int32
 53884  	}{quotaDeviceCharacteristics}))
 53885  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 53886  	gQuota.FsIoMethodsV2.FiVersion = 2
 53887  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 53888  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53889  	}{quotaShmMap}))
 53890  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 53891  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53892  	}{quotaShmLock}))
 53893  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 53894  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 53895  		f func(*libc.TLS, uintptr, int32) int32
 53896  	}{quotaShmUnmap}))
 53897  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 53898  	return SQLITE_OK
 53899  }
 53900  
 53901  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 53902  	var pGroup uintptr
 53903  	if gQuota.FisInitialized == 0 {
 53904  		return SQLITE_MISUSE
 53905  	}
 53906  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 53907  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 53908  			return SQLITE_MISUSE
 53909  		}
 53910  	}
 53911  	for gQuota.FpGroup != 0 {
 53912  		pGroup = gQuota.FpGroup
 53913  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53914  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 53915  
 53916  		quotaGroupDeref(tls, pGroup)
 53917  	}
 53918  	gQuota.FisInitialized = 0
 53919  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 53920  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 53921  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)))
 53922  	return SQLITE_OK
 53923  }
 53924  
 53925  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 53926  	var pGroup uintptr
 53927  	quotaEnter(tls)
 53928  	pGroup = gQuota.FpGroup
 53929  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 53930  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53931  	}
 53932  	if pGroup == uintptr(0) {
 53933  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 53934  		if iLimit <= int64(0) {
 53935  			quotaLeave(tls)
 53936  			return SQLITE_OK
 53937  		}
 53938  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 53939  		if pGroup == uintptr(0) {
 53940  			quotaLeave(tls)
 53941  			return SQLITE_NOMEM
 53942  		}
 53943  		libc.Xmemset(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})))
 53944  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 53945  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1))
 53946  		if gQuota.FpGroup != 0 {
 53947  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 53948  		}
 53949  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 53950  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 53951  		gQuota.FpGroup = pGroup
 53952  	}
 53953  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 53954  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 53955  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 53956  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53957  	}
 53958  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 53959  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 53960  	quotaGroupDeref(tls, pGroup)
 53961  	quotaLeave(tls)
 53962  	return SQLITE_OK
 53963  }
 53964  
 53965  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 53966  	bp := tls.Alloc(16)
 53967  	defer tls.Free(16)
 53968  
 53969  	var zFull uintptr = uintptr(0)
 53970  	var fd uintptr
 53971  	var rc int32
 53972  	*(*int32)(unsafe.Pointer(bp)) = 0
 53973  
 53974  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 53975  
 53976  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 53977  	if fd == uintptr(0) {
 53978  		rc = SQLITE_NOMEM
 53979  	} else {
 53980  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 53981  		rc = (*struct {
 53982  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53983  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 53984  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 53985  	}
 53986  
 53987  	if rc == SQLITE_OK {
 53988  		*(*int8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = int8(0)
 53989  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 53990  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 53991  		if rc == SQLITE_OK {
 53992  			(*struct {
 53993  				f func(*libc.TLS, uintptr, uintptr) int32
 53994  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 53995  			(*struct {
 53996  				f func(*libc.TLS, uintptr) int32
 53997  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 53998  		} else if rc == SQLITE_CANTOPEN {
 53999  			var pGroup uintptr
 54000  			var pFile uintptr
 54001  			quotaEnter(tls)
 54002  			pGroup = quotaGroupFind(tls, zFull)
 54003  			if pGroup != 0 {
 54004  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 54005  				if pFile != 0 {
 54006  					quotaRemoveFile(tls, pFile)
 54007  				}
 54008  			}
 54009  			quotaLeave(tls)
 54010  		}
 54011  	}
 54012  
 54013  	sqlite3.Xsqlite3_free(tls, fd)
 54014  	return rc
 54015  }
 54016  
 54017  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 54018  	var p uintptr
 54019  	var zFull uintptr
 54020  	var zFullTranslated uintptr
 54021  	var rc int32
 54022  	var pGroup uintptr
 54023  	var pFile uintptr
 54024  	p = uintptr(0)
 54025  	zFull = uintptr(0)
 54026  	zFullTranslated = uintptr(0)
 54027  
 54028  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54029  	if !(zFull == uintptr(0)) {
 54030  		goto __1
 54031  	}
 54032  	return uintptr(0)
 54033  __1:
 54034  	;
 54035  	rc = (*struct {
 54036  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54037  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54038  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54039  	if !(rc != 0) {
 54040  		goto __2
 54041  	}
 54042  	goto quota_fopen_error
 54043  __2:
 54044  	;
 54045  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 54046  	if !(p == uintptr(0)) {
 54047  		goto __3
 54048  	}
 54049  	goto quota_fopen_error
 54050  __3:
 54051  	;
 54052  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})))
 54053  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 54054  	if !(zFullTranslated == uintptr(0)) {
 54055  		goto __4
 54056  	}
 54057  	goto quota_fopen_error
 54058  __4:
 54059  	;
 54060  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 54061  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 54062  		goto __5
 54063  	}
 54064  	goto quota_fopen_error
 54065  __5:
 54066  	;
 54067  	quotaEnter(tls)
 54068  	pGroup = quotaGroupFind(tls, zFull)
 54069  	if !(pGroup != 0) {
 54070  		goto __6
 54071  	}
 54072  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 54073  	if !(pFile == uintptr(0)) {
 54074  		goto __7
 54075  	}
 54076  	quotaLeave(tls)
 54077  	goto quota_fopen_error
 54078  __7:
 54079  	;
 54080  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54081  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 54082  __6:
 54083  	;
 54084  	quotaLeave(tls)
 54085  	sqlite3.Xsqlite3_free(tls, zFull)
 54086  	return p
 54087  
 54088  quota_fopen_error:
 54089  	quota_mbcs_free(tls, zFullTranslated)
 54090  	sqlite3.Xsqlite3_free(tls, zFull)
 54091  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 54092  		goto __8
 54093  	}
 54094  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54095  __8:
 54096  	;
 54097  	sqlite3.Xsqlite3_free(tls, p)
 54098  	return uintptr(0)
 54099  }
 54100  
 54101  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54102  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54103  }
 54104  
 54105  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54106  	var iOfst sqlite3_int64
 54107  	var iEnd sqlite3_int64
 54108  	var szNew sqlite3_int64
 54109  	var pFile uintptr
 54110  	var rc size_t
 54111  
 54112  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54113  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54114  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54115  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54116  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54117  		quotaEnter(tls)
 54118  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54119  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54120  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54121  				(*struct {
 54122  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54123  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54124  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54125  			}
 54126  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54127  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54128  				nmemb = uint64(iEnd-iOfst) / size
 54129  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54130  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54131  			}
 54132  		}
 54133  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54134  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54135  		quotaLeave(tls)
 54136  	} else {
 54137  		pFile = uintptr(0)
 54138  	}
 54139  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54140  
 54141  	if rc < nmemb && pFile != 0 {
 54142  		var nWritten size_t = rc
 54143  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 54144  		if iNewEnd < iEnd {
 54145  			iNewEnd = iEnd
 54146  		}
 54147  		quotaEnter(tls)
 54148  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54149  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 54150  		quotaLeave(tls)
 54151  	}
 54152  	return rc
 54153  }
 54154  
 54155  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 54156  	var rc int32
 54157  	var pFile uintptr
 54158  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54159  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54160  	if pFile != 0 {
 54161  		quotaEnter(tls)
 54162  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54163  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54164  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54165  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54166  				(*struct {
 54167  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 54168  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54169  				quotaRemoveFile(tls, pFile)
 54170  			}
 54171  			quotaGroupDeref(tls, pGroup)
 54172  		}
 54173  		quotaLeave(tls)
 54174  	}
 54175  	sqlite3.Xsqlite3_free(tls, p)
 54176  	return rc
 54177  }
 54178  
 54179  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 54180  	var rc int32
 54181  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54182  	if rc == 0 && doFsync != 0 {
 54183  		rc = libc.Xfsync(tls, func() int32 {
 54184  			if !(libc.X__isthreaded != 0) {
 54185  				return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54186  			}
 54187  			return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54188  		}())
 54189  	}
 54190  	return libc.Bool32(rc != 0)
 54191  }
 54192  
 54193  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 54194  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 54195  }
 54196  
 54197  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 54198  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54199  }
 54200  
 54201  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 54202  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54203  }
 54204  
 54205  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 54206  	return func() int32 {
 54207  		if !(libc.X__isthreaded != 0) {
 54208  			return libc.Bool32(int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_flags)&0x0040 != 0)
 54209  		}
 54210  		return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54211  	}()
 54212  }
 54213  
 54214  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 54215  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54216  	var rc int32
 54217  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54218  		var pGroup uintptr
 54219  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54220  			return -1
 54221  		}
 54222  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54223  		quotaEnter(tls)
 54224  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54225  		quotaLeave(tls)
 54226  	}
 54227  	rc = libc.Xftruncate(tls, func() int32 {
 54228  		if !(libc.X__isthreaded != 0) {
 54229  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54230  		}
 54231  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54232  	}(), szNew)
 54233  	if pFile != 0 && rc == 0 {
 54234  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54235  		quotaEnter(tls)
 54236  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54237  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 54238  		quotaLeave(tls)
 54239  	}
 54240  	return rc
 54241  }
 54242  
 54243  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 54244  	bp := tls.Alloc(128)
 54245  	defer tls.Free(128)
 54246  
 54247  	var rc int32
 54248  
 54249  	rc = libc.Xfstat(tls, func() int32 {
 54250  		if !(libc.X__isthreaded != 0) {
 54251  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54252  		}
 54253  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54254  	}(), bp)
 54255  	if rc == 0 {
 54256  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 54257  	}
 54258  	return rc
 54259  }
 54260  
 54261  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54262  	bp := tls.Alloc(128)
 54263  	defer tls.Free(128)
 54264  
 54265  	var rc int32
 54266  
 54267  	rc = libc.Xfstat(tls, func() int32 {
 54268  		if !(libc.X__isthreaded != 0) {
 54269  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54270  		}
 54271  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54272  	}(), bp)
 54273  	if rc == 0 {
 54274  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 54275  	}
 54276  	return int64(-1)
 54277  }
 54278  
 54279  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54280  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 54281  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 54282  	}
 54283  	return int64(-1)
 54284  }
 54285  
 54286  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 54287  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 54288  	var pos1 int64
 54289  	var pos2 int64
 54290  	var rc int32
 54291  	pos1 = libc.Xftell(tls, f)
 54292  	if pos1 < int64(0) {
 54293  		return int64(-1)
 54294  	}
 54295  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 54296  	if rc != 0 {
 54297  		return int64(-1)
 54298  	}
 54299  	pos2 = libc.Xftell(tls, f)
 54300  	if pos2 < int64(0) {
 54301  		return int64(-1)
 54302  	}
 54303  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 54304  	if rc != 0 {
 54305  		return int64(-1)
 54306  	}
 54307  	return pos2 - pos1
 54308  }
 54309  
 54310  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 54311  	var zFull uintptr
 54312  	var nFull size_t
 54313  	var rc int32
 54314  	var pGroup uintptr
 54315  	var pFile uintptr
 54316  	var pNextFile uintptr
 54317  	var diff int32
 54318  	var c int8
 54319  
 54320  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54321  	if zFull == uintptr(0) {
 54322  		return SQLITE_NOMEM
 54323  	}
 54324  	rc = (*struct {
 54325  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54326  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54327  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54328  	if rc != 0 {
 54329  		sqlite3.Xsqlite3_free(tls, zFull)
 54330  		return rc
 54331  	}
 54332  
 54333  	nFull = libc.Xstrlen(tls, zFull)
 54334  	if nFull > uint64(0) && (int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 54335  		nFull--
 54336  		*(*int8)(unsafe.Pointer(zFull + uintptr(nFull))) = int8(0)
 54337  	}
 54338  
 54339  	quotaEnter(tls)
 54340  	pGroup = quotaGroupFind(tls, zFull)
 54341  	if pGroup != 0 {
 54342  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 54343  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54344  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 54345  			if diff == 0 && (int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 54346  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54347  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54348  				} else {
 54349  					rc = (*struct {
 54350  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 54351  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54352  					quotaRemoveFile(tls, pFile)
 54353  					quotaGroupDeref(tls, pGroup)
 54354  				}
 54355  			}
 54356  		}
 54357  	}
 54358  	quotaLeave(tls)
 54359  	sqlite3.Xsqlite3_free(tls, zFull)
 54360  	return rc
 54361  }
 54362  
 54363  type TclQuotaCallback1 = struct {
 54364  	Finterp  uintptr
 54365  	FpScript uintptr
 54366  }
 54367  
 54368  type TclQuotaCallback = TclQuotaCallback1
 54369  
 54370  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 54371  	bp := tls.Alloc(16)
 54372  	defer tls.Free(16)
 54373  
 54374  	var p uintptr
 54375  	var pEval uintptr
 54376  	var pVarname uintptr
 54377  
 54378  	var rc int32
 54379  
 54380  	p = pArg
 54381  	if p == uintptr(0) {
 54382  		return
 54383  	}
 54384  
 54385  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 54386  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 54387  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 54388  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 54389  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 54390  
 54391  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 54392  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 54393  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 54394  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 54395  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 54396  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 54397  
 54398  	if rc == TCL_OK {
 54399  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 54400  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 54401  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 54402  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 54403  	}
 54404  
 54405  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54406  		var _objPtr uintptr = pEval
 54407  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54408  			tcl.XTclFreeObj(tls, _objPtr)
 54409  		}
 54410  	}
 54411  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 54412  		var _objPtr uintptr = pVarname
 54413  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54414  			tcl.XTclFreeObj(tls, _objPtr)
 54415  		}
 54416  	}
 54417  	if rc != TCL_OK {
 54418  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 54419  	}
 54420  }
 54421  
 54422  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 54423  	var p uintptr = pObj
 54424  	if p != 0 {
 54425  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54426  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 54427  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54428  				tcl.XTclFreeObj(tls, _objPtr)
 54429  			}
 54430  		}
 54431  		sqlite3.Xsqlite3_free(tls, p)
 54432  	}
 54433  }
 54434  
 54435  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54436  	bp := tls.Alloc(4)
 54437  	defer tls.Free(4)
 54438  
 54439  	var zName uintptr
 54440  
 54441  	var rc int32
 54442  
 54443  	if objc != 3 {
 54444  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 54445  		return TCL_ERROR
 54446  	}
 54447  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54448  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54449  		return TCL_ERROR
 54450  	}
 54451  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 54452  		zName = uintptr(0)
 54453  	}
 54454  
 54455  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 54456  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54457  
 54458  	return TCL_OK
 54459  }
 54460  
 54461  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54462  	var rc int32
 54463  
 54464  	if objc != 1 {
 54465  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54466  		return TCL_ERROR
 54467  	}
 54468  
 54469  	rc = sqlite3_quota_shutdown(tls)
 54470  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54471  
 54472  	return TCL_OK
 54473  }
 54474  
 54475  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54476  	bp := tls.Alloc(12)
 54477  	defer tls.Free(12)
 54478  
 54479  	var zPattern uintptr
 54480  
 54481  	var pScript uintptr
 54482  	var rc int32
 54483  	var p uintptr
 54484  
 54485  	var xDestroy uintptr
 54486  	var xCallback uintptr
 54487  
 54488  	if objc != 4 {
 54489  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 54490  		return TCL_ERROR
 54491  	}
 54492  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54493  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54494  		return TCL_ERROR
 54495  	}
 54496  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 54497  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 54498  
 54499  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 54500  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 54501  		if !(p != 0) {
 54502  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 54503  			return TCL_OK
 54504  		}
 54505  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})))
 54506  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 54507  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 54508  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 54509  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 54510  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 54511  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54512  		}{tclQuotaCallback}))
 54513  	} else {
 54514  		p = uintptr(0)
 54515  		xDestroy = uintptr(0)
 54516  		xCallback = uintptr(0)
 54517  	}
 54518  
 54519  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 54520  
 54521  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54522  	return TCL_OK
 54523  }
 54524  
 54525  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54526  	var zFilename uintptr
 54527  	var rc int32
 54528  
 54529  	if objc != 2 {
 54530  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 54531  		return TCL_ERROR
 54532  	}
 54533  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54534  
 54535  	rc = sqlite3_quota_file(tls, zFilename)
 54536  
 54537  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54538  	return TCL_OK
 54539  }
 54540  
 54541  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54542  	bp := tls.Alloc(1008)
 54543  	defer tls.Free(1008)
 54544  
 54545  	var pResult uintptr
 54546  	var pGroupTerm uintptr
 54547  	var pFileTerm uintptr
 54548  	var pGroup uintptr
 54549  	var pFile uintptr
 54550  
 54551  	pResult = tcl.XTcl_NewObj(tls)
 54552  	quotaEnter(tls)
 54553  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 54554  		pGroupTerm = tcl.XTcl_NewObj(tls)
 54555  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54556  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 54557  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54558  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 54559  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54560  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 54561  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 54562  			var i int32
 54563  
 54564  			pFileTerm = tcl.XTcl_NewObj(tls)
 54565  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 54566  			for i = 0; *(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 54567  				if int32(*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 54568  					*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8('/')
 54569  				}
 54570  			}
 54571  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54572  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 54573  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54574  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 54575  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54576  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 54577  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54578  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 54579  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 54580  		}
 54581  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 54582  	}
 54583  	quotaLeave(tls)
 54584  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 54585  	return TCL_OK
 54586  }
 54587  
 54588  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54589  	bp := tls.Alloc(58)
 54590  	defer tls.Free(58)
 54591  
 54592  	var zFilename uintptr
 54593  	var zMode uintptr
 54594  	var p uintptr
 54595  
 54596  	if objc != 3 {
 54597  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 54598  		return TCL_ERROR
 54599  	}
 54600  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54601  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54602  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 54603  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+8, ts+9889, libc.VaList(bp, p))
 54604  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 54605  	return TCL_OK
 54606  }
 54607  
 54608  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54609  	bp := tls.Alloc(8)
 54610  	defer tls.Free(8)
 54611  
 54612  	var p uintptr
 54613  	var zBuf uintptr
 54614  
 54615  	var got size_t
 54616  
 54617  	if objc != 4 {
 54618  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 54619  		return TCL_ERROR
 54620  	}
 54621  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54622  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54623  		return TCL_ERROR
 54624  	}
 54625  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 54626  		return TCL_ERROR
 54627  	}
 54628  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 54629  	if zBuf == uintptr(0) {
 54630  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 54631  		return TCL_ERROR
 54632  	}
 54633  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 54634  	*(*int8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = int8(0)
 54635  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 54636  	sqlite3.Xsqlite3_free(tls, zBuf)
 54637  	return TCL_OK
 54638  }
 54639  
 54640  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54641  	bp := tls.Alloc(8)
 54642  	defer tls.Free(8)
 54643  
 54644  	var p uintptr
 54645  	var zBuf uintptr
 54646  
 54647  	var got size_t
 54648  
 54649  	if objc != 5 {
 54650  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 54651  		return TCL_ERROR
 54652  	}
 54653  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54654  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54655  		return TCL_ERROR
 54656  	}
 54657  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 54658  		return TCL_ERROR
 54659  	}
 54660  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 54661  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 54662  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 54663  	return TCL_OK
 54664  }
 54665  
 54666  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54667  	var p uintptr
 54668  	var rc int32
 54669  
 54670  	if objc != 2 {
 54671  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54672  		return TCL_ERROR
 54673  	}
 54674  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54675  	rc = sqlite3_quota_fclose(tls, p)
 54676  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54677  	return TCL_OK
 54678  }
 54679  
 54680  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54681  	bp := tls.Alloc(4)
 54682  	defer tls.Free(4)
 54683  
 54684  	var p uintptr
 54685  	var rc int32
 54686  	*(*int32)(unsafe.Pointer(bp)) = 0
 54687  
 54688  	if objc != 2 && objc != 3 {
 54689  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 54690  		return TCL_ERROR
 54691  	}
 54692  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54693  	if objc == 3 {
 54694  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54695  			return TCL_ERROR
 54696  		}
 54697  	}
 54698  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 54699  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54700  	return TCL_OK
 54701  }
 54702  
 54703  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54704  	bp := tls.Alloc(20)
 54705  	defer tls.Free(20)
 54706  
 54707  	var p uintptr
 54708  
 54709  	var zWhence uintptr
 54710  	var whence int32
 54711  	var rc int32
 54712  
 54713  	if objc != 4 {
 54714  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 54715  		return TCL_ERROR
 54716  	}
 54717  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54718  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 54719  		return TCL_ERROR
 54720  	}
 54721  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 54722  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 54723  		whence = SEEK_SET
 54724  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 54725  		whence = SEEK_CUR
 54726  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 54727  		whence = SEEK_END
 54728  	} else {
 54729  		tcl.XTcl_AppendResult(tls, interp,
 54730  			libc.VaList(bp, ts+36084, uintptr(0)))
 54731  		return TCL_ERROR
 54732  	}
 54733  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 54734  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54735  	return TCL_OK
 54736  }
 54737  
 54738  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54739  	var p uintptr
 54740  	if objc != 2 {
 54741  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54742  		return TCL_ERROR
 54743  	}
 54744  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54745  	sqlite3_quota_rewind(tls, p)
 54746  	return TCL_OK
 54747  }
 54748  
 54749  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54750  	var p uintptr
 54751  	var x sqlite3_int64
 54752  	if objc != 2 {
 54753  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54754  		return TCL_ERROR
 54755  	}
 54756  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54757  	x = sqlite3_quota_ftell(tls, p)
 54758  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54759  	return TCL_OK
 54760  }
 54761  
 54762  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54763  	bp := tls.Alloc(8)
 54764  	defer tls.Free(8)
 54765  
 54766  	var p uintptr
 54767  	var x sqlite3_int64
 54768  
 54769  	var rc int32
 54770  	if objc != 3 {
 54771  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 54772  		return TCL_ERROR
 54773  	}
 54774  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54775  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54776  		return TCL_ERROR
 54777  	}
 54778  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 54779  	rc = sqlite3_quota_ftruncate(tls, p, x)
 54780  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54781  	return TCL_OK
 54782  }
 54783  
 54784  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54785  	var p uintptr
 54786  	var x sqlite3_int64
 54787  	if objc != 2 {
 54788  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54789  		return TCL_ERROR
 54790  	}
 54791  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54792  	x = sqlite3_quota_file_size(tls, p)
 54793  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54794  	return TCL_OK
 54795  }
 54796  
 54797  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54798  	var p uintptr
 54799  	var x sqlite3_int64
 54800  	if objc != 2 {
 54801  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54802  		return TCL_ERROR
 54803  	}
 54804  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54805  	x = sqlite3_quota_file_truesize(tls, p)
 54806  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54807  	return TCL_OK
 54808  }
 54809  
 54810  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54811  	bp := tls.Alloc(8)
 54812  	defer tls.Free(8)
 54813  
 54814  	var p uintptr
 54815  
 54816  	if objc != 2 {
 54817  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54818  		return TCL_ERROR
 54819  	}
 54820  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54821  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 54822  	sqlite3_quota_file_mtime(tls, p, bp)
 54823  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 54824  	return TCL_OK
 54825  }
 54826  
 54827  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54828  	var zFilename uintptr
 54829  	var rc int32
 54830  	if objc != 2 {
 54831  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 54832  		return TCL_ERROR
 54833  	}
 54834  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54835  	rc = sqlite3_quota_remove(tls, zFilename)
 54836  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54837  	return TCL_OK
 54838  }
 54839  
 54840  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54841  	var zPattern uintptr
 54842  	var zText uintptr
 54843  	var rc int32
 54844  	if objc != 3 {
 54845  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 54846  		return TCL_ERROR
 54847  	}
 54848  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54849  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54850  	rc = quotaStrglob(tls, zPattern, zText)
 54851  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54852  	return TCL_OK
 54853  }
 54854  
 54855  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54856  	var p uintptr
 54857  	var x sqlite3_int64
 54858  	if objc != 2 {
 54859  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54860  		return TCL_ERROR
 54861  	}
 54862  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54863  	x = sqlite3_quota_file_available(tls, p)
 54864  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54865  	return TCL_OK
 54866  }
 54867  
 54868  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54869  	var p uintptr
 54870  	var x int32
 54871  	if objc != 2 {
 54872  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54873  		return TCL_ERROR
 54874  	}
 54875  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54876  	x = sqlite3_quota_ferror(tls, p)
 54877  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 54878  	return TCL_OK
 54879  }
 54880  
 54881  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 54882  	var i int32
 54883  
 54884  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 54885  		FzName uintptr
 54886  		FxProc uintptr
 54887  	}{})); i++ {
 54888  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 54889  	}
 54890  
 54891  	return TCL_OK
 54892  }
 54893  
 54894  var aCmd9 = [21]struct {
 54895  	FzName uintptr
 54896  	FxProc uintptr
 54897  }{
 54898  	{FzName: ts + 36158, FxProc: 0},
 54899  	{FzName: ts + 36183, FxProc: 0},
 54900  	{FzName: ts + 36206, FxProc: 0},
 54901  	{FzName: ts + 36224, FxProc: 0},
 54902  	{FzName: ts + 36243, FxProc: 0},
 54903  	{FzName: ts + 36262, FxProc: 0},
 54904  	{FzName: ts + 36282, FxProc: 0},
 54905  	{FzName: ts + 36302, FxProc: 0},
 54906  	{FzName: ts + 36323, FxProc: 0},
 54907  	{FzName: ts + 36344, FxProc: 0},
 54908  	{FzName: ts + 36365, FxProc: 0},
 54909  	{FzName: ts + 36385, FxProc: 0},
 54910  	{FzName: ts + 36406, FxProc: 0},
 54911  	{FzName: ts + 36426, FxProc: 0},
 54912  	{FzName: ts + 36450, FxProc: 0},
 54913  	{FzName: ts + 36474, FxProc: 0},
 54914  	{FzName: ts + 36502, FxProc: 0},
 54915  	{FzName: ts + 36527, FxProc: 0},
 54916  	{FzName: ts + 36548, FxProc: 0},
 54917  	{FzName: ts + 36567, FxProc: 0},
 54918  	{FzName: ts + 36596, FxProc: 0},
 54919  }
 54920  
 54921  type Circle1 = struct {
 54922  	FaBox [2]struct {
 54923  		Fxmin float64
 54924  		Fxmax float64
 54925  		Fymin float64
 54926  		Fymax float64
 54927  	}
 54928  	Fcenterx     float64
 54929  	Fcentery     float64
 54930  	Fradius      float64
 54931  	FmxArea      float64
 54932  	FeScoreType  int32
 54933  	F__ccgo_pad1 [4]byte
 54934  }
 54935  
 54936  type Circle = Circle1
 54937  type Box = struct {
 54938  	Fxmin float64
 54939  	Fxmax float64
 54940  	Fymin float64
 54941  	Fymax float64
 54942  }
 54943  
 54944  func circle_del(tls *libc.TLS, p uintptr) {
 54945  	sqlite3.Xsqlite3_free(tls, p)
 54946  }
 54947  
 54948  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 54949  	var i int32
 54950  	var pCircle uintptr
 54951  	var xmin float64
 54952  	var xmax float64
 54953  	var ymin float64
 54954  	var ymax float64
 54955  
 54956  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 54957  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 54958  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 54959  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 54960  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 54961  	if pCircle == uintptr(0) {
 54962  		if nCoord != 4 {
 54963  			return SQLITE_ERROR
 54964  		}
 54965  
 54966  		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 {
 54967  			return SQLITE_ERROR
 54968  		}
 54969  
 54970  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 54971  		if !(pCircle != 0) {
 54972  			return SQLITE_NOMEM
 54973  		}
 54974  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 54975  
 54976  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 54977  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 54978  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 54979  
 54980  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 54981  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 54982  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 54983  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 54984  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 54985  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 54986  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 54987  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 54988  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 54989  	}
 54990  
 54991  	for i = 0; i < 4; i++ {
 54992  		var x float64
 54993  		if i&0x01 != 0 {
 54994  			x = xmax
 54995  		} else {
 54996  			x = xmin
 54997  		}
 54998  		var y float64
 54999  		if i&0x02 != 0 {
 55000  			y = ymax
 55001  		} else {
 55002  			y = ymin
 55003  		}
 55004  		var d2 float64
 55005  
 55006  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55007  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55008  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55009  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55010  			return SQLITE_OK
 55011  		}
 55012  	}
 55013  
 55014  	for i = 0; i < 2; i++ {
 55015  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55016  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55017  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55018  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55019  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55020  			return SQLITE_OK
 55021  		}
 55022  	}
 55023  
 55024  	*(*int32)(unsafe.Pointer(pRes)) = 0
 55025  	return SQLITE_OK
 55026  }
 55027  
 55028  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 55029  	var i int32
 55030  	var pCircle uintptr
 55031  	var xmin float64
 55032  	var xmax float64
 55033  	var ymin float64
 55034  	var ymax float64
 55035  	var nWithin int32 = 0
 55036  
 55037  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55038  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55039  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55040  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55041  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 55042  	if pCircle == uintptr(0) {
 55043  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 55044  			return SQLITE_ERROR
 55045  		}
 55046  
 55047  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 55048  			return SQLITE_ERROR
 55049  		}
 55050  
 55051  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55052  		if !(pCircle != 0) {
 55053  			return SQLITE_NOMEM
 55054  		}
 55055  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55056  
 55057  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 55058  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55059  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55060  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55061  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 55062  		} else {
 55063  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 55064  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 55065  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 55066  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 55067  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 55068  			for z != 0 && *(*int8)(unsafe.Pointer(z)) != 0 {
 55069  				if int32(*(*int8)(unsafe.Pointer(z))) == 'r' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55070  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 55071  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'x' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55072  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 55073  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'y' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55074  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 55075  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'e' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55076  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 55077  				} else if int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55078  					z++
 55079  					continue
 55080  				}
 55081  				for int32(*(*int8)(unsafe.Pointer(z))) != 0 && int32(*(*int8)(unsafe.Pointer(z))) != ' ' {
 55082  					z++
 55083  				}
 55084  				for int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55085  					z++
 55086  				}
 55087  			}
 55088  		}
 55089  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 55090  			sqlite3.Xsqlite3_free(tls, pCircle)
 55091  			return SQLITE_NOMEM
 55092  		}
 55093  
 55094  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55095  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55096  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55097  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55098  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55099  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55100  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55101  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55102  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 55103  	}
 55104  
 55105  	for i = 0; i < 4; i++ {
 55106  		var x float64
 55107  		if i&0x01 != 0 {
 55108  			x = xmax
 55109  		} else {
 55110  			x = xmin
 55111  		}
 55112  		var y float64
 55113  		if i&0x02 != 0 {
 55114  			y = ymax
 55115  		} else {
 55116  			y = ymin
 55117  		}
 55118  		var d2 float64
 55119  
 55120  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55121  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55122  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55123  			nWithin++
 55124  		}
 55125  	}
 55126  
 55127  	if nWithin == 0 {
 55128  		for i = 0; i < 2; i++ {
 55129  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55130  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55131  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55132  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55133  				nWithin = 1
 55134  				break
 55135  			}
 55136  		}
 55137  	}
 55138  
 55139  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 55140  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55141  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 55142  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55143  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 55144  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 55145  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 55146  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 55147  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 55148  			}
 55149  		} else {
 55150  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 55151  		}
 55152  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 55153  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55154  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55155  			nWithin = 0
 55156  		}
 55157  	} else {
 55158  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55159  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55160  			nWithin = 0
 55161  		}
 55162  	}
 55163  	if nWithin == 0 {
 55164  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55165  	} else if nWithin >= 4 {
 55166  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55167  	} else {
 55168  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55169  	}
 55170  	return SQLITE_OK
 55171  }
 55172  
 55173  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 55174  	var x0 float64
 55175  	var x1 float64
 55176  	var y0 float64
 55177  	var y1 float64
 55178  	var bx0 float64
 55179  	var bx1 float64
 55180  	var by0 float64
 55181  	var by1 float64
 55182  
 55183  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 55184  		return SQLITE_ERROR
 55185  	}
 55186  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55187  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55188  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55189  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55190  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55191  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55192  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55193  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 55194  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55195  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 55196  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55197  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 55198  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55199  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 55200  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55201  	} else {
 55202  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55203  	}
 55204  	return SQLITE_OK
 55205  }
 55206  
 55207  type Cube1 = struct {
 55208  	Fx      float64
 55209  	Fy      float64
 55210  	Fz      float64
 55211  	Fwidth  float64
 55212  	Fheight float64
 55213  	Fdepth  float64
 55214  }
 55215  
 55216  type Cube = Cube1
 55217  
 55218  func cube_context_free(tls *libc.TLS, p uintptr) {
 55219  	sqlite3.Xsqlite3_free(tls, p)
 55220  }
 55221  
 55222  var gHere int32 = 42
 55223  
 55224  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 55225  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55226  
 55227  	if pCube == uintptr(0) {
 55228  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 55229  			*(*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 {
 55230  			return SQLITE_ERROR
 55231  		}
 55232  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 55233  		if !(pCube != 0) {
 55234  			return SQLITE_NOMEM
 55235  		}
 55236  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55237  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55238  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55239  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 55240  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 55241  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 55242  
 55243  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 55244  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 55245  	}
 55246  
 55247  	*(*int32)(unsafe.Pointer(piRes)) = 0
 55248  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 55249  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 55250  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 55251  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 55252  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 55253  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 55254  		*(*int32)(unsafe.Pointer(piRes)) = 1
 55255  	}
 55256  
 55257  	return SQLITE_OK
 55258  }
 55259  
 55260  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55261  	bp := tls.Alloc(8)
 55262  	defer tls.Free(8)
 55263  
 55264  	var rc int32
 55265  
 55266  	if objc != 2 {
 55267  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55268  		return TCL_ERROR
 55269  	}
 55270  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55271  		return TCL_ERROR
 55272  	}
 55273  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 55274  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55275  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 55276  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55277  	return TCL_OK
 55278  }
 55279  
 55280  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55281  	bp := tls.Alloc(8)
 55282  	defer tls.Free(8)
 55283  
 55284  	var rc int32
 55285  
 55286  	if objc != 2 {
 55287  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55288  		return TCL_ERROR
 55289  	}
 55290  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55291  		return TCL_ERROR
 55292  	}
 55293  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 55294  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55295  	}{circle_geom})), uintptr(0))
 55296  	if rc == SQLITE_OK {
 55297  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 55298  			*(*uintptr)(unsafe.Pointer(&struct {
 55299  				f func(*libc.TLS, uintptr) int32
 55300  			}{circle_query_func})), uintptr(0), uintptr(0))
 55301  	}
 55302  	if rc == SQLITE_OK {
 55303  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 55304  			*(*uintptr)(unsafe.Pointer(&struct {
 55305  				f func(*libc.TLS, uintptr) int32
 55306  			}{bfs_query_func})), uintptr(0), uintptr(0))
 55307  	}
 55308  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55309  	return TCL_OK
 55310  }
 55311  
 55312  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 55313  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 55314  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55315  	}{register_cube_geom})), uintptr(0), uintptr(0))
 55316  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 55317  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55318  	}{register_circle_geom})), uintptr(0), uintptr(0))
 55319  	return TCL_OK
 55320  }
 55321  
 55322  type schema_vtab1 = struct {
 55323  	Fbase sqlite3_vtab
 55324  	Fdb   uintptr
 55325  }
 55326  
 55327  type schema_vtab = schema_vtab1
 55328  type schema_cursor1 = struct {
 55329  	Fbase        sqlite3_vtab_cursor
 55330  	FpDbList     uintptr
 55331  	FpTableList  uintptr
 55332  	FpColumnList uintptr
 55333  	Frowid       int32
 55334  	F__ccgo_pad1 [4]byte
 55335  }
 55336  
 55337  type schema_cursor = schema_cursor1
 55338  
 55339  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 55340  	sqlite3.Xsqlite3_free(tls, pVtab)
 55341  	return 0
 55342  }
 55343  
 55344  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 55345  	var rc int32 = SQLITE_NOMEM
 55346  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 55347  	if pVtab != 0 {
 55348  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})))
 55349  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 55350  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 55351  	}
 55352  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 55353  	return rc
 55354  }
 55355  
 55356  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 55357  	var rc int32 = SQLITE_NOMEM
 55358  	var pCur uintptr
 55359  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 55360  	if pCur != 0 {
 55361  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})))
 55362  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 55363  		rc = SQLITE_OK
 55364  	}
 55365  	return rc
 55366  }
 55367  
 55368  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 55369  	var pCur uintptr = cur
 55370  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 55371  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 55372  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 55373  	sqlite3.Xsqlite3_free(tls, pCur)
 55374  	return SQLITE_OK
 55375  }
 55376  
 55377  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 55378  	var pCur uintptr = cur
 55379  	switch i {
 55380  	case 0:
 55381  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 55382  		break
 55383  	case 1:
 55384  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 55385  		break
 55386  	default:
 55387  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 55388  		break
 55389  	}
 55390  	return SQLITE_OK
 55391  }
 55392  
 55393  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 55394  	var pCur uintptr = cur
 55395  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 55396  	return SQLITE_OK
 55397  }
 55398  
 55399  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 55400  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 55401  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 55402  	return rc
 55403  }
 55404  
 55405  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 55406  	var pCur uintptr = cur
 55407  	return func() int32 {
 55408  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 55409  			return 0
 55410  		}
 55411  		return 1
 55412  	}()
 55413  }
 55414  
 55415  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 55416  	bp := tls.Alloc(24)
 55417  	defer tls.Free(24)
 55418  
 55419  	var rc int32
 55420  	var pCur uintptr
 55421  	var pVtab uintptr
 55422  	var zSql uintptr
 55423  	var pDbList uintptr
 55424  	rc = SQLITE_OK
 55425  	pCur = cur
 55426  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 55427  	zSql = uintptr(0)
 55428  
 55429  __1:
 55430  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 55431  		goto __2
 55432  	}
 55433  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 55434  		goto __3
 55435  	}
 55436  	goto next_exit
 55437  __3:
 55438  	;
 55439  __4:
 55440  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 55441  		goto __5
 55442  	}
 55443  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 55444  		goto __6
 55445  	}
 55446  	goto next_exit
 55447  __6:
 55448  	;
 55449  __7:
 55450  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 55451  		goto __8
 55452  	}
 55453  	rc = finalize(tls, pCur+8)
 55454  	goto next_exit
 55455  	goto __7
 55456  __8:
 55457  	;
 55458  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 55459  		goto __9
 55460  	}
 55461  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 55462  		ts+36768, 0)
 55463  	goto __10
 55464  __9:
 55465  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 55466  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 55467  		ts+36823,
 55468  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 55469  __10:
 55470  	;
 55471  	if !!(zSql != 0) {
 55472  		goto __11
 55473  	}
 55474  	rc = SQLITE_NOMEM
 55475  	goto next_exit
 55476  __11:
 55477  	;
 55478  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 55479  	sqlite3.Xsqlite3_free(tls, zSql)
 55480  	if !(rc != SQLITE_OK) {
 55481  		goto __12
 55482  	}
 55483  	goto next_exit
 55484  __12:
 55485  	;
 55486  	goto __4
 55487  __5:
 55488  	;
 55489  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 55490  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 55491  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 55492  
 55493  	if !!(zSql != 0) {
 55494  		goto __13
 55495  	}
 55496  	rc = SQLITE_NOMEM
 55497  	goto next_exit
 55498  __13:
 55499  	;
 55500  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 55501  	sqlite3.Xsqlite3_free(tls, zSql)
 55502  	if !(rc != SQLITE_OK) {
 55503  		goto __14
 55504  	}
 55505  	goto next_exit
 55506  __14:
 55507  	;
 55508  	goto __1
 55509  __2:
 55510  	;
 55511  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 55512  
 55513  next_exit:
 55514  	return rc
 55515  }
 55516  
 55517  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 55518  	var rc int32
 55519  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 55520  	var pCur uintptr = pVtabCursor
 55521  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 55522  	finalize(tls, pCur+16)
 55523  	finalize(tls, pCur+24)
 55524  	finalize(tls, pCur+8)
 55525  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+8, uintptr(0))
 55526  	return func() int32 {
 55527  		if rc == SQLITE_OK {
 55528  			return schemaNext(tls, pVtabCursor)
 55529  		}
 55530  		return rc
 55531  	}()
 55532  }
 55533  
 55534  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 55535  	return SQLITE_OK
 55536  }
 55537  
 55538  var schemaModule = sqlite3_module{
 55539  	FxCreate:     0,
 55540  	FxConnect:    0,
 55541  	FxBestIndex:  0,
 55542  	FxDisconnect: 0,
 55543  	FxDestroy:    0,
 55544  	FxOpen:       0,
 55545  	FxClose:      0,
 55546  	FxFilter:     0,
 55547  	FxNext:       0,
 55548  	FxEof:        0,
 55549  	FxColumn:     0,
 55550  	FxRowid:      0,
 55551  }
 55552  
 55553  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 55554  	bp := tls.Alloc(8)
 55555  	defer tls.Free(8)
 55556  
 55557  	if objc != 2 {
 55558  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55559  		return TCL_ERROR
 55560  	}
 55561  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55562  		return TCL_ERROR
 55563  	}
 55564  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 55565  	return TCL_OK
 55566  }
 55567  
 55568  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 55569  	var i int32
 55570  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 55571  		FzName      uintptr
 55572  		FxProc      uintptr
 55573  		FclientData uintptr
 55574  	}{})); i++ {
 55575  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 55576  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 55577  	}
 55578  	return TCL_OK
 55579  }
 55580  
 55581  var aObjCmd12 = [1]struct {
 55582  	FzName      uintptr
 55583  	FxProc      uintptr
 55584  	FclientData uintptr
 55585  }{
 55586  	{FzName: ts + 36922, FxProc: 0},
 55587  }
 55588  
 55589  type SqlMessage1 = struct {
 55590  	Fop           int32
 55591  	F__ccgo_pad1  [4]byte
 55592  	FpDb          uintptr
 55593  	FpStmt        uintptr
 55594  	FerrCode      int32
 55595  	F__ccgo_pad2  [4]byte
 55596  	FzIn          uintptr
 55597  	FnByte        int32
 55598  	F__ccgo_pad3  [4]byte
 55599  	FzOut         uintptr
 55600  	FpNext        uintptr
 55601  	FpPrev        uintptr
 55602  	FclientMutex  pthread_mutex_t
 55603  	FclientWakeup pthread_cond_t
 55604  }
 55605  
 55606  type SqlMessage = SqlMessage1
 55607  
 55608  type ServerState = struct {
 55609  	FqueueMutex   pthread_mutex_t
 55610  	FserverMutex  pthread_mutex_t
 55611  	FserverWakeup pthread_cond_t
 55612  	FserverHalt   int32
 55613  	F__ccgo_pad1  [4]byte
 55614  	FpQueueHead   uintptr
 55615  	FpQueueTail   uintptr
 55616  }
 55617  
 55618  var g4 = ServerState{}
 55619  
 55620  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 55621  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 55622  	libc.Xpthread_cond_init(tls, pMsg+80, uintptr(0))
 55623  
 55624  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 55625  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 55626  	if g4.FpQueueHead == uintptr(0) {
 55627  		g4.FpQueueTail = pMsg
 55628  	} else {
 55629  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 55630  	}
 55631  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 55632  	g4.FpQueueHead = pMsg
 55633  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 55634  
 55635  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 55636  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+16)
 55637  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 55638  		libc.Xpthread_cond_wait(tls, pMsg+80, pMsg+72)
 55639  	}
 55640  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 55641  
 55642  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 55643  	libc.Xpthread_cond_destroy(tls, pMsg+80)
 55644  }
 55645  
 55646  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 55647  	bp := tls.Alloc(88)
 55648  	defer tls.Free(88)
 55649  
 55650  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 55651  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 55652  	sendToServer(tls, bp)
 55653  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 55654  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55655  }
 55656  
 55657  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 55658  	bp := tls.Alloc(88)
 55659  	defer tls.Free(88)
 55660  
 55661  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 55662  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 55663  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 55664  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 55665  	sendToServer(tls, bp)
 55666  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 55667  	if pzTail != 0 {
 55668  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 55669  	}
 55670  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55671  }
 55672  
 55673  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 55674  	bp := tls.Alloc(88)
 55675  	defer tls.Free(88)
 55676  
 55677  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 55678  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55679  	sendToServer(tls, bp)
 55680  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55681  }
 55682  
 55683  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 55684  	bp := tls.Alloc(88)
 55685  	defer tls.Free(88)
 55686  
 55687  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 55688  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55689  	sendToServer(tls, bp)
 55690  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55691  }
 55692  
 55693  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 55694  	bp := tls.Alloc(88)
 55695  	defer tls.Free(88)
 55696  
 55697  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 55698  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55699  	sendToServer(tls, bp)
 55700  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55701  }
 55702  
 55703  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 55704  	bp := tls.Alloc(88)
 55705  	defer tls.Free(88)
 55706  
 55707  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 55708  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 55709  	sendToServer(tls, bp)
 55710  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55711  }
 55712  
 55713  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 55714  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+8) != 0 {
 55715  		return uintptr(0)
 55716  	}
 55717  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 55718  	for !(g4.FserverHalt != 0) {
 55719  		var pMsg uintptr
 55720  
 55721  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 55722  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 55723  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+16, uintptr(unsafe.Pointer(&g4)))
 55724  		}
 55725  		pMsg = g4.FpQueueTail
 55726  		if pMsg != 0 {
 55727  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 55728  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 55729  			} else {
 55730  				g4.FpQueueHead = uintptr(0)
 55731  			}
 55732  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 55733  		}
 55734  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 55735  		if pMsg == uintptr(0) {
 55736  			break
 55737  		}
 55738  
 55739  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 55740  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 55741  		case MSG_Open:
 55742  			{
 55743  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 55744  				break
 55745  
 55746  			}
 55747  		case MSG_Prepare:
 55748  			{
 55749  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 55750  					pMsg+16, pMsg+48)
 55751  				break
 55752  
 55753  			}
 55754  		case MSG_Step:
 55755  			{
 55756  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55757  				break
 55758  
 55759  			}
 55760  		case MSG_Reset:
 55761  			{
 55762  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55763  				break
 55764  
 55765  			}
 55766  		case MSG_Finalize:
 55767  			{
 55768  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55769  				break
 55770  
 55771  			}
 55772  		case MSG_Close:
 55773  			{
 55774  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 55775  				break
 55776  
 55777  			}
 55778  		}
 55779  
 55780  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 55781  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 55782  		libc.Xpthread_cond_signal(tls, pMsg+80)
 55783  	}
 55784  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55785  	return uintptr(0)
 55786  }
 55787  
 55788  func sqlite3_server_start(tls *libc.TLS) {
 55789  	bp := tls.Alloc(8)
 55790  	defer tls.Free(8)
 55791  
 55792  	var rc int32
 55793  	g4.FserverHalt = 0
 55794  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 55795  		f func(*libc.TLS, uintptr) uintptr
 55796  	}{sqlite3_server})), uintptr(0))
 55797  	if rc == 0 {
 55798  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 55799  	}
 55800  }
 55801  
 55802  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 55803  	var p uintptr = sqlite3_server(tls, uintptr(0))
 55804  	*(*int32)(unsafe.Pointer(pnDecr))--
 55805  	return p
 55806  }
 55807  
 55808  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 55809  	bp := tls.Alloc(8)
 55810  	defer tls.Free(8)
 55811  
 55812  	var rc int32
 55813  	g4.FserverHalt = 0
 55814  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 55815  		f func(*libc.TLS, uintptr) uintptr
 55816  	}{serverWrapper})), pnDecr)
 55817  	if rc == 0 {
 55818  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 55819  	}
 55820  }
 55821  
 55822  func sqlite3_server_stop(tls *libc.TLS) {
 55823  	g4.FserverHalt = 1
 55824  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+16)
 55825  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55826  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55827  }
 55828  
 55829  type SuperlockBusy1 = struct {
 55830  	FxBusy       uintptr
 55831  	FpBusyArg    uintptr
 55832  	FnBusy       int32
 55833  	F__ccgo_pad1 [4]byte
 55834  }
 55835  
 55836  type SuperlockBusy = SuperlockBusy1
 55837  
 55838  type Superlock1 = struct {
 55839  	Fdb          uintptr
 55840  	FbWal        int32
 55841  	F__ccgo_pad1 [4]byte
 55842  }
 55843  
 55844  type Superlock = Superlock1
 55845  
 55846  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 55847  	var pBusy uintptr = pCtx
 55848  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 55849  		return 0
 55850  	}
 55851  	return (*struct {
 55852  		f func(*libc.TLS, uintptr, int32) int32
 55853  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 55854  }
 55855  
 55856  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 55857  	bp := tls.Alloc(8)
 55858  	defer tls.Free(8)
 55859  
 55860  	var rc int32
 55861  
 55862  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 55863  	if rc != SQLITE_OK {
 55864  		return rc
 55865  	}
 55866  
 55867  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 55868  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 55869  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 55870  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 55871  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 55872  		}
 55873  	}
 55874  
 55875  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 55876  }
 55877  
 55878  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 55879  	var rc int32
 55880  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 55881  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 55882  		rc = (*struct {
 55883  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55884  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 55885  	}
 55886  	return rc
 55887  }
 55888  
 55889  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 55890  	bp := tls.Alloc(16)
 55891  	defer tls.Free(16)
 55892  
 55893  	var rc int32
 55894  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 55895  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 55896  
 55897  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 55898  	if rc != SQLITE_OK {
 55899  		return rc
 55900  	}
 55901  
 55902  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 55903  	if rc != SQLITE_OK {
 55904  		return rc
 55905  	}
 55906  
 55907  	rc = (*struct {
 55908  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 55909  	})(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)
 55910  	if rc != SQLITE_OK {
 55911  		return rc
 55912  	}
 55913  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32))
 55914  
 55915  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 55916  	return rc
 55917  }
 55918  
 55919  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 55920  	bp := tls.Alloc(8)
 55921  	defer tls.Free(8)
 55922  
 55923  	var p uintptr = pLock
 55924  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 55925  		var rc int32
 55926  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 55927  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 55928  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 55929  		if rc == SQLITE_OK {
 55930  			(*struct {
 55931  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55932  			})(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)
 55933  			(*struct {
 55934  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55935  			})(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)
 55936  		}
 55937  	}
 55938  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 55939  	sqlite3.Xsqlite3_free(tls, p)
 55940  }
 55941  
 55942  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 55943  	bp := tls.Alloc(24)
 55944  	defer tls.Free(24)
 55945  
 55946  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 55947  	var rc int32
 55948  	var pLock uintptr
 55949  
 55950  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 55951  	if !(pLock != 0) {
 55952  		return SQLITE_NOMEM
 55953  	}
 55954  	libc.Xmemset(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})))
 55955  
 55956  	rc = sqlite3.Xsqlite3_open_v2(tls,
 55957  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 55958  
 55959  	if rc == SQLITE_OK {
 55960  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 55961  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 55962  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 55963  			f func(*libc.TLS, uintptr, int32) int32
 55964  		}{superlockBusyHandler})), bp)
 55965  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 55966  	}
 55967  
 55968  	if rc == SQLITE_OK {
 55969  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 55970  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 55971  			if rc == SQLITE_OK {
 55972  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 55973  			}
 55974  		}
 55975  	}
 55976  
 55977  	if rc != SQLITE_OK {
 55978  		sqlite3demo_superunlock(tls, pLock)
 55979  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 55980  	} else {
 55981  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 55982  	}
 55983  
 55984  	return rc
 55985  }
 55986  
 55987  type InterpAndScript1 = struct {
 55988  	Finterp  uintptr
 55989  	FpScript uintptr
 55990  }
 55991  
 55992  type InterpAndScript = InterpAndScript1
 55993  
 55994  func superunlock_del(tls *libc.TLS, cd ClientData) {
 55995  	sqlite3demo_superunlock(tls, cd)
 55996  }
 55997  
 55998  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 55999  	if objc != 1 {
 56000  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 56001  		return TCL_ERROR
 56002  	}
 56003  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 56004  	return TCL_OK
 56005  }
 56006  
 56007  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 56008  	bp := tls.Alloc(4)
 56009  	defer tls.Free(4)
 56010  
 56011  	var p uintptr = pCtx
 56012  	var pEval uintptr
 56013  	*(*int32)(unsafe.Pointer(bp)) = 0
 56014  
 56015  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 56016  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 56017  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 56018  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 56019  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 56020  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56021  		var _objPtr uintptr = pEval
 56022  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56023  			tcl.XTclFreeObj(tls, _objPtr)
 56024  		}
 56025  	}
 56026  
 56027  	return *(*int32)(unsafe.Pointer(bp))
 56028  }
 56029  
 56030  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56031  	bp := tls.Alloc(40)
 56032  	defer tls.Free(40)
 56033  
 56034  	var zPath uintptr
 56035  	var zVfs uintptr = uintptr(0)
 56036  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 56037  	var xBusy uintptr = uintptr(0)
 56038  	var rc int32
 56039  
 56040  	if objc < 3 || objc > 5 {
 56041  		tcl.XTcl_WrongNumArgs(tls,
 56042  			interp, 1, objv, ts+36970)
 56043  		return TCL_ERROR
 56044  	}
 56045  
 56046  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56047  
 56048  	if objc > 3 {
 56049  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56050  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 56051  			zVfs = uintptr(0)
 56052  		}
 56053  	}
 56054  	if objc > 4 {
 56055  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 56056  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 56057  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 56058  			f func(*libc.TLS, uintptr, int32) int32
 56059  		}{superlock_busy}))
 56060  	}
 56061  
 56062  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 56063  
 56064  	if rc != SQLITE_OK {
 56065  		tcl.XTcl_ResetResult(tls, interp)
 56066  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 56067  		return TCL_ERROR
 56068  	}
 56069  
 56070  	tcl.XTcl_CreateObjCommand(tls,
 56071  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 56072  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56073  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 56074  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 56075  	return TCL_OK
 56076  }
 56077  
 56078  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 56079  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 56080  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56081  	}{superlock_cmd})), uintptr(0), uintptr(0))
 56082  	return TCL_OK
 56083  }
 56084  
 56085  type TestSyscallGlobal = struct {
 56086  	FbPersist         int32
 56087  	FnCount           int32
 56088  	FnFail            int32
 56089  	Fpgsz             int32
 56090  	Forig_getpagesize sqlite3_syscall_ptr
 56091  }
 56092  
 56093  var gSyscall = TestSyscallGlobal{}
 56094  
 56095  type TestSyscallArray = struct {
 56096  	FzName         uintptr
 56097  	FxTest         sqlite3_syscall_ptr
 56098  	FxOrig         sqlite3_syscall_ptr
 56099  	Fdefault_errno int32
 56100  	Fcustom_errno  int32
 56101  }
 56102  
 56103  var aSyscall = [19]TestSyscallArray{
 56104  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 56105  	{FzName: ts + 9490, FxTest: 0},
 56106  	{FzName: ts + 37038, FxTest: 0},
 56107  	{FzName: ts + 37045, FxTest: 0},
 56108  	{FzName: ts + 37052, FxTest: 0},
 56109  	{FzName: ts + 37057, FxTest: 0},
 56110  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 56111  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 56112  	{FzName: ts + 25126, FxTest: 0},
 56113  	{FzName: ts + 37079, FxTest: 0},
 56114  	{FzName: ts + 37085, FxTest: 0},
 56115  	{FzName: ts + 25131, FxTest: 0},
 56116  	{FzName: ts + 37093, FxTest: 0},
 56117  	{FzName: ts + 37100, FxTest: 0},
 56118  	{FzName: ts + 37109, FxTest: 0},
 56119  	{FzName: ts + 37116, FxTest: 0},
 56120  	{FzName: ts + 29040, FxTest: 0},
 56121  	{FzName: ts + 37126, FxTest: 0},
 56122  	{},
 56123  }
 56124  
 56125  func tsIsFail(tls *libc.TLS) int32 {
 56126  	gSyscall.FnCount--
 56127  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 56128  		gSyscall.FnFail++
 56129  		return 1
 56130  	}
 56131  	return 0
 56132  }
 56133  
 56134  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56135  	var i int32
 56136  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 56137  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56138  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 56139  			continue
 56140  		}
 56141  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 56142  			continue
 56143  		}
 56144  		return aSyscall[i].Fcustom_errno
 56145  	}
 56146  
 56147  	return 0
 56148  }
 56149  
 56150  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56151  	if tsIsFail(tls) != 0 {
 56152  		*(*int32)(unsafe.Pointer(libc.X__errno(tls))) = tsErrno(tls, zFunc)
 56153  		return 1
 56154  	}
 56155  	return 0
 56156  }
 56157  
 56158  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 56159  	if tsIsFailErrno(tls, ts+37033) != 0 {
 56160  		return -1
 56161  	}
 56162  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 56163  }
 56164  
 56165  func ts_close(tls *libc.TLS, fd int32) int32 {
 56166  	if tsIsFail(tls) != 0 {
 56167  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56168  		return -1
 56169  	}
 56170  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56171  }
 56172  
 56173  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 56174  	if tsIsFail(tls) != 0 {
 56175  		return -1
 56176  	}
 56177  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 56178  }
 56179  
 56180  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 56181  	if tsIsFail(tls) != 0 {
 56182  		return uintptr(0)
 56183  	}
 56184  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 56185  }
 56186  
 56187  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 56188  	if tsIsFail(tls) != 0 {
 56189  		return -1
 56190  	}
 56191  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 56192  }
 56193  
 56194  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 56195  	if tsIsFailErrno(tls, ts+37057) != 0 {
 56196  		return -1
 56197  	}
 56198  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 56199  }
 56200  
 56201  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 56202  	if tsIsFailErrno(tls, ts+37063) != 0 {
 56203  		return -1
 56204  	}
 56205  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 56206  }
 56207  
 56208  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 56209  	bp := tls.Alloc(8)
 56210  	defer tls.Free(8)
 56211  
 56212  	var ap va_list
 56213  	_ = ap
 56214  	var pArg uintptr
 56215  	if tsIsFailErrno(tls, ts+37073) != 0 {
 56216  		return -1
 56217  	}
 56218  	ap = va
 56219  	pArg = libc.VaUintptr(&ap)
 56220  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 56221  }
 56222  
 56223  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56224  	if tsIsFailErrno(tls, ts+25126) != 0 {
 56225  		return -1
 56226  	}
 56227  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 56228  }
 56229  
 56230  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56231  	if tsIsFailErrno(tls, ts+37079) != 0 {
 56232  		return -1
 56233  	}
 56234  	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))
 56235  }
 56236  
 56237  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56238  	if tsIsFailErrno(tls, ts+37085) != 0 {
 56239  		return -1
 56240  	}
 56241  	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))
 56242  }
 56243  
 56244  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56245  	if tsIsFailErrno(tls, ts+25131) != 0 {
 56246  		if tsErrno(tls, ts+25131) == EINTR {
 56247  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 56248  		}
 56249  		return -1
 56250  	}
 56251  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 56252  }
 56253  
 56254  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56255  	if tsIsFailErrno(tls, ts+37093) != 0 {
 56256  		return -1
 56257  	}
 56258  	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))
 56259  }
 56260  
 56261  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56262  	if tsIsFailErrno(tls, ts+37100) != 0 {
 56263  		return -1
 56264  	}
 56265  	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))
 56266  }
 56267  
 56268  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 56269  	if tsIsFail(tls) != 0 {
 56270  		return -1
 56271  	}
 56272  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 56273  }
 56274  
 56275  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 56276  	if tsIsFail(tls) != 0 {
 56277  		return tsErrno(tls, ts+37116)
 56278  	}
 56279  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 56280  }
 56281  
 56282  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 56283  	if tsIsFailErrno(tls, ts+29040) != 0 {
 56284  		return libc.UintptrFromInt32(-1)
 56285  	}
 56286  	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)
 56287  }
 56288  
 56289  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 56290  	bp := tls.Alloc(8)
 56291  	defer tls.Free(8)
 56292  
 56293  	var ap va_list
 56294  	_ = ap
 56295  	var pArg uintptr
 56296  	if tsIsFailErrno(tls, ts+37126) != 0 {
 56297  		return libc.UintptrFromInt32(-1)
 56298  	}
 56299  	ap = va
 56300  	pArg = libc.VaUintptr(&ap)
 56301  	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))
 56302  }
 56303  
 56304  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56305  	bp := tls.Alloc(20)
 56306  	defer tls.Free(20)
 56307  
 56308  	var pVfs uintptr
 56309  
 56310  	var i int32
 56311  
 56312  	if objc != 3 {
 56313  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 56314  		return TCL_ERROR
 56315  	}
 56316  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 56317  		return TCL_ERROR
 56318  	}
 56319  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56320  
 56321  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 56322  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56323  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+16)
 56324  		if rc != 0 {
 56325  			return rc
 56326  		}
 56327  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 56328  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 56329  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56330  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 56331  			(*struct {
 56332  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56333  			})(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)
 56334  		}
 56335  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 56336  	}
 56337  
 56338  	return TCL_OK
 56339  }
 56340  
 56341  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56342  	var pVfs uintptr
 56343  	var i int32
 56344  
 56345  	if objc != 2 {
 56346  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56347  		return TCL_ERROR
 56348  	}
 56349  
 56350  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56351  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56352  		if aSyscall[i].FxOrig != 0 {
 56353  			(*struct {
 56354  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56355  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 56356  			aSyscall[i].FxOrig = uintptr(0)
 56357  		}
 56358  	}
 56359  	return TCL_OK
 56360  }
 56361  
 56362  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56363  	bp := tls.Alloc(4)
 56364  	defer tls.Free(4)
 56365  
 56366  	var pVfs uintptr
 56367  	var i int32
 56368  	var rc int32
 56369  
 56370  	if objc != 2 && objc != 3 {
 56371  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56372  		return TCL_ERROR
 56373  	}
 56374  
 56375  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56376  	if objc == 2 {
 56377  		rc = (*struct {
 56378  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56379  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 56380  		for i = 0; aSyscall[i].FzName != 0; i++ {
 56381  			aSyscall[i].FxOrig = uintptr(0)
 56382  		}
 56383  	} else {
 56384  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 56385  		rc = (*struct {
 56386  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56387  		})(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))
 56388  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 56389  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 56390  				continue
 56391  			}
 56392  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 56393  				continue
 56394  			}
 56395  			aSyscall[i].FxOrig = uintptr(0)
 56396  		}
 56397  	}
 56398  	if rc != SQLITE_OK {
 56399  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 56400  		return TCL_ERROR
 56401  	}
 56402  
 56403  	tcl.XTcl_ResetResult(tls, interp)
 56404  	return TCL_OK
 56405  }
 56406  
 56407  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56408  	var pVfs uintptr
 56409  	var x sqlite3_syscall_ptr
 56410  
 56411  	if objc != 3 {
 56412  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56413  		return TCL_ERROR
 56414  	}
 56415  
 56416  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56417  	x = (*struct {
 56418  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56419  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 56420  
 56421  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 56422  	return TCL_OK
 56423  }
 56424  
 56425  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56426  	bp := tls.Alloc(8)
 56427  	defer tls.Free(8)
 56428  
 56429  	*(*int32)(unsafe.Pointer(bp)) = 0
 56430  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 56431  
 56432  	if objc != 2 && objc != 4 {
 56433  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 56434  		return TCL_ERROR
 56435  	}
 56436  
 56437  	if objc == 4 {
 56438  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 56439  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 56440  			return TCL_ERROR
 56441  		}
 56442  	}
 56443  
 56444  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 56445  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 56446  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 56447  	gSyscall.FnFail = 0
 56448  	return TCL_OK
 56449  }
 56450  
 56451  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56452  	bp := tls.Alloc(204)
 56453  	defer tls.Free(204)
 56454  
 56455  	var rc int32
 56456  
 56457  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 56458  		{Fz: ts + 37174, Fi: EACCES},
 56459  		{Fz: ts + 37181, Fi: EINTR},
 56460  		{Fz: ts + 37187, Fi: EIO},
 56461  		{Fz: ts + 37191, Fi: EOVERFLOW},
 56462  		{Fz: ts + 37201, Fi: ENOMEM},
 56463  		{Fz: ts + 37208, Fi: EAGAIN},
 56464  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 56465  		{Fz: ts + 37225, Fi: EBUSY},
 56466  		{Fz: ts + 37231, Fi: EPERM},
 56467  		{Fz: ts + 37237, Fi: EDEADLK},
 56468  		{Fz: ts + 37245, Fi: ENOLCK},
 56469  		{},
 56470  	}
 56471  
 56472  	if objc != 4 {
 56473  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 56474  		return TCL_ERROR
 56475  	}
 56476  
 56477  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56478  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 56479  	if rc != TCL_OK {
 56480  		return rc
 56481  	}
 56482  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56483  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+200)
 56484  	if rc != TCL_OK {
 56485  		return rc
 56486  	}
 56487  
 56488  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 56489  	return TCL_OK
 56490  }
 56491  
 56492  type Errno = struct {
 56493  	Fz           uintptr
 56494  	Fi           int32
 56495  	F__ccgo_pad1 [4]byte
 56496  }
 56497  
 56498  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56499  	var zSys uintptr
 56500  	var pVfs uintptr
 56501  	var pList uintptr
 56502  
 56503  	if objc != 2 {
 56504  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56505  		return TCL_ERROR
 56506  	}
 56507  
 56508  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56509  	pList = tcl.XTcl_NewObj(tls)
 56510  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 56511  	for zSys = (*struct {
 56512  		f func(*libc.TLS, uintptr, uintptr) uintptr
 56513  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 56514  		f func(*libc.TLS, uintptr, uintptr) uintptr
 56515  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 56516  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 56517  	}
 56518  
 56519  	tcl.XTcl_SetObjResult(tls, interp, pList)
 56520  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56521  		var _objPtr uintptr = pList
 56522  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56523  			tcl.XTclFreeObj(tls, _objPtr)
 56524  		}
 56525  	}
 56526  	return TCL_OK
 56527  }
 56528  
 56529  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56530  	var pVfs uintptr
 56531  
 56532  	if objc != 2 {
 56533  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56534  		return TCL_ERROR
 56535  	}
 56536  
 56537  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56538  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 56539  	return TCL_OK
 56540  }
 56541  
 56542  func ts_getpagesize(tls *libc.TLS) int32 {
 56543  	return gSyscall.Fpgsz
 56544  }
 56545  
 56546  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56547  	bp := tls.Alloc(20)
 56548  	defer tls.Free(20)
 56549  
 56550  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56551  
 56552  	if objc != 3 {
 56553  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 56554  		return TCL_ERROR
 56555  	}
 56556  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 56557  		return TCL_ERROR
 56558  	}
 56559  
 56560  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 56561  		if gSyscall.Forig_getpagesize != 0 {
 56562  			(*struct {
 56563  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56564  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 56565  		}
 56566  	} else {
 56567  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 56568  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 56569  			return TCL_ERROR
 56570  		}
 56571  		gSyscall.Forig_getpagesize = (*struct {
 56572  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56573  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 56574  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 56575  		(*struct {
 56576  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56577  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 56578  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 56579  	}
 56580  
 56581  	return TCL_OK
 56582  }
 56583  
 56584  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56585  	bp := tls.Alloc(180)
 56586  	defer tls.Free(180)
 56587  
 56588  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 56589  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56590  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56591  		}{test_syscall_fault}))},
 56592  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56593  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56594  		}{test_syscall_install}))},
 56595  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56596  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56597  		}{test_syscall_uninstall}))},
 56598  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56599  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56600  		}{test_syscall_reset}))},
 56601  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56602  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56603  		}{test_syscall_errno}))},
 56604  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56605  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56606  		}{test_syscall_exists}))},
 56607  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56608  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56609  		}{test_syscall_list}))},
 56610  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56611  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56612  		}{test_syscall_defaultvfs}))},
 56613  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56614  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56615  		}{test_syscall_pagesize}))},
 56616  		{},
 56617  	}
 56618  
 56619  	var rc int32
 56620  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56621  
 56622  	if objc < 2 {
 56623  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 56624  		return TCL_ERROR
 56625  	}
 56626  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 56627  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 56628  		rc = TCL_ERROR
 56629  	} else {
 56630  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56631  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 56632  	}
 56633  	if rc != TCL_OK {
 56634  		return rc
 56635  	}
 56636  	return (*struct {
 56637  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56638  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 56639  }
 56640  
 56641  type SyscallCmd = struct {
 56642  	FzName uintptr
 56643  	FxCmd  uintptr
 56644  }
 56645  
 56646  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 56647  	bp := tls.Alloc(16)
 56648  	defer tls.Free(16)
 56649  
 56650  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 56651  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56652  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56653  		}{test_syscall}))},
 56654  	}
 56655  	var i int32
 56656  
 56657  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 56658  		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))
 56659  	}
 56660  	return TCL_OK
 56661  }
 56662  
 56663  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 56664  	bp := tls.Alloc(80)
 56665  	defer tls.Free(80)
 56666  
 56667  	{
 56668  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 56669  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 56670  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 56671  
 56672  	}
 56673  
 56674  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 56675  		Sqlite3_Init(tls, interp)
 56676  	}
 56677  	Md5_Init(tls, interp)
 56678  	Sqliteconfig_Init(tls, interp)
 56679  	Sqlitetest1_Init(tls, interp)
 56680  	Sqlitetest2_Init(tls, interp)
 56681  	Sqlitetest3_Init(tls, interp)
 56682  	Sqlitetest4_Init(tls, interp)
 56683  	Sqlitetest5_Init(tls, interp)
 56684  	Sqlitetest6_Init(tls, interp)
 56685  	Sqlitetest7_Init(tls, interp)
 56686  	Sqlitetest8_Init(tls, interp)
 56687  	Sqlitetest9_Init(tls, interp)
 56688  	Sqlitetestasync_Init(tls, interp)
 56689  	Sqlitetest_autoext_Init(tls, interp)
 56690  	Sqlitetest_blob_Init(tls, interp)
 56691  	Sqlitetest_demovfs_Init(tls, interp)
 56692  	Sqlitetest_func_Init(tls, interp)
 56693  	Sqlitetest_hexio_Init(tls, interp)
 56694  	Sqlitetest_init_Init(tls, interp)
 56695  	Sqlitetest_malloc_Init(tls, interp)
 56696  	Sqlitetest_mutex_Init(tls, interp)
 56697  	Sqlitetestschema_Init(tls, interp)
 56698  	Sqlitetesttclvar_Init(tls, interp)
 56699  	Sqlitetestfs_Init(tls, interp)
 56700  	SqlitetestThread_Init(tls, interp)
 56701  	SqlitetestOnefile_Init(tls)
 56702  	SqlitetestOsinst_Init(tls, interp)
 56703  	Sqlitetestbackup_Init(tls, interp)
 56704  	Sqlitetestintarray_Init(tls, interp)
 56705  	Sqlitetestvfs_Init(tls, interp)
 56706  	Sqlitetestrtree_Init(tls, interp)
 56707  	Sqlitetestrtreedoc_Init(tls, interp)
 56708  	Sqlitequota_Init(tls, interp)
 56709  	Sqlitemultiplex_Init(tls, interp)
 56710  	SqliteSuperlock_Init(tls, interp)
 56711  	SqlitetestSyscall_Init(tls, interp)
 56712  	TestSession_Init(tls, interp)
 56713  	Fts5tcl_Init(tls, interp)
 56714  	SqliteRbu_Init(tls, interp)
 56715  	Sqlitetesttcl_Init(tls, interp)
 56716  
 56717  	TestExpert_Init(tls, interp)
 56718  	Sqlitetest_window_Init(tls, interp)
 56719  	Sqlitetestvdbecov_Init(tls, interp)
 56720  
 56721  	tcl.XTcl_CreateObjCommand(tls,
 56722  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 56723  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56724  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 56725  	return uintptr(0)
 56726  }
 56727  
 56728  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56729  	var slave uintptr
 56730  	if objc != 2 {
 56731  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 56732  		return TCL_ERROR
 56733  	}
 56734  
 56735  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56736  	if !(slave != 0) {
 56737  		return TCL_ERROR
 56738  	}
 56739  
 56740  	sqlite3TestInit(tls, slave)
 56741  	return TCL_OK
 56742  }
 56743  
 56744  type tclvar_vtab1 = struct {
 56745  	Fbase   sqlite3_vtab
 56746  	Finterp uintptr
 56747  }
 56748  
 56749  type tclvar_vtab = tclvar_vtab1
 56750  type tclvar_cursor1 = struct {
 56751  	Fbase   sqlite3_vtab_cursor
 56752  	FpList1 uintptr
 56753  	FpList2 uintptr
 56754  	Fi1     int32
 56755  	Fi2     int32
 56756  }
 56757  
 56758  type tclvar_cursor = tclvar_cursor1
 56759  
 56760  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56761  	var pVtab uintptr
 56762  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 56763  	if pVtab == uintptr(0) {
 56764  		return SQLITE_NOMEM
 56765  	}
 56766  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 56767  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 56768  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 56769  	return SQLITE_OK
 56770  }
 56771  
 56772  var zSchema = *(*[100]int8)(unsafe.Pointer(ts + 37439))
 56773  
 56774  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 56775  	sqlite3.Xsqlite3_free(tls, pVtab)
 56776  	return SQLITE_OK
 56777  }
 56778  
 56779  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56780  	var pCur uintptr
 56781  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 56782  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 56783  	return SQLITE_OK
 56784  }
 56785  
 56786  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 56787  	var pCur uintptr = cur
 56788  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 56789  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56790  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 56791  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56792  				tcl.XTclFreeObj(tls, _objPtr)
 56793  			}
 56794  		}
 56795  	}
 56796  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 56797  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56798  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56799  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56800  				tcl.XTclFreeObj(tls, _objPtr)
 56801  			}
 56802  		}
 56803  	}
 56804  	sqlite3.Xsqlite3_free(tls, pCur)
 56805  	return SQLITE_OK
 56806  }
 56807  
 56808  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 56809  	bp := tls.Alloc(4)
 56810  	defer tls.Free(4)
 56811  
 56812  	var p uintptr
 56813  
 56814  	if pObj != 0 {
 56815  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 56816  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 56817  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 56818  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 56819  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 56820  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56821  				var _objPtr uintptr = p
 56822  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56823  					tcl.XTclFreeObj(tls, _objPtr)
 56824  				}
 56825  			}
 56826  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 56827  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 56828  
 56829  		} else {
 56830  			*(*int32)(unsafe.Pointer(bp)) = 0
 56831  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 56832  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 56833  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 56834  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56835  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56836  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56837  						tcl.XTclFreeObj(tls, _objPtr)
 56838  					}
 56839  				}
 56840  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 56841  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 56842  				return 0
 56843  			}
 56844  		}
 56845  	}
 56846  
 56847  	return 1
 56848  }
 56849  
 56850  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 56851  	bp := tls.Alloc(16)
 56852  	defer tls.Free(16)
 56853  
 56854  	*(*int32)(unsafe.Pointer(bp)) = 0
 56855  	var ok int32 = 0
 56856  
 56857  	var pCur uintptr = cur
 56858  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 56859  
 56860  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 56861  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 56862  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 56863  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 56864  		if !(ok != 0) {
 56865  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 56866  		}
 56867  	}
 56868  
 56869  	return 0
 56870  }
 56871  
 56872  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56873  	var pCur uintptr = pVtabCursor
 56874  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 56875  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 56876  
 56877  	var zEq uintptr = ts + 584
 56878  	var zMatch uintptr = ts + 584
 56879  	var zGlob uintptr = ts + 584
 56880  	var zRegexp uintptr = ts + 584
 56881  	var zLike uintptr = ts + 584
 56882  	var i int32
 56883  
 56884  	for i = 0; *(*int8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 56885  		switch int32(*(*int8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 56886  		case 'e':
 56887  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56888  			break
 56889  		case 'm':
 56890  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56891  			break
 56892  		case 'g':
 56893  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56894  			break
 56895  		case 'r':
 56896  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56897  			break
 56898  		case 'l':
 56899  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56900  			break
 56901  		default:
 56902  		}
 56903  	}
 56904  
 56905  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 56906  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 56907  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 56908  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 56909  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 56910  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 56911  
 56912  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 56913  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 56914  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56915  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 56916  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56917  				tcl.XTclFreeObj(tls, _objPtr)
 56918  			}
 56919  		}
 56920  	}
 56921  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 56922  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56923  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56924  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56925  				tcl.XTclFreeObj(tls, _objPtr)
 56926  			}
 56927  		}
 56928  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 56929  	}
 56930  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 56931  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 56932  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 56933  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 56934  
 56935  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 56936  		var _objPtr uintptr = p
 56937  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56938  			tcl.XTclFreeObj(tls, _objPtr)
 56939  		}
 56940  	}
 56941  	return tclvarNext(tls, pVtabCursor)
 56942  }
 56943  
 56944  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 56945  	bp := tls.Alloc(32)
 56946  	defer tls.Free(32)
 56947  
 56948  	var z1 uintptr
 56949  	var z2 uintptr = ts + 584
 56950  	var pCur uintptr = cur
 56951  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 56952  
 56953  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 56954  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 56955  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 56956  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 56957  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 56958  	}
 56959  	switch i {
 56960  	case 0:
 56961  		{
 56962  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 56963  			break
 56964  
 56965  		}
 56966  	case 1:
 56967  		{
 56968  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 56969  			break
 56970  
 56971  		}
 56972  	case 2:
 56973  		{
 56974  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 56975  				if *(*int8)(unsafe.Pointer(z2)) != 0 {
 56976  					return z2
 56977  				}
 56978  				return uintptr(0)
 56979  			}(), TCL_GLOBAL_ONLY)
 56980  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 56981  			break
 56982  
 56983  		}
 56984  	case 3:
 56985  		{
 56986  			var z3 uintptr
 56987  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 56988  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 56989  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 56990  			} else {
 56991  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 56992  			}
 56993  			break
 56994  
 56995  		}
 56996  	}
 56997  	return SQLITE_OK
 56998  }
 56999  
 57000  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 57001  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 57002  	return SQLITE_OK
 57003  }
 57004  
 57005  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 57006  	var pCur uintptr = cur
 57007  	return func() int32 {
 57008  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57009  			return 0
 57010  		}
 57011  		return 1
 57012  	}()
 57013  }
 57014  
 57015  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x int8) int32 {
 57016  	var i int32
 57017  	for i = 0; *(*int8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 57018  		if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 57019  			return 1
 57020  		}
 57021  	}
 57022  	*(*int8)(unsafe.Pointer(zStr + uintptr(i))) = x
 57023  	*(*int8)(unsafe.Pointer(zStr + uintptr(i+1))) = int8(0)
 57024  	return 0
 57025  }
 57026  
 57027  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 57028  	bp := tls.Alloc(4)
 57029  	defer tls.Free(4)
 57030  
 57031  	var rc int32
 57032  	*(*int32)(unsafe.Pointer(bp)) = 0
 57033  	var pRes uintptr
 57034  	rc = tcl.XTcl_Eval(tls, interp,
 57035  		ts+37576)
 57036  	if rc == TCL_OK {
 57037  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 57038  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 57039  	}
 57040  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 57041  }
 57042  
 57043  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 57044  	var pTab uintptr = tab
 57045  	var ii int32
 57046  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 57047  	var iStr int32 = 0
 57048  
 57049  	if zStr == uintptr(0) {
 57050  		return SQLITE_NOMEM
 57051  	}
 57052  	*(*int8)(unsafe.Pointer(zStr)) = int8(0)
 57053  
 57054  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 57055  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 57056  		var pUsage uintptr
 57057  
 57058  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 57059  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 57060  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57061  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('e')) {
 57062  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57063  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 57064  				}
 57065  			}
 57066  
 57067  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57068  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('m')) {
 57069  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57070  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 57071  				}
 57072  			}
 57073  
 57074  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57075  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('g')) {
 57076  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57077  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57078  				}
 57079  			}
 57080  
 57081  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57082  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('r')) {
 57083  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57084  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57085  				}
 57086  			}
 57087  
 57088  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57089  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('l')) {
 57090  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57091  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57092  				}
 57093  			}
 57094  		}
 57095  	}
 57096  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 57097  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 57098  
 57099  	return SQLITE_OK
 57100  }
 57101  
 57102  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 57103  	var pTab uintptr = tab
 57104  	if argc == 1 {
 57105  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57106  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 57107  		return SQLITE_OK
 57108  	}
 57109  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 57110  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57111  		var zName uintptr
 57112  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 57113  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 57114  			return SQLITE_ERROR
 57115  		}
 57116  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 57117  		if zValue != 0 {
 57118  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57119  		} else {
 57120  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 57121  		}
 57122  		return SQLITE_OK
 57123  	}
 57124  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 57125  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 57126  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57127  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 57128  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57129  
 57130  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 57131  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 57132  		}
 57133  		if zValue != uintptr(0) {
 57134  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57135  		}
 57136  		return SQLITE_OK
 57137  	}
 57138  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 57139  	return SQLITE_ERROR
 57140  }
 57141  
 57142  var tclvarModule = sqlite3_module{
 57143  	FxCreate:     0,
 57144  	FxConnect:    0,
 57145  	FxBestIndex:  0,
 57146  	FxDisconnect: 0,
 57147  	FxDestroy:    0,
 57148  	FxOpen:       0,
 57149  	FxClose:      0,
 57150  	FxFilter:     0,
 57151  	FxNext:       0,
 57152  	FxEof:        0,
 57153  	FxColumn:     0,
 57154  	FxRowid:      0,
 57155  	FxUpdate:     0,
 57156  }
 57157  
 57158  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57159  	bp := tls.Alloc(8)
 57160  	defer tls.Free(8)
 57161  
 57162  	var rc int32 = TCL_OK
 57163  
 57164  	if objc != 2 {
 57165  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 57166  		return TCL_ERROR
 57167  	}
 57168  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 57169  		return TCL_ERROR
 57170  	}
 57171  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 57172  	rc = tcl.XTcl_Eval(tls, interp,
 57173  		ts+37703)
 57174  	return rc
 57175  }
 57176  
 57177  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 57178  	var i int32
 57179  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 57180  		FzName      uintptr
 57181  		FxProc      uintptr
 57182  		FclientData uintptr
 57183  	}{})); i++ {
 57184  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 57185  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 57186  	}
 57187  	return TCL_OK
 57188  }
 57189  
 57190  var aObjCmd13 = [1]struct {
 57191  	FzName      uintptr
 57192  	FxProc      uintptr
 57193  	FclientData uintptr
 57194  }{
 57195  	{FzName: ts + 38239, FxProc: 0},
 57196  }
 57197  
 57198  type SqlThread1 = struct {
 57199  	Fparent   Tcl_ThreadId
 57200  	Finterp   uintptr
 57201  	FzScript  uintptr
 57202  	FzVarname uintptr
 57203  }
 57204  
 57205  type SqlThread = SqlThread1
 57206  
 57207  type EvalEvent1 = struct {
 57208  	Fbase    Tcl_Event
 57209  	FzScript uintptr
 57210  	Finterp  uintptr
 57211  }
 57212  
 57213  type EvalEvent = EvalEvent1
 57214  
 57215  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 57216  	var rc int32
 57217  	var p uintptr = evPtr
 57218  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 57219  	if rc != TCL_OK {
 57220  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 57221  	}
 57222  	_ = flags
 57223  	return 1
 57224  }
 57225  
 57226  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 57227  	bp := tls.Alloc(4)
 57228  	defer tls.Free(4)
 57229  
 57230  	var pEvent uintptr
 57231  	var zMsg uintptr
 57232  
 57233  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 57234  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 57235  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57236  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57237  		f func(*libc.TLS, uintptr, int32) int32
 57238  	}{tclScriptEvent}))
 57239  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57240  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1))
 57241  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57242  
 57243  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57244  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57245  }
 57246  
 57247  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 57248  	var interp uintptr
 57249  	var pRes uintptr
 57250  	var pList uintptr
 57251  	var rc int32
 57252  	var p uintptr = pSqlThread
 57253  
 57254  	interp = tcl.XTcl_CreateInterp(tls)
 57255  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57256  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57257  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57258  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57259  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57260  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 57261  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57262  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57263  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57264  	tcl.XTcl_CreateObjCommand(tls, interp,
 57265  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57266  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57267  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57268  	tcl.XTcl_CreateObjCommand(tls, interp,
 57269  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57270  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57271  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57272  	Sqlitetest1_Init(tls, interp)
 57273  	Sqlitetest_mutex_Init(tls, interp)
 57274  	Sqlite3_Init(tls, interp)
 57275  
 57276  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 57277  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 57278  	pList = tcl.XTcl_NewObj(tls)
 57279  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57280  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 57281  
 57282  	if rc != TCL_OK {
 57283  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 57284  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57285  		postToParent(tls, p, pList)
 57286  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57287  			var _objPtr uintptr = pList
 57288  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57289  				tcl.XTclFreeObj(tls, _objPtr)
 57290  			}
 57291  		}
 57292  		pList = tcl.XTcl_NewObj(tls)
 57293  	}
 57294  
 57295  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 57296  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 57297  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57298  	postToParent(tls, p, pList)
 57299  
 57300  	tcl.XTcl_Free(tls, p)
 57301  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57302  		var _objPtr uintptr = pList
 57303  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57304  			tcl.XTclFreeObj(tls, _objPtr)
 57305  		}
 57306  	}
 57307  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57308  		var _objPtr uintptr = pRes
 57309  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57310  			tcl.XTclFreeObj(tls, _objPtr)
 57311  		}
 57312  	}
 57313  	tcl.XTcl_DeleteInterp(tls, interp)
 57314  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 57315  	}
 57316  	tcl.XTcl_ExitThread(tls, 0)
 57317  
 57318  }
 57319  
 57320  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57321  	bp := tls.Alloc(32)
 57322  	defer tls.Free(32)
 57323  
 57324  	var pNew uintptr
 57325  	var rc int32
 57326  
 57327  	var zVarname uintptr
 57328  
 57329  	var zScript uintptr
 57330  
 57331  	var nStack int32 = 0
 57332  	var flags int32 = 0000
 57333  
 57334  	_ = clientData
 57335  	_ = objc
 57336  
 57337  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57338  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 57339  
 57340  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 57341  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 57342  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 57343  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57344  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1))
 57345  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 57346  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 57347  
 57348  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 57349  	if rc != TCL_OK {
 57350  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 57351  		tcl.XTcl_Free(tls, pNew)
 57352  		return TCL_ERROR
 57353  	}
 57354  
 57355  	return TCL_OK
 57356  }
 57357  
 57358  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57359  	bp := tls.Alloc(20)
 57360  	defer tls.Free(20)
 57361  
 57362  	var pEvent uintptr
 57363  	var zMsg uintptr
 57364  
 57365  	var p uintptr = clientData
 57366  
 57367  	_ = objc
 57368  
 57369  	if p == uintptr(0) {
 57370  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 57371  		return TCL_ERROR
 57372  	}
 57373  
 57374  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57375  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 57376  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57377  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57378  		f func(*libc.TLS, uintptr, int32) int32
 57379  	}{tclScriptEvent}))
 57380  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57381  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57382  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57383  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57384  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57385  
 57386  	return TCL_OK
 57387  }
 57388  
 57389  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 57390  	_ = pArg
 57391  	_ = nBusy
 57392  	sqlite3.Xsqlite3_sleep(tls, 50)
 57393  	return 1
 57394  }
 57395  
 57396  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57397  	bp := tls.Alloc(124)
 57398  	defer tls.Free(124)
 57399  
 57400  	var zFilename uintptr
 57401  
 57402  	_ = clientData
 57403  	_ = objc
 57404  
 57405  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57406  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 57407  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 57408  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 57409  		f func(*libc.TLS, uintptr, int32) int32
 57410  	}{xBusy})), uintptr(0))
 57411  
 57412  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 57413  		return TCL_ERROR
 57414  	}
 57415  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 57416  
 57417  	return TCL_OK
 57418  }
 57419  
 57420  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57421  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 57422  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 57423  	_ = clientData
 57424  	_ = objc
 57425  	_ = objv
 57426  	return TCL_OK
 57427  }
 57428  
 57429  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57430  	bp := tls.Alloc(164)
 57431  	defer tls.Free(164)
 57432  
 57433  	*(*[5]struct {
 57434  		FzName       uintptr
 57435  		FxProc       uintptr
 57436  		FnArg        int32
 57437  		F__ccgo_pad1 [4]byte
 57438  		FzUsage      uintptr
 57439  	})(unsafe.Pointer(bp)) = [5]struct {
 57440  		FzName       uintptr
 57441  		FxProc       uintptr
 57442  		FnArg        int32
 57443  		F__ccgo_pad1 [4]byte
 57444  		FzUsage      uintptr
 57445  	}{
 57446  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57447  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57448  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 57449  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57450  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57451  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 57452  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57453  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57454  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 57455  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57456  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57457  		}{sqlthread_id})), FzUsage: ts + 584},
 57458  		{},
 57459  	}
 57460  	var pSub uintptr
 57461  	var rc int32
 57462  
 57463  	if objc < 2 {
 57464  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 57465  		return TCL_ERROR
 57466  	}
 57467  
 57468  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 57469  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 57470  			FzName       uintptr
 57471  			FxProc       uintptr
 57472  			FnArg        int32
 57473  			F__ccgo_pad1 [4]byte
 57474  			FzUsage      uintptr
 57475  		}{})), ts+2014, 0, bp+160)
 57476  	if rc != TCL_OK {
 57477  		return rc
 57478  	}
 57479  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 57480  
 57481  	if objc < (*struct {
 57482  		FzName       uintptr
 57483  		FxProc       uintptr
 57484  		FnArg        int32
 57485  		F__ccgo_pad1 [4]byte
 57486  		FzUsage      uintptr
 57487  	})(unsafe.Pointer(pSub)).FnArg+2 {
 57488  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 57489  			FzName       uintptr
 57490  			FxProc       uintptr
 57491  			FnArg        int32
 57492  			F__ccgo_pad1 [4]byte
 57493  			FzUsage      uintptr
 57494  		})(unsafe.Pointer(pSub)).FzUsage)
 57495  		return TCL_ERROR
 57496  	}
 57497  
 57498  	return (*struct {
 57499  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57500  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 57501  		FzName       uintptr
 57502  		FxProc       uintptr
 57503  		FnArg        int32
 57504  		F__ccgo_pad1 [4]byte
 57505  		FzUsage      uintptr
 57506  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 57507  }
 57508  
 57509  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57510  	bp := tls.Alloc(16)
 57511  	defer tls.Free(16)
 57512  
 57513  	tcl.XTcl_GetTime(tls, bp)
 57514  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 57515  	_ = clientData
 57516  	_ = objc
 57517  	_ = objv
 57518  	return TCL_OK
 57519  }
 57520  
 57521  type UnlockNotification1 = struct {
 57522  	Ffired       int32
 57523  	F__ccgo_pad1 [4]byte
 57524  	Fcond        pthread_cond_t
 57525  	Fmutex       pthread_mutex_t
 57526  }
 57527  
 57528  type UnlockNotification = UnlockNotification1
 57529  
 57530  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 57531  	var i int32
 57532  	for i = 0; i < nArg; i++ {
 57533  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 57534  		libc.Xpthread_mutex_lock(tls, p+16)
 57535  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 57536  		libc.Xpthread_cond_signal(tls, p+8)
 57537  		libc.Xpthread_mutex_unlock(tls, p+16)
 57538  	}
 57539  }
 57540  
 57541  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 57542  	bp := tls.Alloc(24)
 57543  	defer tls.Free(24)
 57544  
 57545  	var rc int32
 57546  
 57547  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 57548  	libc.Xpthread_mutex_init(tls, bp+16, uintptr(0))
 57549  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 57550  
 57551  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 57552  		f func(*libc.TLS, uintptr, int32)
 57553  	}{unlock_notify_cb})), bp)
 57554  
 57555  	if rc == SQLITE_OK {
 57556  		libc.Xpthread_mutex_lock(tls, bp+16)
 57557  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 57558  			libc.Xpthread_cond_wait(tls, bp+8, bp+16)
 57559  		}
 57560  		libc.Xpthread_mutex_unlock(tls, bp+16)
 57561  	}
 57562  
 57563  	libc.Xpthread_cond_destroy(tls, bp+8)
 57564  	libc.Xpthread_mutex_destroy(tls, bp+16)
 57565  
 57566  	return rc
 57567  }
 57568  
 57569  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 57570  	var rc int32
 57571  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 57572  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 57573  		if rc != SQLITE_OK {
 57574  			break
 57575  		}
 57576  		sqlite3.Xsqlite3_reset(tls, pStmt)
 57577  	}
 57578  	return rc
 57579  }
 57580  
 57581  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 57582  	var rc int32
 57583  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 57584  		rc = wait_for_unlock_notify(tls, db)
 57585  		if rc != SQLITE_OK {
 57586  			break
 57587  		}
 57588  	}
 57589  	return rc
 57590  }
 57591  
 57592  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57593  	var pStmt uintptr
 57594  	var rc int32
 57595  
 57596  	if objc != 2 {
 57597  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 57598  		return TCL_ERROR
 57599  	}
 57600  
 57601  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 57602  	rc = sqlite3_blocking_step(tls, pStmt)
 57603  
 57604  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57605  	return TCL_OK
 57606  }
 57607  
 57608  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57609  	bp := tls.Alloc(162)
 57610  	defer tls.Free(162)
 57611  
 57612  	var zSql uintptr
 57613  
 57614  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 57615  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 57616  
 57617  	var rc int32
 57618  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 57619  
 57620  	if objc != 5 && objc != 4 {
 57621  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 57622  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 57623  		return TCL_ERROR
 57624  	}
 57625  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 57626  		return TCL_ERROR
 57627  	}
 57628  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57629  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 57630  		return TCL_ERROR
 57631  	}
 57632  
 57633  	if isBlocking != 0 {
 57634  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 57635  	} else {
 57636  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 57637  	}
 57638  
 57639  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 57640  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 57641  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 57642  		}
 57643  		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)
 57644  	}
 57645  	if rc != SQLITE_OK {
 57646  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 57647  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 57648  		return TCL_ERROR
 57649  	}
 57650  
 57651  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 57652  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 57653  			return TCL_ERROR
 57654  		}
 57655  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 57656  	}
 57657  	return TCL_OK
 57658  }
 57659  
 57660  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 57661  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57662  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57663  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 57664  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57665  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57666  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57667  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57668  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57669  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57670  	tcl.XTcl_CreateObjCommand(tls, interp,
 57671  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57672  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57673  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57674  	tcl.XTcl_CreateObjCommand(tls, interp,
 57675  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57676  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57677  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57678  	return TCL_OK
 57679  }
 57680  
 57681  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 57682  	return TCL_OK
 57683  }
 57684  
 57685  type Testvfs1 = struct {
 57686  	FzName        uintptr
 57687  	FpParent      uintptr
 57688  	FpVfs         uintptr
 57689  	Finterp       uintptr
 57690  	FpScript      uintptr
 57691  	FpBuffer      uintptr
 57692  	FisNoshm      int32
 57693  	FisFullshm    int32
 57694  	Fmask         int32
 57695  	Fioerr_err    TestFaultInject
 57696  	Ffull_err     TestFaultInject
 57697  	Fcantopen_err TestFaultInject
 57698  	FiDevchar     int32
 57699  	FiSectorsize  int32
 57700  }
 57701  
 57702  type Testvfs = Testvfs1
 57703  type TestvfsBuffer1 = struct {
 57704  	FzFile       uintptr
 57705  	Fpgsz        int32
 57706  	F__ccgo_pad1 [4]byte
 57707  	FaPage       [1024]uintptr
 57708  	FpFile       uintptr
 57709  	FpNext       uintptr
 57710  }
 57711  
 57712  type TestvfsBuffer = TestvfsBuffer1
 57713  type TestvfsFile1 = struct {
 57714  	Fbase sqlite3_file
 57715  	FpFd  uintptr
 57716  }
 57717  
 57718  type TestvfsFile = TestvfsFile1
 57719  type TestvfsFd1 = struct {
 57720  	FpVfs       uintptr
 57721  	FzFilename  uintptr
 57722  	FpReal      uintptr
 57723  	FpShmId     uintptr
 57724  	FpShm       uintptr
 57725  	Fexcllock   u32
 57726  	Fsharedlock u32
 57727  	FpNext      uintptr
 57728  }
 57729  
 57730  type TestvfsFd = TestvfsFd1
 57731  
 57732  type TestFaultInject1 = struct {
 57733  	FiCnt   int32
 57734  	FeFault int32
 57735  	FnFail  int32
 57736  }
 57737  
 57738  type TestFaultInject = TestFaultInject1
 57739  
 57740  var tvfs_io_methods = sqlite3_io_methods{
 57741  	FiVersion:               3,
 57742  	FxClose:                 0,
 57743  	FxRead:                  0,
 57744  	FxWrite:                 0,
 57745  	FxTruncate:              0,
 57746  	FxSync:                  0,
 57747  	FxFileSize:              0,
 57748  	FxLock:                  0,
 57749  	FxUnlock:                0,
 57750  	FxCheckReservedLock:     0,
 57751  	FxFileControl:           0,
 57752  	FxSectorSize:            0,
 57753  	FxDeviceCharacteristics: 0,
 57754  	FxShmMap:                0,
 57755  	FxShmLock:               0,
 57756  	FxShmBarrier:            0,
 57757  	FxShmUnmap:              0,
 57758  	FxFetch:                 0,
 57759  	FxUnfetch:               0,
 57760  }
 57761  
 57762  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 57763  	bp := tls.Alloc(144)
 57764  	defer tls.Free(144)
 57765  
 57766  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 57767  		{FzCode: ts + 2127},
 57768  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 57769  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 57770  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 57771  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 57772  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 57773  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 57774  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 57775  		{FeCode: -1, FzCode: ts + 38554},
 57776  	}
 57777  	var z uintptr
 57778  	var i int32
 57779  
 57780  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57781  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 57782  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 57783  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 57784  			return 1
 57785  		}
 57786  	}
 57787  
 57788  	return 0
 57789  }
 57790  
 57791  type errcode = struct {
 57792  	FeCode       int32
 57793  	F__ccgo_pad1 [4]byte
 57794  	FzCode       uintptr
 57795  }
 57796  
 57797  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 57798  	var ret int32 = 0
 57799  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 57800  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 57801  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 57802  			ret = 1
 57803  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 57804  		}
 57805  	}
 57806  	return ret
 57807  }
 57808  
 57809  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 57810  	return tvfsInjectFault(tls, p+60)
 57811  }
 57812  
 57813  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 57814  	return tvfsInjectFault(tls, p+72)
 57815  }
 57816  
 57817  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 57818  	return tvfsInjectFault(tls, p+84)
 57819  }
 57820  
 57821  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 57822  	var rc int32
 57823  	var pEval uintptr
 57824  
 57825  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 57826  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 57827  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 57828  	if arg1 != 0 {
 57829  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 57830  	}
 57831  	if arg2 != 0 {
 57832  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 57833  	}
 57834  	if arg3 != 0 {
 57835  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 57836  	}
 57837  	if arg4 != 0 {
 57838  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 57839  	}
 57840  
 57841  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 57842  	if rc != TCL_OK {
 57843  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57844  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57845  	}
 57846  }
 57847  
 57848  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 57849  	var pTestfile uintptr = pFile
 57850  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 57851  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57852  
 57853  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 57854  		tvfsExecTcl(tls, p, ts+35556,
 57855  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57856  	}
 57857  
 57858  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 57859  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57860  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 57861  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57862  				tcl.XTclFreeObj(tls, _objPtr)
 57863  			}
 57864  		}
 57865  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 57866  	}
 57867  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 57868  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 57869  	}
 57870  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 57871  	tcl.XTcl_Free(tls, pFd)
 57872  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 57873  	return SQLITE_OK
 57874  }
 57875  
 57876  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 57877  	bp := tls.Alloc(4)
 57878  	defer tls.Free(4)
 57879  
 57880  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57881  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57882  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57883  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 57884  		tvfsExecTcl(tls, p, ts+35563,
 57885  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57886  		tvfsResultCode(tls, p, bp)
 57887  	}
 57888  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 57889  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 57890  	}
 57891  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57892  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 57893  	}
 57894  	return *(*int32)(unsafe.Pointer(bp))
 57895  }
 57896  
 57897  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 57898  	bp := tls.Alloc(4)
 57899  	defer tls.Free(4)
 57900  
 57901  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57902  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57903  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57904  
 57905  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 57906  		tvfsExecTcl(tls, p, ts+35569,
 57907  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 57908  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 57909  		tvfsResultCode(tls, p, bp)
 57910  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 57911  			return SQLITE_OK
 57912  		}
 57913  	}
 57914  
 57915  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 57916  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 57917  	}
 57918  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 57919  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 57920  	}
 57921  
 57922  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57923  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 57924  	}
 57925  	return *(*int32)(unsafe.Pointer(bp))
 57926  }
 57927  
 57928  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 57929  	bp := tls.Alloc(4)
 57930  	defer tls.Free(4)
 57931  
 57932  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57933  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57934  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57935  
 57936  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 57937  		tvfsExecTcl(tls, p, ts+35576,
 57938  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57939  		tvfsResultCode(tls, p, bp)
 57940  	}
 57941  
 57942  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57943  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 57944  	}
 57945  	return *(*int32)(unsafe.Pointer(bp))
 57946  }
 57947  
 57948  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 57949  	bp := tls.Alloc(4)
 57950  	defer tls.Free(4)
 57951  
 57952  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57953  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57954  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57955  
 57956  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 57957  		var zFlags uintptr = uintptr(0)
 57958  
 57959  		switch flags {
 57960  		case SQLITE_SYNC_NORMAL:
 57961  			zFlags = ts + 16397
 57962  			break
 57963  			fallthrough
 57964  		case SQLITE_SYNC_FULL:
 57965  			zFlags = ts + 18291
 57966  			break
 57967  			fallthrough
 57968  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 57969  			zFlags = ts + 38566
 57970  			break
 57971  			fallthrough
 57972  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 57973  			zFlags = ts + 38582
 57974  			break
 57975  			fallthrough
 57976  		default:
 57977  		}
 57978  
 57979  		tvfsExecTcl(tls, p, ts+27843,
 57980  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 57981  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 57982  		tvfsResultCode(tls, p, bp)
 57983  	}
 57984  
 57985  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 57986  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 57987  	}
 57988  
 57989  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57990  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 57991  	}
 57992  
 57993  	return *(*int32)(unsafe.Pointer(bp))
 57994  }
 57995  
 57996  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 57997  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57998  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 57999  }
 58000  
 58001  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58002  	bp := tls.Alloc(38)
 58003  	defer tls.Free(38)
 58004  
 58005  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58006  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58007  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 58008  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58009  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58010  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58011  	}
 58012  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58013  }
 58014  
 58015  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58016  	bp := tls.Alloc(38)
 58017  	defer tls.Free(38)
 58018  
 58019  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58020  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58021  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 58022  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58023  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58024  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58025  	}
 58026  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58027  		return SQLITE_IOERR | int32(8)<<8
 58028  	}
 58029  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58030  }
 58031  
 58032  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 58033  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58034  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58035  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 58036  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58037  			uintptr(0), uintptr(0), uintptr(0))
 58038  	}
 58039  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 58040  }
 58041  
 58042  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 58043  	bp := tls.Alloc(68)
 58044  	defer tls.Free(68)
 58045  
 58046  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58047  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58048  	if op == SQLITE_FCNTL_PRAGMA {
 58049  		var argv uintptr = pArg
 58050  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 58051  			var rc int32 = SQLITE_ERROR
 58052  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 58053  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 58054  				var x int32 = libc.Xatoi(tls, z)
 58055  				if x != 0 {
 58056  					rc = x
 58057  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 58058  						z++
 58059  					}
 58060  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x01 != 0 {
 58061  						z++
 58062  					}
 58063  				}
 58064  				if *(*int8)(unsafe.Pointer(z)) != 0 {
 58065  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 58066  				}
 58067  			}
 58068  			return rc
 58069  		}
 58070  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 58071  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58072  			return SQLITE_OK
 58073  		}
 58074  	}
 58075  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 58076  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 58077  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 58078  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 58079  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 58080  		}
 58081  		var i int32
 58082  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 58083  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 58084  				break
 58085  			}
 58086  		}
 58087  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 58088  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 58089  			tvfsExecTcl(tls, p, ts+35624,
 58090  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58091  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 58092  				uintptr(0), uintptr(0))
 58093  			tvfsResultCode(tls, p, bp+64)
 58094  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 58095  				return func() int32 {
 58096  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 58097  						return SQLITE_OK
 58098  					}
 58099  					return *(*int32)(unsafe.Pointer(bp + 64))
 58100  				}()
 58101  			}
 58102  		}
 58103  	}
 58104  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 58105  }
 58106  
 58107  type Fcntl = struct {
 58108  	FiFnctl      int32
 58109  	F__ccgo_pad1 [4]byte
 58110  	FzFnctl      uintptr
 58111  }
 58112  
 58113  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 58114  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58115  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58116  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 58117  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 58118  	}
 58119  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58120  }
 58121  
 58122  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 58123  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58124  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58125  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 58126  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 58127  	}
 58128  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58129  }
 58130  
 58131  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 58132  	bp := tls.Alloc(4)
 58133  	defer tls.Free(4)
 58134  
 58135  	var pTestfile uintptr = pFile
 58136  	var pFd uintptr
 58137  	var pId uintptr = uintptr(0)
 58138  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58139  
 58140  	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)))
 58141  	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))
 58142  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58143  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58144  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 58145  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 58146  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 58147  	libc.Xmemset(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})))
 58148  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 58149  
 58150  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58151  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 58152  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58153  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58154  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 58155  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 58156  			for *(*int8)(unsafe.Pointer(z)) != 0 {
 58157  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58158  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58159  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58160  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58161  			}
 58162  		}
 58163  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 58164  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58165  			var _objPtr uintptr = pArg
 58166  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58167  				tcl.XTclFreeObj(tls, _objPtr)
 58168  			}
 58169  		}
 58170  		if tvfsResultCode(tls, p, bp) != 0 {
 58171  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58172  				return *(*int32)(unsafe.Pointer(bp))
 58173  			}
 58174  		} else {
 58175  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58176  		}
 58177  	}
 58178  
 58179  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58180  		return SQLITE_IOERR
 58181  	}
 58182  	if tvfsInjectCantopenerr(tls, p) != 0 {
 58183  		return SQLITE_CANTOPEN
 58184  	}
 58185  	if tvfsInjectFullerr(tls, p) != 0 {
 58186  		return SQLITE_FULL
 58187  	}
 58188  
 58189  	if !(pId != 0) {
 58190  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 58191  	}
 58192  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 58193  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 58194  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58195  
 58196  	*(*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)
 58197  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 58198  		var pMethods uintptr
 58199  		var nByte int32
 58200  
 58201  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 58202  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 58203  		} else {
 58204  			nByte = int32(uintptr(0) + 104)
 58205  		}
 58206  
 58207  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 58208  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte))
 58209  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 58210  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 58211  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 58212  		}
 58213  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 58214  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 58215  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 58216  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 58217  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 58218  		}
 58219  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 58220  	}
 58221  
 58222  	return *(*int32)(unsafe.Pointer(bp))
 58223  }
 58224  
 58225  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 58226  	bp := tls.Alloc(4)
 58227  	defer tls.Free(4)
 58228  
 58229  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58230  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58231  
 58232  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 58233  		tvfsExecTcl(tls, p, ts+35661,
 58234  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 58235  		tvfsResultCode(tls, p, bp)
 58236  	}
 58237  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58238  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 58239  	}
 58240  	return *(*int32)(unsafe.Pointer(bp))
 58241  }
 58242  
 58243  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 58244  	bp := tls.Alloc(4)
 58245  	defer tls.Free(4)
 58246  
 58247  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58248  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 58249  		var zArg uintptr = uintptr(0)
 58250  		if flags == SQLITE_ACCESS_EXISTS {
 58251  			zArg = ts + 38666
 58252  		}
 58253  		if flags == SQLITE_ACCESS_READWRITE {
 58254  			zArg = ts + 38687
 58255  		}
 58256  		if flags == SQLITE_ACCESS_READ {
 58257  			zArg = ts + 38711
 58258  		}
 58259  		tvfsExecTcl(tls, p, ts+35669,
 58260  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 58261  		if tvfsResultCode(tls, p, bp) != 0 {
 58262  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58263  				return *(*int32)(unsafe.Pointer(bp))
 58264  			}
 58265  		} else {
 58266  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 58267  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 58268  				return SQLITE_OK
 58269  			}
 58270  		}
 58271  	}
 58272  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 58273  }
 58274  
 58275  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 58276  	bp := tls.Alloc(4)
 58277  	defer tls.Free(4)
 58278  
 58279  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58280  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 58281  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 58282  		if tvfsResultCode(tls, p, bp) != 0 {
 58283  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58284  				return *(*int32)(unsafe.Pointer(bp))
 58285  			}
 58286  		}
 58287  	}
 58288  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 58289  }
 58290  
 58291  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 58292  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 58293  }
 58294  
 58295  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 58296  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 58297  }
 58298  
 58299  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 58300  	return (*struct {
 58301  		f func(*libc.TLS, uintptr, uintptr) int32
 58302  	})(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)
 58303  }
 58304  
 58305  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 58306  	bp := tls.Alloc(4)
 58307  	defer tls.Free(4)
 58308  
 58309  	var p uintptr
 58310  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58311  	var pBuffer uintptr
 58312  	var pFd uintptr
 58313  
 58314  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58315  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58316  
 58317  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58318  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 58319  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 58320  		if tvfsResultCode(tls, p, bp) != 0 {
 58321  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58322  				return *(*int32)(unsafe.Pointer(bp))
 58323  			}
 58324  		}
 58325  	}
 58326  
 58327  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58328  		return SQLITE_IOERR
 58329  	}
 58330  
 58331  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 58332  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 58333  			break
 58334  		}
 58335  	}
 58336  	if !(pBuffer != 0) {
 58337  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58338  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 58339  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 58340  		libc.Xmemset(tls, pBuffer, 0, uint64(nByte))
 58341  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 58342  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1))
 58343  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 58344  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 58345  	}
 58346  
 58347  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 58348  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 58349  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 58350  	return *(*int32)(unsafe.Pointer(bp))
 58351  }
 58352  
 58353  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 58354  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 58355  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 58356  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz))
 58357  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 58358  	}
 58359  }
 58360  
 58361  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 58362  	bp := tls.Alloc(4)
 58363  	defer tls.Free(4)
 58364  
 58365  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58366  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58367  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58368  
 58369  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58370  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58371  		return (*struct {
 58372  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 58373  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 58374  	}
 58375  
 58376  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 58377  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 58378  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58379  			return *(*int32)(unsafe.Pointer(bp))
 58380  		}
 58381  	}
 58382  
 58383  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 58384  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58385  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58386  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 58387  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 58388  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 58389  		tvfsExecTcl(tls, p, ts+35754,
 58390  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 58391  		tvfsResultCode(tls, p, bp)
 58392  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58393  			var _objPtr uintptr = pArg
 58394  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58395  				tcl.XTclFreeObj(tls, _objPtr)
 58396  			}
 58397  		}
 58398  	}
 58399  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58400  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58401  	}
 58402  
 58403  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 58404  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 58405  	}
 58406  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 58407  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 58408  	}
 58409  
 58410  	return *(*int32)(unsafe.Pointer(bp))
 58411  }
 58412  
 58413  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 58414  	bp := tls.Alloc(100)
 58415  	defer tls.Free(100)
 58416  
 58417  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 58418  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58419  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58420  	var nLock int32
 58421  
 58422  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58423  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58424  		return (*struct {
 58425  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 58426  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 58427  	}
 58428  
 58429  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 58430  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 58431  		nLock = int32(libc.Xstrlen(tls, bp+16))
 58432  		if flags&SQLITE_SHM_LOCK != 0 {
 58433  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 58434  		} else {
 58435  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 58436  		}
 58437  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 58438  		if flags&SQLITE_SHM_SHARED != 0 {
 58439  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 58440  		} else {
 58441  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 58442  		}
 58443  		tvfsExecTcl(tls, p, ts+35733,
 58444  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58445  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 58446  		tvfsResultCode(tls, p, bp+96)
 58447  	}
 58448  
 58449  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58450  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 58451  	}
 58452  
 58453  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 58454  		var isLock int32 = flags & SQLITE_SHM_LOCK
 58455  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 58456  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 58457  		if isLock != 0 {
 58458  			var p2 uintptr
 58459  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 58460  				if p2 == pFd {
 58461  					continue
 58462  				}
 58463  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 58464  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 58465  					break
 58466  				}
 58467  			}
 58468  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 58469  				if isExcl != 0 {
 58470  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 58471  				}
 58472  				if !(isExcl != 0) {
 58473  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 58474  				}
 58475  			}
 58476  		} else {
 58477  			if isExcl != 0 {
 58478  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 58479  			}
 58480  			if !(isExcl != 0) {
 58481  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 58482  			}
 58483  		}
 58484  	}
 58485  
 58486  	return *(*int32)(unsafe.Pointer(bp + 96))
 58487  }
 58488  
 58489  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 58490  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58491  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58492  
 58493  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 58494  		var z uintptr
 58495  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 58496  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 58497  		} else {
 58498  			z = ts + 584
 58499  		}
 58500  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58501  	}
 58502  
 58503  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58504  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58505  		(*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)
 58506  		return
 58507  	}
 58508  }
 58509  
 58510  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 58511  	bp := tls.Alloc(4)
 58512  	defer tls.Free(4)
 58513  
 58514  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58515  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58516  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58517  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 58518  	var ppFd uintptr
 58519  
 58520  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58521  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58522  		return (*struct {
 58523  			f func(*libc.TLS, uintptr, int32) int32
 58524  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 58525  	}
 58526  
 58527  	if !(pBuffer != 0) {
 58528  		return SQLITE_OK
 58529  	}
 58530  
 58531  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 58532  		tvfsExecTcl(tls, p, ts+35723,
 58533  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58534  		tvfsResultCode(tls, p, bp)
 58535  	}
 58536  
 58537  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 58538  	}
 58539  
 58540  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 58541  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 58542  
 58543  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 58544  		var i int32
 58545  		var pp uintptr
 58546  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 58547  		}
 58548  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 58549  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 58550  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 58551  		}
 58552  		tcl.XTcl_Free(tls, pBuffer)
 58553  	}
 58554  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58555  
 58556  	return *(*int32)(unsafe.Pointer(bp))
 58557  }
 58558  
 58559  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 58560  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58561  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 58562  }
 58563  
 58564  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 58565  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58566  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 58567  }
 58568  
 58569  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58570  	bp := tls.Alloc(568)
 58571  	defer tls.Free(568)
 58572  
 58573  	var p uintptr = cd
 58574  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 58575  		{FzName: ts + 38772},
 58576  		{FzName: ts + 10138, FeCmd: uint32(1)},
 58577  		{FzName: ts + 38776, FeCmd: uint32(2)},
 58578  		{FzName: ts + 38783, FeCmd: uint32(3)},
 58579  		{FzName: ts + 38789, FeCmd: uint32(7)},
 58580  		{FzName: ts + 38797, FeCmd: uint32(8)},
 58581  		{FzName: ts + 38809, FeCmd: uint32(4)},
 58582  		{FzName: ts + 38816, FeCmd: uint32(5)},
 58583  		{FzName: ts + 38824, FeCmd: uint32(6)},
 58584  		{},
 58585  	}
 58586  
 58587  	if objc < 2 {
 58588  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 58589  		return TCL_ERROR
 58590  	}
 58591  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 58592  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+256) != 0 {
 58593  		return TCL_ERROR
 58594  	}
 58595  	tcl.XTcl_ResetResult(tls, interp)
 58596  
 58597  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 58598  	case uint32(0):
 58599  		{
 58600  			var pObj uintptr
 58601  			var rc int32
 58602  			var pBuffer uintptr
 58603  			var zName uintptr
 58604  			if objc != 3 && objc != 4 {
 58605  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 58606  				return TCL_ERROR
 58607  			}
 58608  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 58609  			rc = (*struct {
 58610  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58611  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 58612  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 58613  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 58614  			if rc != SQLITE_OK {
 58615  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 58616  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58617  				tcl.XTcl_Free(tls, zName)
 58618  				return TCL_ERROR
 58619  			}
 58620  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 58621  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 58622  					break
 58623  				}
 58624  			}
 58625  			tcl.XTcl_Free(tls, zName)
 58626  			if !(pBuffer != 0) {
 58627  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58628  				return TCL_ERROR
 58629  			}
 58630  			if objc == 4 {
 58631  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 58632  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 58633  				if pgsz == 0 {
 58634  					pgsz = 65536
 58635  				}
 58636  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 58637  					var nByte int32 = pgsz
 58638  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 58639  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 58640  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 58641  					}
 58642  					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))
 58643  				}
 58644  			}
 58645  
 58646  			pObj = tcl.XTcl_NewObj(tls)
 58647  			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))++ {
 58648  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 58649  				if pgsz == 0 {
 58650  					pgsz = 65536
 58651  				}
 58652  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 58653  			}
 58654  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 58655  			break
 58656  
 58657  		}
 58658  
 58659  	case uint32(2):
 58660  		{
 58661  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 58662  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 58663  			var mask int32 = 0
 58664  			if objc != 3 {
 58665  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 58666  				return TCL_ERROR
 58667  			}
 58668  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 58669  				return TCL_ERROR
 58670  			}
 58671  			tcl.XTcl_ResetResult(tls, interp)
 58672  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 58673  				var iMethod int32
 58674  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 58675  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 58676  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 58677  						mask = mask | vfsmethod[iMethod].Fmask
 58678  						break
 58679  					}
 58680  				}
 58681  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 58682  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 58683  					return TCL_ERROR
 58684  				}
 58685  			}
 58686  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 58687  			break
 58688  
 58689  		}
 58690  
 58691  	case uint32(4):
 58692  		{
 58693  			if objc == 3 {
 58694  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58695  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58696  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 58697  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58698  							tcl.XTclFreeObj(tls, _objPtr)
 58699  						}
 58700  					}
 58701  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 58702  				}
 58703  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 58704  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 58705  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58706  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 58707  				}
 58708  			} else if objc != 2 {
 58709  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 58710  				return TCL_ERROR
 58711  			}
 58712  
 58713  			tcl.XTcl_ResetResult(tls, interp)
 58714  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58715  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 58716  			}
 58717  
 58718  			break
 58719  
 58720  		}
 58721  
 58722  	case uint32(8):
 58723  		fallthrough
 58724  	case uint32(3):
 58725  		fallthrough
 58726  	case uint32(7):
 58727  		{
 58728  			var pTest uintptr = uintptr(0)
 58729  			var iRet int32
 58730  
 58731  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 58732  			case uint32(3):
 58733  				pTest = p + 60
 58734  				break
 58735  			case uint32(7):
 58736  				pTest = p + 72
 58737  				break
 58738  			case uint32(8):
 58739  				pTest = p + 84
 58740  				break
 58741  			default:
 58742  			}
 58743  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 58744  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 58745  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 58746  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 58747  
 58748  			if objc == 4 {
 58749  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 58750  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 58751  					return TCL_ERROR
 58752  				}
 58753  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 58754  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 58755  						return FAULT_INJECT_PERSISTENT
 58756  					}
 58757  					return FAULT_INJECT_TRANSIENT
 58758  				}()
 58759  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 58760  			} else if objc != 2 {
 58761  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 58762  				return TCL_ERROR
 58763  			}
 58764  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 58765  			break
 58766  
 58767  		}
 58768  
 58769  	case uint32(1):
 58770  		{
 58771  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 58772  			break
 58773  
 58774  		}
 58775  
 58776  	case uint32(5):
 58777  		{
 58778  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 58779  				{FzName: ts + 38931, FiValue: -1},
 58780  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 58781  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 58782  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 58783  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 58784  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 58785  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 58786  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 58787  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 58788  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 58789  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 58790  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 58791  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 58792  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 58793  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 58794  				{},
 58795  			}
 58796  			var pRet uintptr
 58797  			var iFlag int32
 58798  
 58799  			if objc > 3 {
 58800  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 58801  				return TCL_ERROR
 58802  			}
 58803  			if objc == 3 {
 58804  				var j int32
 58805  				var iNew int32 = 0
 58806  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 58807  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 58808  
 58809  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 58810  					return TCL_ERROR
 58811  				}
 58812  
 58813  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 58814  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 58815  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 58816  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 58817  						return TCL_ERROR
 58818  					}
 58819  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 58820  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58821  						return TCL_ERROR
 58822  					}
 58823  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 58824  				}
 58825  
 58826  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 58827  			}
 58828  
 58829  			pRet = tcl.XTcl_NewObj(tls)
 58830  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 58831  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 58832  					tcl.XTcl_ListObjAppendElement(tls,
 58833  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 58834  				}
 58835  			}
 58836  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 58837  
 58838  			break
 58839  
 58840  		}
 58841  
 58842  	case uint32(6):
 58843  		{
 58844  			if objc > 3 {
 58845  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 58846  				return TCL_ERROR
 58847  			}
 58848  			if objc == 3 {
 58849  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 58850  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 58851  					return TCL_ERROR
 58852  				}
 58853  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 58854  			}
 58855  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 58856  			break
 58857  
 58858  		}
 58859  	}
 58860  
 58861  	return TCL_OK
 58862  }
 58863  
 58864  type TestvfsSubcmd = struct {
 58865  	FzName       uintptr
 58866  	FeCmd        uint32
 58867  	F__ccgo_pad1 [4]byte
 58868  }
 58869  
 58870  type VfsMethod = struct {
 58871  	FzName       uintptr
 58872  	Fmask        int32
 58873  	F__ccgo_pad1 [4]byte
 58874  }
 58875  
 58876  var vfsmethod = [18]VfsMethod{
 58877  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 58878  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 58879  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 58880  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 58881  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 58882  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 58883  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 58884  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 58885  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 58886  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 58887  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 58888  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 58889  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 58890  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 58891  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 58892  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 58893  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 58894  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 58895  }
 58896  
 58897  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 58898  	var p uintptr = cd
 58899  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58900  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58901  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 58902  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58903  				tcl.XTclFreeObj(tls, _objPtr)
 58904  			}
 58905  		}
 58906  	}
 58907  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 58908  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})))
 58909  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 58910  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})))
 58911  	tcl.XTcl_Free(tls, p)
 58912  }
 58913  
 58914  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58915  	bp := tls.Alloc(28)
 58916  	defer tls.Free(28)
 58917  
 58918  	var p uintptr
 58919  	var pVfs uintptr
 58920  	var zVfs uintptr
 58921  	var nByte int32
 58922  
 58923  	var i int32
 58924  
 58925  	var zSwitch uintptr
 58926  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 58927  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 58928  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 58929  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 58930  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 58931  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 58932  
 58933  	if !(objc < 2 || 0 != objc%2) {
 58934  		goto __1
 58935  	}
 58936  	goto bad_args
 58937  __1:
 58938  	;
 58939  	i = 2
 58940  __2:
 58941  	if !(i < objc) {
 58942  		goto __4
 58943  	}
 58944  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 58945  
 58946  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58947  		goto __5
 58948  	}
 58949  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 58950  		goto __7
 58951  	}
 58952  	return TCL_ERROR
 58953  __7:
 58954  	;
 58955  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 58956  		goto __8
 58957  	}
 58958  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 58959  __8:
 58960  	;
 58961  	goto __6
 58962  __5:
 58963  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58964  		goto __9
 58965  	}
 58966  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 58967  		goto __11
 58968  	}
 58969  	return TCL_ERROR
 58970  __11:
 58971  	;
 58972  	goto __10
 58973  __9:
 58974  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58975  		goto __12
 58976  	}
 58977  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 58978  		goto __14
 58979  	}
 58980  	return TCL_ERROR
 58981  __14:
 58982  	;
 58983  	goto __13
 58984  __12:
 58985  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58986  		goto __15
 58987  	}
 58988  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 58989  		goto __17
 58990  	}
 58991  	return TCL_ERROR
 58992  __17:
 58993  	;
 58994  	goto __16
 58995  __15:
 58996  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58997  		goto __18
 58998  	}
 58999  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 59000  		goto __20
 59001  	}
 59002  	return TCL_ERROR
 59003  __20:
 59004  	;
 59005  	goto __19
 59006  __18:
 59007  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59008  		goto __21
 59009  	}
 59010  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 59011  		goto __23
 59012  	}
 59013  	return TCL_ERROR
 59014  __23:
 59015  	;
 59016  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 59017  		goto __24
 59018  	}
 59019  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59020  __24:
 59021  	;
 59022  	goto __22
 59023  __21:
 59024  	goto bad_args
 59025  __22:
 59026  	;
 59027  __19:
 59028  	;
 59029  __16:
 59030  	;
 59031  __13:
 59032  	;
 59033  __10:
 59034  	;
 59035  __6:
 59036  	;
 59037  	goto __3
 59038  __3:
 59039  	i = i + 2
 59040  	goto __2
 59041  	goto __4
 59042  __4:
 59043  	;
 59044  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 59045  		goto __25
 59046  	}
 59047  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 59048  __25:
 59049  	;
 59050  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 59051  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 59052  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 59053  	libc.Xmemset(tls, p, 0, uint64(nByte))
 59054  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 59055  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 59056  
 59057  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 59058  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59059  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 59060  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59061  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 59062  
 59063  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 59064  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1))
 59065  
 59066  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59067  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 59068  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 59069  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 59070  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 59071  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 59072  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 59073  		goto __26
 59074  	}
 59075  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 59076  __26:
 59077  	;
 59078  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 59079  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 59080  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 59081  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 59082  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 59083  
 59084  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 59085  
 59086  	return TCL_OK
 59087  
 59088  bad_args:
 59089  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 59090  	return TCL_ERROR
 59091  }
 59092  
 59093  var tvfs_vfs = sqlite3_vfs{
 59094  	FiVersion:      3,
 59095  	FxOpen:         0,
 59096  	FxDelete:       0,
 59097  	FxAccess:       0,
 59098  	FxFullPathname: 0,
 59099  	FxRandomness:   0,
 59100  	FxSleep:        0,
 59101  	FxCurrentTime:  0,
 59102  }
 59103  
 59104  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59105  	bp := tls.Alloc(88)
 59106  	defer tls.Free(88)
 59107  
 59108  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 59109  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 59110  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59111  	var rc int32 = SQLITE_OK
 59112  	var zDbname uintptr = uintptr(0)
 59113  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 59114  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 59115  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 59116  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 59117  
 59118  	if objc != 7 {
 59119  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 59120  			ts+39174)
 59121  		return TCL_ERROR
 59122  	}
 59123  
 59124  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59125  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 59126  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 59127  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+64) != 0 ||
 59128  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 59129  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 59130  		return TCL_ERROR
 59131  	}
 59132  
 59133  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 59134  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 59135  		return TCL_ERROR
 59136  	}
 59137  	rc = (*struct {
 59138  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59139  	})(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)),
 59140  		func() int32 {
 59141  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 59142  				return SQLITE_SHM_SHARED
 59143  			}
 59144  			return SQLITE_SHM_EXCLUSIVE
 59145  		}()|
 59146  			func() int32 {
 59147  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 59148  					return SQLITE_SHM_LOCK
 59149  				}
 59150  				return SQLITE_SHM_UNLOCK
 59151  			}())
 59152  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59153  	return TCL_OK
 59154  }
 59155  
 59156  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59157  	bp := tls.Alloc(48)
 59158  	defer tls.Free(48)
 59159  
 59160  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 59161  	var rc int32 = SQLITE_OK
 59162  	var zDbname uintptr = uintptr(0)
 59163  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59164  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 59165  
 59166  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 59167  	var aShm uintptr
 59168  	var iOff int32
 59169  
 59170  	if objc != 4 && objc != 5 {
 59171  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 59172  		return TCL_ERROR
 59173  	}
 59174  
 59175  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59176  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 59177  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 59178  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 59179  		return TCL_ERROR
 59180  	}
 59181  
 59182  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 59183  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 59184  		return TCL_ERROR
 59185  	}
 59186  	rc = (*struct {
 59187  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59188  	})(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)
 59189  	if rc != SQLITE_OK {
 59190  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59191  		return TCL_ERROR
 59192  	}
 59193  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 59194  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 59195  		return TCL_ERROR
 59196  	}
 59197  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 59198  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 59199  
 59200  	if objc == 5 {
 59201  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 59202  	}
 59203  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 59204  
 59205  	return TCL_OK
 59206  }
 59207  
 59208  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 59209  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 59210  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59211  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 59212  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 59213  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59214  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 59215  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 59216  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59217  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 59218  	return TCL_OK
 59219  }
 59220  
 59221  type TestWindow1 = struct {
 59222  	FxStep    uintptr
 59223  	FxFinal   uintptr
 59224  	FxValue   uintptr
 59225  	FxInverse uintptr
 59226  	Finterp   uintptr
 59227  }
 59228  
 59229  type TestWindow = TestWindow1
 59230  
 59231  type TestWindowCtx1 = struct{ FpVal uintptr }
 59232  
 59233  type TestWindowCtx = TestWindowCtx1
 59234  
 59235  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 59236  	var i int32
 59237  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59238  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59239  		if bInverse != 0 {
 59240  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 59241  		}
 59242  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 59243  	}())
 59244  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59245  
 59246  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59247  	if pCtx != 0 {
 59248  		var zResult uintptr
 59249  		var rc int32
 59250  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59251  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59252  		} else {
 59253  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59254  		}
 59255  		for i = 0; i < nArg; i++ {
 59256  			var pArg uintptr
 59257  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 59258  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 59259  		}
 59260  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59261  		if rc != TCL_OK {
 59262  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59263  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59264  		} else {
 59265  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59266  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59267  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59268  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59269  						tcl.XTclFreeObj(tls, _objPtr)
 59270  					}
 59271  				}
 59272  			}
 59273  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 59274  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 59275  		}
 59276  	}
 59277  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59278  		var _objPtr uintptr = pEval
 59279  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59280  			tcl.XTclFreeObj(tls, _objPtr)
 59281  		}
 59282  	}
 59283  }
 59284  
 59285  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 59286  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59287  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59288  		if bValue != 0 {
 59289  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 59290  		}
 59291  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 59292  	}())
 59293  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59294  
 59295  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59296  	if pCtx != 0 {
 59297  		var zResult uintptr
 59298  		var rc int32
 59299  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59300  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59301  		} else {
 59302  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59303  		}
 59304  
 59305  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59306  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59307  		if rc != TCL_OK {
 59308  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59309  		} else {
 59310  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 59311  		}
 59312  
 59313  		if bValue == 0 {
 59314  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59315  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59316  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59317  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59318  						tcl.XTclFreeObj(tls, _objPtr)
 59319  					}
 59320  				}
 59321  			}
 59322  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 59323  		}
 59324  	}
 59325  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59326  		var _objPtr uintptr = pEval
 59327  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59328  			tcl.XTclFreeObj(tls, _objPtr)
 59329  		}
 59330  	}
 59331  }
 59332  
 59333  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59334  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 59335  }
 59336  
 59337  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59338  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 59339  }
 59340  
 59341  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 59342  	doTestWindowFinalize(tls, 0, ctx)
 59343  }
 59344  
 59345  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 59346  	doTestWindowFinalize(tls, 1, ctx)
 59347  }
 59348  
 59349  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 59350  	tcl.XTcl_Free(tls, pCtx)
 59351  }
 59352  
 59353  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59354  	bp := tls.Alloc(8)
 59355  	defer tls.Free(8)
 59356  
 59357  	var pNew uintptr
 59358  
 59359  	var zName uintptr
 59360  	var rc int32
 59361  
 59362  	if objc != 7 {
 59363  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 59364  		return TCL_ERROR
 59365  	}
 59366  
 59367  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59368  		return TCL_ERROR
 59369  	}
 59370  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59371  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 59372  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})))
 59373  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 59374  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 59375  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 59376  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 59377  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 59378  
 59379  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 59380  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 59381  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 59382  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 59383  
 59384  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 59385  		*(*uintptr)(unsafe.Pointer(&struct {
 59386  			f func(*libc.TLS, uintptr, int32, uintptr)
 59387  		}{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 {
 59388  			f func(*libc.TLS, uintptr, int32, uintptr)
 59389  		}{testWindowInverse})),
 59390  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 59391  	if rc != SQLITE_OK {
 59392  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59393  		return TCL_ERROR
 59394  	}
 59395  
 59396  	return TCL_OK
 59397  }
 59398  
 59399  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59400  	bp := tls.Alloc(8)
 59401  	defer tls.Free(8)
 59402  
 59403  	var rc int32
 59404  
 59405  	if !(objc != 2) {
 59406  		goto __1
 59407  	}
 59408  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59409  	return TCL_ERROR
 59410  __1:
 59411  	;
 59412  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 59413  		goto __2
 59414  	}
 59415  	return TCL_ERROR
 59416  __2:
 59417  	;
 59418  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59419  		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 {
 59420  			f func(*libc.TLS, uintptr, int32, uintptr)
 59421  		}{testWindowInverse})),
 59422  		uintptr(0))
 59423  	if !(rc != SQLITE_MISUSE) {
 59424  		goto __3
 59425  	}
 59426  	goto error
 59427  __3:
 59428  	;
 59429  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59430  		*(*uintptr)(unsafe.Pointer(&struct {
 59431  			f func(*libc.TLS, uintptr, int32, uintptr)
 59432  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 59433  			f func(*libc.TLS, uintptr, int32, uintptr)
 59434  		}{testWindowInverse})),
 59435  		uintptr(0))
 59436  	if !(rc != SQLITE_MISUSE) {
 59437  		goto __4
 59438  	}
 59439  	goto error
 59440  __4:
 59441  	;
 59442  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59443  		*(*uintptr)(unsafe.Pointer(&struct {
 59444  			f func(*libc.TLS, uintptr, int32, uintptr)
 59445  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59446  			f func(*libc.TLS, uintptr, int32, uintptr)
 59447  		}{testWindowInverse})),
 59448  		uintptr(0))
 59449  	if !(rc != SQLITE_MISUSE) {
 59450  		goto __5
 59451  	}
 59452  	goto error
 59453  __5:
 59454  	;
 59455  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59456  		*(*uintptr)(unsafe.Pointer(&struct {
 59457  			f func(*libc.TLS, uintptr, int32, uintptr)
 59458  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 59459  		uintptr(0))
 59460  	if !(rc != SQLITE_MISUSE) {
 59461  		goto __6
 59462  	}
 59463  	goto error
 59464  __6:
 59465  	;
 59466  	return TCL_OK
 59467  
 59468  error:
 59469  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 59470  	return TCL_ERROR
 59471  }
 59472  
 59473  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59474  	var pInt uintptr
 59475  
 59476  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 59477  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 59478  		return
 59479  	}
 59480  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 59481  	if pInt != 0 {
 59482  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 59483  	}
 59484  }
 59485  
 59486  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59487  	var pInt uintptr
 59488  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 59489  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 59490  }
 59491  
 59492  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 59493  	var res sqlite3_int64 = int64(0)
 59494  	var pInt uintptr
 59495  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 59496  	if pInt != 0 {
 59497  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 59498  	}
 59499  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 59500  }
 59501  
 59502  func sumintValue(tls *libc.TLS, ctx uintptr) {
 59503  	var res sqlite3_int64 = int64(0)
 59504  	var pInt uintptr
 59505  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 59506  	if pInt != 0 {
 59507  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 59508  	}
 59509  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 59510  }
 59511  
 59512  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59513  	bp := tls.Alloc(8)
 59514  	defer tls.Free(8)
 59515  
 59516  	var rc int32
 59517  
 59518  	if objc != 2 {
 59519  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59520  		return TCL_ERROR
 59521  	}
 59522  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59523  		return TCL_ERROR
 59524  	}
 59525  
 59526  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 59527  		*(*uintptr)(unsafe.Pointer(&struct {
 59528  			f func(*libc.TLS, uintptr, int32, uintptr)
 59529  		}{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 {
 59530  			f func(*libc.TLS, uintptr, int32, uintptr)
 59531  		}{sumintInverse})),
 59532  		uintptr(0))
 59533  
 59534  	if rc != SQLITE_OK {
 59535  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59536  		return TCL_ERROR
 59537  	}
 59538  	return TCL_OK
 59539  }
 59540  
 59541  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59542  	bp := tls.Alloc(8)
 59543  	defer tls.Free(8)
 59544  
 59545  	var rc int32
 59546  
 59547  	if objc != 2 {
 59548  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59549  		return TCL_ERROR
 59550  	}
 59551  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59552  		return TCL_ERROR
 59553  	}
 59554  
 59555  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 59556  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59557  			f func(*libc.TLS, uintptr, int32, uintptr)
 59558  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 59559  
 59560  	if rc != SQLITE_OK {
 59561  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59562  		return TCL_ERROR
 59563  	}
 59564  	return TCL_OK
 59565  }
 59566  
 59567  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 59568  	var i int32
 59569  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 59570  		FzName       uintptr
 59571  		FxProc       uintptr
 59572  		FclientData  int32
 59573  		F__ccgo_pad1 [4]byte
 59574  	}{})); i++ {
 59575  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 59576  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 59577  	}
 59578  	return TCL_OK
 59579  }
 59580  
 59581  var aObjCmd14 = [4]struct {
 59582  	FzName       uintptr
 59583  	FxProc       uintptr
 59584  	FclientData  int32
 59585  	F__ccgo_pad1 [4]byte
 59586  }{
 59587  	{FzName: ts + 39401, FxProc: 0},
 59588  	{FzName: ts + 39432, FxProc: 0},
 59589  	{FzName: ts + 39467, FxProc: 0},
 59590  	{FzName: ts + 39486, FxProc: 0},
 59591  }
 59592  
 59593  func init() {
 59594  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 59595  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 59596  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 59597  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 59598  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 59599  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 59600  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 59601  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 59602  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 59603  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 59604  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 59605  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 59606  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 59607  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 59608  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 59609  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 59610  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 59611  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 59612  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 59613  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 59614  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 59615  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 59616  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 59617  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 59618  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 59619  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 59620  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 59621  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 59622  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 59623  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 59624  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 59625  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 59626  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 59627  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 59628  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 59629  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 59630  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 59631  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 59632  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 59633  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 59634  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 59635  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 59636  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 59637  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 59638  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 59639  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 59640  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 59641  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 59642  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 59643  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 59644  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 59645  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 59646  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 59647  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 59648  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 59649  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59650  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59651  	}{db_enter}))
 59652  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59653  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59654  	}{db_leave}))
 59655  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59656  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59657  	}{sqlite3_mprintf_int}))
 59658  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59659  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59660  	}{sqlite3_mprintf_int64}))
 59661  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59662  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59663  	}{sqlite3_mprintf_long}))
 59664  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59665  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59666  	}{sqlite3_mprintf_str}))
 59667  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59668  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59669  	}{sqlite3_snprintf_str}))
 59670  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59671  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59672  	}{sqlite3_mprintf_stronly}))
 59673  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59674  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59675  	}{sqlite3_mprintf_double}))
 59676  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59677  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59678  	}{sqlite3_mprintf_scaled}))
 59679  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59680  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59681  	}{sqlite3_mprintf_hexdouble}))
 59682  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59683  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59684  	}{test_mprintf_z}))
 59685  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59686  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59687  	}{test_mprintf_n}))
 59688  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59689  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59690  	}{test_snprintf_int}))
 59691  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59692  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59693  	}{test_last_rowid}))
 59694  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 59695  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59696  	}{test_exec_printf}))
 59697  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 59698  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59699  	}{test_exec_hex}))
 59700  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 59701  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59702  	}{test_exec}))
 59703  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 59704  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59705  	}{test_exec_nr}))
 59706  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 59707  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59708  	}{test_get_table_printf}))
 59709  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 59710  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59711  	}{sqlite_test_close}))
 59712  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 59713  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59714  	}{sqlite_test_close_v2}))
 59715  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 59716  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59717  	}{test_create_function}))
 59718  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 59719  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59720  	}{test_create_aggregate}))
 59721  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 59722  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59723  	}{test_drop_modules}))
 59724  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 59725  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59726  	}{test_register_func}))
 59727  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 59728  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59729  	}{sqlite_abort}))
 59730  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 59731  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59732  	}{test_bind}))
 59733  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 59734  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59735  	}{test_breakpoint}))
 59736  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 59737  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59738  	}{test_key}))
 59739  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 59740  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59741  	}{test_rekey}))
 59742  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 59743  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59744  	}{test_interrupt}))
 59745  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 59746  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59747  	}{delete_function}))
 59748  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 59749  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59750  	}{delete_collation}))
 59751  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 59752  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59753  	}{get_autocommit}))
 59754  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 59755  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59756  	}{test_busy_timeout}))
 59757  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 59758  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59759  	}{test_printf}))
 59760  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 59761  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59762  	}{test_io_trace}))
 59763  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 59764  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59765  	}{clang_sanitize_address}))
 59766  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59767  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59768  	}{pager_open}))
 59769  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59770  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59771  	}{pager_close}))
 59772  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59773  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59774  	}{pager_commit}))
 59775  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59776  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59777  	}{pager_rollback}))
 59778  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59779  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59780  	}{pager_stmt_begin}))
 59781  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59782  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59783  	}{pager_stmt_commit}))
 59784  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59785  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59786  	}{pager_stmt_rollback}))
 59787  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59788  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59789  	}{pager_stats}))
 59790  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59791  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59792  	}{pager_pagecount}))
 59793  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59794  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59795  	}{page_get}))
 59796  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59797  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59798  	}{page_lookup}))
 59799  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59800  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59801  	}{page_unref}))
 59802  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59803  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59804  	}{page_read}))
 59805  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59806  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59807  	}{page_write}))
 59808  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59809  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59810  	}{page_number}))
 59811  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 59812  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59813  	}{pager_truncate}))
 59814  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 59815  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59816  	}{fake_big_file}))
 59817  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 59818  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59819  	}{testBitvecBuiltinTest}))
 59820  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 59821  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59822  	}{testPendingByte}))
 59823  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 59824  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59825  	}{faultInstallCmd}))
 59826  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59827  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59828  	}{btree_open}))
 59829  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59830  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59831  	}{btree_close}))
 59832  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59833  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59834  	}{btree_begin_transaction}))
 59835  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59836  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59837  	}{btree_pager_stats}))
 59838  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59839  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59840  	}{btree_cursor}))
 59841  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59842  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59843  	}{btree_close_cursor}))
 59844  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59845  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59846  	}{btree_next}))
 59847  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59848  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59849  	}{btree_eof}))
 59850  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59851  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59852  	}{btree_payload_size}))
 59853  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59854  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59855  	}{btree_first}))
 59856  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59857  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59858  	}{btree_varint_test}))
 59859  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59860  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59861  	}{btree_from_db}))
 59862  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59863  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59864  	}{btree_ismemdb}))
 59865  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59866  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59867  	}{btree_set_cache_size}))
 59868  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59869  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59870  	}{tcl_thread_create}))
 59871  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59872  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59873  	}{tcl_thread_wait}))
 59874  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59875  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59876  	}{tcl_thread_halt}))
 59877  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59878  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59879  	}{tcl_thread_argc}))
 59880  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59881  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59882  	}{tcl_thread_argv}))
 59883  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59884  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59885  	}{tcl_thread_colname}))
 59886  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59887  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59888  	}{tcl_thread_result}))
 59889  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59890  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59891  	}{tcl_thread_error}))
 59892  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59893  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59894  	}{tcl_thread_compile}))
 59895  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59896  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59897  	}{tcl_thread_step}))
 59898  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59899  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59900  	}{tcl_thread_finalize}))
 59901  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59902  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59903  	}{tcl_thread_swap}))
 59904  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59905  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59906  	}{tcl_thread_db_get}))
 59907  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59908  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59909  	}{tcl_thread_db_put}))
 59910  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59911  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59912  	}{tcl_thread_stmt_get}))
 59913  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59914  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59915  	}{binarize}))
 59916  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59917  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59918  	}{test_value_overhead}))
 59919  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59920  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59921  	}{test_translate}))
 59922  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59923  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59924  	}{test_translate_selftest}))
 59925  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59926  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59927  	}{tcl_client_create}))
 59928  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59929  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59930  	}{tcl_client_wait}))
 59931  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59932  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59933  	}{tcl_client_halt}))
 59934  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59935  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59936  	}{tcl_client_argc}))
 59937  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59938  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59939  	}{tcl_client_argv}))
 59940  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59941  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59942  	}{tcl_client_colname}))
 59943  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59944  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59945  	}{tcl_client_result}))
 59946  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59947  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59948  	}{tcl_client_error}))
 59949  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59950  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59951  	}{tcl_client_compile}))
 59952  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59953  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59954  	}{tcl_client_step}))
 59955  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59956  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59957  	}{tcl_client_reset}))
 59958  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59959  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59960  	}{tcl_client_finalize}))
 59961  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59962  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59963  	}{tcl_client_swap}))
 59964  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 59965  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 59966  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 59967  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59968  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59969  	}{test_shutdown}))
 59970  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59971  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59972  	}{test_initialize}))
 59973  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59974  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59975  	}{test_config}))
 59976  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59977  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59978  	}{test_enter_static_mutex}))
 59979  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59980  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59981  	}{test_leave_static_mutex}))
 59982  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59983  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59984  	}{test_enter_db_mutex}))
 59985  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59986  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59987  	}{test_leave_db_mutex}))
 59988  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59989  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59990  	}{test_alloc_mutex}))
 59991  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59992  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59993  	}{test_install_mutex_counters}))
 59994  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59995  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59996  	}{test_read_mutex_counters}))
 59997  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59998  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59999  	}{test_clear_mutex_counters}))
 60000  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 60001  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 60002  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 60003  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 60004  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 60005  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 60006  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 60007  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 60008  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 60009  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 60010  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 60011  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 60012  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 60013  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 60014  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 60015  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 60016  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 60017  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 60018  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 60019  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 60020  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 60021  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 60022  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 60023  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 60024  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 60025  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 60026  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 60027  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 60028  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 60029  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 60030  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 60031  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 60032  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 60033  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 60034  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 60035  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 60036  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 60037  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 60038  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 60039  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 60040  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 60041  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 60042  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 60043  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 60044  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 60045  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 60046  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 60047  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 60048  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 60049  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 60050  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 60051  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 60052  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 60053  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 60054  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 60055  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 60056  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 60057  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 60058  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 60059  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 60060  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 60061  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 60062  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 60063  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 60064  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 60065  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 60066  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 60067  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 60068  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 60069  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 60070  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 60071  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 60072  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 60073  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 60074  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 60075  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 60076  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 60077  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 60078  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 60079  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 60080  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 60081  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 60082  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 60083  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 60084  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 60085  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 60086  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 60087  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 60088  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 60089  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 60090  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 60091  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 60092  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 60093  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 60094  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 60095  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 60096  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 60097  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 60098  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 60099  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 60100  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 60101  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 60102  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 60103  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 60104  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 60105  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 60106  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 60107  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 60108  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 60109  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 60110  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 60111  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 60112  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 60113  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 60114  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 60115  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 60116  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 60117  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 60118  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 60119  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 60120  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 60121  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 60122  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 60123  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 60124  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 60125  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 60126  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 60127  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 60128  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 60129  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 60130  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 60131  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 60132  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 60133  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 60134  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 60135  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 60136  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 60137  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 60138  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 60139  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 60140  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 60141  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 60142  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 60143  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 60144  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 60145  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 60146  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 60147  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 60148  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 60149  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 60150  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 60151  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 60152  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 60153  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 60154  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 60155  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 60156  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 60157  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 60158  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 60159  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 60160  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 60161  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 60162  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 60163  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 60164  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 60165  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 60166  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 60167  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 60168  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60169  		f func(*libc.TLS, uintptr, int32) uintptr
 60170  	}{sqlite3.Xsqlite3_column_text}))
 60171  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 60172  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 60173  		f func(*libc.TLS, uintptr, int32) uintptr
 60174  	}{sqlite3.Xsqlite3_column_name}))
 60175  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 60176  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60177  		f func(*libc.TLS, uintptr, int32) int32
 60178  	}{sqlite3.Xsqlite3_column_int}))
 60179  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 60180  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 60181  		f func(*libc.TLS, uintptr, int32) int32
 60182  	}{sqlite3.Xsqlite3_column_bytes}))
 60183  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 60184  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60185  		f func(*libc.TLS, uintptr, int32) uintptr
 60186  	}{sqlite3.Xsqlite3_column_decltype}))
 60187  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 60188  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 60189  		f func(*libc.TLS, uintptr, int32) uintptr
 60190  	}{sqlite3.Xsqlite3_column_database_name}))
 60191  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 60192  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60193  		f func(*libc.TLS, uintptr, int32) uintptr
 60194  	}{sqlite3.Xsqlite3_column_table_name}))
 60195  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 60196  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 60197  		f func(*libc.TLS, uintptr, int32) uintptr
 60198  	}{sqlite3.Xsqlite3_column_origin_name}))
 60199  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 60200  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60201  		f func(*libc.TLS, uintptr, int32) int32
 60202  	}{sqlite3.Xsqlite3_column_bytes16}))
 60203  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 60204  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 60205  		f func(*libc.TLS, uintptr, int32) uintptr
 60206  	}{sqlite3.Xsqlite3_column_text16}))
 60207  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 60208  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60209  		f func(*libc.TLS, uintptr, int32) uintptr
 60210  	}{sqlite3.Xsqlite3_column_name16}))
 60211  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 60212  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 60213  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60214  		f func(*libc.TLS, uintptr, int32) uintptr
 60215  	}{sqlite3.Xsqlite3_column_decltype16}))
 60216  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 60217  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 60218  		f func(*libc.TLS, uintptr, int32) uintptr
 60219  	}{sqlite3.Xsqlite3_column_database_name16}))
 60220  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 60221  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60222  		f func(*libc.TLS, uintptr, int32) uintptr
 60223  	}{sqlite3.Xsqlite3_column_table_name16}))
 60224  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 60225  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 60226  		f func(*libc.TLS, uintptr, int32) uintptr
 60227  	}{sqlite3.Xsqlite3_column_origin_name16}))
 60228  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 60229  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 60230  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 60231  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 60232  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 60233  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 60234  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 60235  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 60236  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 60237  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 60238  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 60239  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 60240  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 60241  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 60242  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 60243  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 60244  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 60245  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 60246  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 60247  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 60248  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 60249  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 60250  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 60251  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 60252  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 60253  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 60254  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 60255  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 60256  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 60257  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 60258  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 60259  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 60260  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 60261  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 60262  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 60263  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 60264  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 60265  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 60266  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 60267  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 60268  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 60269  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 60270  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 60271  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 60272  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 60273  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 60274  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 60275  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 60276  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 60277  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 60278  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 60279  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 60280  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 60281  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 60282  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 60283  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 60284  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 60285  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 60286  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 60287  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 60288  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 60289  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 60290  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 60291  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 60292  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 60293  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 60294  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 60295  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 60296  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 60297  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 60298  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 60299  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 60300  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 60301  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 60302  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 60303  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 60304  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 60305  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 60306  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 60307  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 60308  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 60309  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 60310  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 60311  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 60312  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 60313  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 60314  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 60315  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 60316  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 60317  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 60318  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 60319  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 60320  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 60321  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 60322  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 60323  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 60324  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 60325  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 60326  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 60327  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 60328  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 60329  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 60330  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 60331  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 60332  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 60333  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 60334  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 60335  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 60336  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 60337  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 60338  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 60339  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 60340  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 60341  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 60342  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 60343  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 60344  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 60345  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 60346  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 60347  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 60348  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 60349  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 60350  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 60351  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 60352  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 60353  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 60354  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 60355  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 60356  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 60357  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60358  		f func(*libc.TLS, uintptr, int32, int32) int32
 60359  	}{ts_open}))
 60360  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 60361  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60362  		f func(*libc.TLS, uintptr, int32) int32
 60363  	}{ts_access}))
 60364  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60365  		f func(*libc.TLS, uintptr, size_t) uintptr
 60366  	}{ts_getcwd}))
 60367  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60368  		f func(*libc.TLS, uintptr, uintptr) int32
 60369  	}{ts_stat}))
 60370  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60371  		f func(*libc.TLS, int32, uintptr) int32
 60372  	}{ts_fstat}))
 60373  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60374  		f func(*libc.TLS, int32, off_t) int32
 60375  	}{ts_ftruncate}))
 60376  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60377  		f func(*libc.TLS, int32, int32, uintptr) int32
 60378  	}{ts_fcntl}))
 60379  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60380  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60381  	}{ts_read}))
 60382  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60383  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60384  	}{ts_pread}))
 60385  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60386  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60387  	}{ts_pread64}))
 60388  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60389  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60390  	}{ts_write}))
 60391  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60392  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60393  	}{ts_pwrite}))
 60394  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60395  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60396  	}{ts_pwrite64}))
 60397  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60398  		f func(*libc.TLS, int32, mode_t) int32
 60399  	}{ts_fchmod}))
 60400  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60401  		f func(*libc.TLS, int32, off_t, off_t) int32
 60402  	}{ts_fallocate}))
 60403  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 60404  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 60405  	}{ts_mmap}))
 60406  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 60407  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 60408  	}{ts_mremap}))
 60409  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 60410  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 60411  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 60412  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 60413  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 60414  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 60415  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 60416  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 60417  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 60418  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 60419  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 60420  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 60421  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 60422  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 60423  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 60424  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 60425  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 60426  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 60427  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 60428  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 60429  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 60430  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 60431  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 60432  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 60433  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 60434  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 60435  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 60436  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 60437  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 60438  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 60439  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 60440  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 60441  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 60442  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 60443  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 60444  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 60445  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 60446  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 60447  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 60448  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 60449  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 60450  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 60451  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 60452  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 60453  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 60454  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 60455  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 60456  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 60457  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 60458  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 60459  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 60460  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 60461  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 60462  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 60463  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 60464  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 60465  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 60466  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 60467  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 60468  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 60469  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 60470  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 60471  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 60472  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 60473  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 60474  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 60475  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 60476  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 60477  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 60478  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 60479  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 60480  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 60481  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 60482  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 60483  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 60484  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 60485  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 60486  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 60487  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 60488  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 60489  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 60490  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 60491  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 60492  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 60493  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 60494  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 60495  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 60496  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 60497  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 60498  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 60499  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 60500  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 60501  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 60502  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 60503  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 60504  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 60505  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 60506  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 60507  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 60508  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 60509  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 60510  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 60511  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 60512  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 60513  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 60514  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 60515  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 60516  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 60517  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 60518  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 60519  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 60520  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 60521  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 60522  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 60523  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 60524  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 60525  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 60526  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 60527  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 60528  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 60529  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 60530  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 60531  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 60532  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 60533  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 60534  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 60535  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 60536  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 60537  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 60538  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 60539  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 60540  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 60541  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 60542  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 60543  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 60544  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 60545  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 60546  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 60547  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 60548  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 60549  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 60550  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 60551  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 60552  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 60553  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 60554  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 60555  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 60556  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 60557  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 60558  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 60559  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 60560  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 60561  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 60562  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 60563  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 60564  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 60565  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 60566  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 60567  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 60568  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 60569  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 60570  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 60571  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 60572  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 60573  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 60574  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 60575  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 60576  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 60577  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 60578  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 60579  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 60580  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 60581  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 60582  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 60583  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 60584  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 60585  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 60586  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 60587  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 60588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 60589  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 60590  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 60591  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 60592  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 60593  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 60594  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 60595  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 60596  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 60597  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 60598  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 60599  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 60600  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 60601  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 60602  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 60603  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 60604  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 60605  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 60606  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 60607  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 60608  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 60609  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 60610  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 60611  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 60612  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 60613  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 60614  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 60615  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 60616  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 60617  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 60618  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 60619  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 60620  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 60621  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 60622  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 60623  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 60624  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 60625  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 60626  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 60627  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 60628  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 60629  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 60630  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 60631  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 60632  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 60633  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 60634  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 60635  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 60636  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 60637  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 60638  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 60639  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 60640  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 60641  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 60642  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 60643  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 60644  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 60645  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 60646  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 60647  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 60648  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 60649  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 60650  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 60651  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 60652  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 60653  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 60654  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 60655  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 60656  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 60657  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 60658  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 60659  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 60660  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 60661  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 60662  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 60663  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 60664  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 60665  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 60666  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 60667  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 60668  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 60669  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 60670  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 60671  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 60672  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 60673  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 60674  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 60675  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 60676  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 60677  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 60678  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 60679  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 60680  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 60681  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 60682  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 60683  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 60684  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 60685  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 60686  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 60687  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 60688  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 60689  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 60690  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 60691  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 60692  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 60693  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 60694  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 60695  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 60696  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 60697  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 60698  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 60699  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 60700  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 60701  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 60702  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 60703  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 60704  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 60705  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 60706  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 60707  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 60708  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 60709  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 60710  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 60711  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 60712  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 60713  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 60714  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 60715  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 60716  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 60717  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 60718  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 60719  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 60720  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 60721  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 60722  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 60723  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 60724  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 60725  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 60726  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 60727  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 60728  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 60729  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 60730  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 60731  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 60732  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 60733  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 60734  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 60735  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 60736  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 60737  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 60738  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 60739  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 60740  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 60741  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 60742  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 60743  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 60744  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 60745  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 60746  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 60747  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 60748  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 60749  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 60750  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 60751  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 60752  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 60753  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 60754  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 60755  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 60756  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 60757  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 60758  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 60759  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 60760  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 60761  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 60762  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 60763  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 60764  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 60765  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 60766  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 60767  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 60768  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 60769  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 60770  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 60771  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 60772  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 60773  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 60774  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 60775  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 60776  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 60777  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 60778  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 60779  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 60780  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 60781  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 60782  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 60783  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 60784  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 60785  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 60786  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 60787  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 60788  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 60789  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 60790  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 60791  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 60792  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 60793  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 60794  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 60795  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 60796  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 60797  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 60798  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 60799  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 60800  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 60801  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 60802  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 60803  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 60804  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 60805  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 60806  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 60807  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 60808  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 60809  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 60810  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 60811  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 60812  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 60813  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 60814  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 60815  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 60816  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 60817  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 60818  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 60819  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 60820  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 60821  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 60822  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 60823  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 60824  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 60825  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 60826  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 60827  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 60828  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 60829  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 60830  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 60831  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 60832  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 60833  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 60834  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 60835  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 60836  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 60837  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 60838  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 60839  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 60840  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 60841  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 60842  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 60843  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 60844  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 60845  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 60846  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 60847  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 60848  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 60849  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 60850  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 60851  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 60852  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 60853  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 60854  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 60855  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 60856  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 60857  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 60858  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 60859  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 60860  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 60861  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 60862  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 60863  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 60864  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 60865  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 60866  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 60867  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 60868  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 60869  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 60870  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 60871  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 60872  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 60873  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 60874  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 60875  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 60876  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 60877  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 60878  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 60879  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 60880  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 60881  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 60882  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 60883  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 60884  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 60885  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 60886  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 60887  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 60888  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 60889  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 60890  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 60891  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 60892  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 60893  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 60894  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 60895  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 60896  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 60897  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 60898  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 60899  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 60900  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 60901  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 60902  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 60903  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 60904  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 60905  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 60906  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 60907  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 60908  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 60909  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 60910  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 60911  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 60912  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 60913  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 60914  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 60915  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 60916  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 60917  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 60918  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 60919  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 60920  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 60921  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 60922  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 60923  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 60924  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 60925  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 60926  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 60927  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 60928  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 60929  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 60930  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 60931  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 60932  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 60933  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 60934  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 60935  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 60936  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 60937  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 60938  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 60939  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 60940  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 60941  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 60942  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 60943  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 60944  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 60945  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 60946  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 60947  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 60948  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 60949  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 60950  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 60951  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 60952  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 60953  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 60954  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 60955  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 60956  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 60957  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 60958  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 60959  }
 60960  
 60961  var ts1 = "%s\x00internal error!\x00SELECT * FROM main.%Q WHERE sample()\x00expert\x00PRAGMA table_xinfo=%Q\x00main\x00binary\x00, \x00%Q\x00 COLLATE %Q\x00 COLLATE %s\x00 DESC\x00PRAGMA index_list=%Q\x00PRAGMA index_xInfo=%Q\x00%s_idx_%08x\x00SELECT count(*) FROM sqlite_schema WHERE name=%Q AND type in ('index','table','view')\x00CREATE INDEX \"%w\" ON \"%w\"(%s)\x00CREATE INDEX %s ON %s(%s)\x00EXPLAIN QUERY PLAN %s\x00 USING INDEX \x00 USING COVERING INDEX \x00%s\n\x00%s;\n\x00SELECT 'CREATE TEMP' || substr(sql, 7) FROM sqlite_schema WHERE tbl_name = %Q AND type IN ('table', 'trigger') ORDER BY type;\x00ALTER TABLE temp.%Q RENAME TO %Q\x00INSERT INTO %Q VALUES(\x00%s?\x00\x00)\x00UPDATE %Q SET \x00%s%Q=?\x00DELETE FROM %Q\x00t592690916721053953805701627921227776\x00DROP TABLE t592690916721053953805701627921227776\x00SELECT type, name, sql, 1 FROM sqlite_schema WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%%'  UNION ALL SELECT type, name, sql, 2 FROM sqlite_schema WHERE type = 'trigger'  AND tbl_name IN(SELECT name FROM sqlite_schema WHERE type = 'view') ORDER BY 4, 1\x00CREATE TABLE x(\x00%s%Q COLLATE %s\x00CREATE VIRTUAL TABLE %Q USING expert(%Q)\x00SELECT max(i.seqno) FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l,   pragma_index_info(l.name) AS i WHERE s.type = 'table'\x00%sx.%Q IS rem(%d, x.%Q) COLLATE %s\x00%s%d\x00SELECT %s FROM %Q x ORDER BY %s\x00SELECT %s FROM temp.t592690916721053953805701627921227776 x ORDER BY %s\x00%d\x00 %d\x00DROP TABLE IF EXISTS temp.t592690916721053953805701627921227776\x00CREATE TABLE temp.t592690916721053953805701627921227776 AS SELECT * FROM %Q\x00SELECT s.rowid, s.name, l.name FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l WHERE s.type = 'table'\x00SELECT name, coll FROM pragma_index_xinfo(?) WHERE key\x00INSERT INTO sqlite_stat1 VALUES(?, ?, ?)\x00ANALYZE; PRAGMA writable_schema=1\x00rem\x00sample\x00ANALYZE sqlite_schema\x00:memory:\x00SELECT sql FROM sqlite_schema WHERE name NOT LIKE 'sqlite_%%' AND sql NOT LIKE 'CREATE VIRTUAL %%'\x00Cannot find a unique index name to propose.\x00%s;%s%s\n\x00 -- stat1: \x00no such handle: \x00sql\x00TABLE\x00analyze\x00count\x00report\x00STMT EREPORT\x00destroy\x00SUBCOMMAND ...\x00sub-command\x00indexes\x00plan\x00candidates\x00DB\x00sqlite3expert%d\x00out of memory\x00sqlite3_expert_new\x00SQLITE_DONE\x00SQLITE_ERROR\x00SQLITE_OK\x00SELECT fts5(?1)\x00error: \x00fts5_api_ptr\x00f5t_2_%lld\x00xColumnCount\x00xRowCount\x00xColumnTotalSize\x00COL\x00xTokenize\x00TEXT SCRIPT\x00xPhraseCount\x00xPhraseSize\x00PHRASE\x00xInstCount\x00xInst\x00IDX\x00xRowid\x00xColumnText\x00xColumnSize\x00xQueryPhrase\x00PHRASE SCRIPT\x00xSetAuxdata\x00VALUE\x00xGetAuxdata\x00CLEAR\x00xSetAuxdataInt\x00INTEGER\x00xGetAuxdataInt\x00xPhraseForeach\x00IPHRASE COLVAR OFFVAR SCRIPT\x00xPhraseColumnForeach\x00IPHRASE COLVAR SCRIPT\x00SUB-COMMAND\x00f5t_%lld\x00bytearray\x00boolean\x00double\x00wideInt\x00int\x00DB NAME SCRIPT\x00?-subst? DB NAME TEXT\x00-subst\x00unrecognized option: \x00no such tokenizer: \x00error in tokenizer.xCreate()\x00error in tokenizer.xTokenize()\x00document\x00aux\x00query\x00prefixquery\x00invalid\x00-colocated\x00sqlite3_fts5_token may only be used by tokenizer callback\x00?-colocated? TEXT START END\x00error in fts5_api.xCreateTokenizer()\x00NSLOT TOKEN\x00sqlite3_fts5_create_tokenizer\x00sqlite3_fts5_token\x00sqlite3_fts5_tokenize\x00sqlite3_fts5_create_function\x00sqlite3_fts5_may_be_corrupt\x00sqlite3_fts5_token_hash\x00sqlite3_fts5_register_matchinfo\x00sqlite3_fts5_register_fts5tokenize\x00unrecognized matchinfo flag: %c\x00pcx\x00matchinfo\x00CREATE TABLE x(input HIDDEN, token, start, end, position)\x00fts5tokenize\x00apndvfs\x00Start-Of-SQLite3-\x00apnd(%lld)/%z\x00SQLite format 3\x00%s: cost must be between 1 and %d\x00%s: maximum string length is %d\x00%s: iLang must be between 0 and %d\x00?\x00SELECT * FROM %Q.%Q\x00%s: %s\x00%s: %s has %d columns, expected 4\x00vocabulary_table\x00vocabulary_word\x00vocabulary_language\x00edit_distances\x00unrecognized argument: [%s]\n\x00no edit_distances table specified\x00CREATE TABLE x(word,distance,language,command HIDDEN,nword HIDDEN)\x000123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz~\x00SELECT \"%w\" FROM \"%w\"\x00 WHERE \"%w\">=?1 AND \"%w\"=?2 ORDER BY 1\x00SELECT \"%w\" FROM \"%w\" WHERE \"%w\">=?1 ORDER BY 1\x00*\x00DELETE from %s is not allowed\x00UPDATE of %s is not allowed\x00INSERT INTO %s allowed for column [command] only\x00approximate_match\x00int32\x00int64\x00char*\x00CREATE TABLE x(value,pointer hidden,count hidden,ctype hidden)\x00carray-bind\x00carray\x00unknown datatype: %Q\x00inttoptr\x00cksmvfs\x00ZV-\x00checksum fault offset %lld of \"%s\"\x00checksum_verification\x00enable%\x00yes\x00on\x00page_size\x00cksm/%z\x00verify_checksum\x00tablename\x00idcolumn\x00parentcolumn\x00CREATE TABLE x(id,depth,root HIDDEN,tablename HIDDEN,idcolumn HIDDEN,parentcolumn HIDDEN)\x00SELECT \"%w\".\"%w\" FROM \"%w\" WHERE \"%w\".\"%w\"=?1\x00transitive_closure\x00rb\x00cannot open '%s' for reading\x00line %d: unescaped %c character\x00line %d: unterminated %c-quoted field\n\x00more than one '%s' parameter\x00true\x00no\x00off\x00false\x00header\x00more than one 'header' parameter\x00testflags\x00columns\x00more than one 'columns' parameter\x00column= value must be positive\x00bad parameter: '%s'\x00must specify either filename= or data= but not both\x00%sc%d TEXT\x00,\x00%s\"%w\" TEXT\x00bad schema: '%s' - %s\x00filename\x00data\x00schema\x00csv\x00csv_wr\x00decimal_sum\x00decimal\x00decimal_cmp\x00decimal_add\x00decimal_sub\x00decimal_mul\x00 \x00eval\x00CREATE TABLE x(addr,opcode,p1,p2,p3,p4,p5,comment,sql HIDDEN)\x00EXPLAIN %s\x00explain\x00wb\x00wrong number of arguments to function writefile()\x00failed to create symlink: %s\x00failed to create directory: %s\x00failed to write file: %s\x00CREATE TABLE x(name,mode,mtime,data,path HIDDEN,dir HIDDEN)\x00cannot read directory: %s\x00%s/%s\x00cannot stat file: %s\x00table function fsdir requires an argument\x00table function fsdir requires a non-NULL argument\x00fsdir\x00readfile\x00writefile\x00lsmode\x00%s: ruleset must be between 0 and %d\x00%s: wrong number of CREATE VIRTUAL TABLE arguments\x00CREATE TABLE x(word,distance,ruleset)\x00fuzzer\x00ieee754(%lld,%d)\x00ieee754\x00ieee754_mantissa\x00ieee754_exponent\x00ieee754_to_blob\x00ieee754_from_blob\x00BEGIN; SELECT * FROM %s%q%ssqlite_schema\x00'\x00'.\x00PRAGMA %s%q%spage_size\x00sqlite3_mmap_warm_cache: Warmed up %d pages of %s\x00END\x00AND (%s)\x00collate \"%w\"\x00SELECT %s FROM %s WHERE %s>=(?1 || ?2) %s   AND %s<=(?1 || char(1114111)) %s   %s ORDER BY 1 %s ASC LIMIT 1\x00next_char\x00NULL\x00is\x00not\x00in(\x00in(select\x00in(with\x00?,?,?\x002nd argument to percentile() is not a number between 0.0 and 100.0\x002nd argument to percentile() is not the same for all input rows\x001st argument to percentile() is not numeric\x00Inf input to percentile()\x00percentile\x00CREATE TABLE prefixes(prefix TEXT, original_string TEXT HIDDEN)\x00prefixes\x00prefix_length\x00vn\x00ix\x00cn\x00op\x00ux\x00rhs\x00a\x00b\x00c\x00d\x00e\x00flags\x00CREATE TABLE x( vn TEXT, ix INT, cn TEXT, op INT, ux BOOLEAN, rhs TEXT, a, b, c, d, e, flags INT HIDDEN)\x00%lld\x00%!f\x00x'\x00%02x\x00nConstraint,%d,,,,\n\x00aConstraint,%d,%s,%d,%d,\x00\n\x00nOrderBy,%d,,,,\n\x00aOrderBy,%d,%s,%d,,\n\x00rowid\x00sqlite3_vtab_distinct,%d,,,,\n\x00idxFlags,%d,,,,\n\x00colUsed,%d,,,,\n\x00idxNum,%d,,,,\n\x00orderByConsumed,%d,,,,\n\x00qpvtab\x00unknown \\ escape\x00afnrtv\\()*.+?[$^{|}]\x00\a\f\n\r\t\v\x00unmatched '('\x00'*' without operand\x00'+' without operand\x00'?' without operand\x00'{m,n}' without operand\x00unmatched '{'\x00n less than m in '{m,n}'\x00both m and n are zero in '{m,n}'\x00POSIX character classes not supported\x00unclosed '['\x00unrecognized character\x00regexp\x00regexpi\x00remember\x00CREATE TABLE x(value,start hidden,stop hidden,step hidden)\x00first argument to \"generate_series()\" missing or unusable\x00generate_series() requires SQLite 3.8.12 or later\x00generate_series\x00.ABCDHLRMY9 ?\x00non-ASCII input to editdist()\x00NULL input to editdist()\x00SELECT iLang, cFrom, cTo, iCost FROM \"%w\" WHERE iLang>=0 ORDER BY iLang\x00editdist3\x00DROP TABLE IF EXISTS \"%w\".\"%w_vocab\"\x00CREATE TABLE x(word,rank,distance,langid, score, matchlen, phonehash HIDDEN, top HIDDEN, scope HIDDEN, srchcnt HIDDEN, soundslike HIDDEN, command HIDDEN)\x00CREATE TABLE IF NOT EXISTS \"%w\".\"%w_vocab\"(\n  id INTEGER PRIMARY KEY,\n  rank INT,\n  langid INT,\n  word TEXT,\n  k1 TEXT,\n  k2 TEXT\n);\n\x00CREATE INDEX IF NOT EXISTS \"%w\".\"%w_vocab_index_langid_k2\" ON \"%w_vocab\"(langid,k2);\x00edit_cost_table=\x00bad argument to spellfix1(): \"%s\"\x00SELECT id, word, rank, coalesce(k1,word)  FROM \"%w\".\"%w_vocab\" WHERE langid=%d AND k2>=?1 AND k2<?2\x00SELECT word, rank, NULL, langid, id FROM \"%w\".\"%w_vocab\"%s\x00 WHERE rowid=?\x00ROLLBACK\x00IGNORE\x00ABORT\x00REPLACE\x00DELETE FROM \"%w\".\"%w_vocab\"  WHERE id=%lld\x00NOT NULL constraint failed: %s.word\x00reset\x00null\x00unknown value for %s.command: \"%w\"\x00INSERT INTO \"%w\".\"%w_vocab\"(rank,langid,word,k1,k2) VALUES(%d,%d,%Q,nullif(%Q,%Q),%Q)\x00INSERT OR %s INTO \"%w\".\"%w_vocab\"(id,rank,langid,word,k1,k2) VALUES(%lld,%d,%d,%Q,nullif(%Q,%Q),%Q)\x00UPDATE OR %s \"%w\".\"%w_vocab\" SET id=%lld, rank=%d, langid=%d, word=%Q, k1=nullif(%Q,%Q), k2=%Q WHERE id=%lld\x00ALTER TABLE \"%w\".\"%w_vocab\" RENAME TO \"%w_vocab\"\x00spellfix1_translit\x00spellfix1_editdist\x00spellfix1_phonehash\x00spellfix1_scriptcode\x00spellfix1\x00922337203685477580\x00tointeger\x00toreal\x00sql error: %s\x00_rowid_\x00integer\x00no such rowid table: %s%s%s\x00.\x00SELECT group_concat(quote(name) || '.' || quote(type)) FROM pragma_table_info(?, ?)\x00source table schema mismatch\x00swarmvtab: no such SQL parameter: %s\x00maxopen\x00swarmvtab: illegal maxopen value\x00missing\x00swarmvtab: duplicate \"missing\" option\x00SELECT \"%w\"(?%s)\x00,?\x00openclose\x00swarmvtab: duplicate \"openclose\" option\x00SELECT \"%w\"(?,?%s)\x00swarmvtab: unrecognized option: %s\x00SELECT \"%w\"(?)\x00swarmvtab: parse error: %s\x00swarmvtab\x00unionvtab\x00temp\x00%s tables must be created in TEMP schema\x00wrong number of arguments for %s\x00SELECT * FROM (%z) ORDER BY 3\x00rowid range mismatch error\x00no source tables configured\x00SELECT 'CREATE TABLE xyz('    || group_concat(quote(name) || ' ' || type, ', ')    || ')',max((cid+1) * (type='INTEGER' COLLATE nocase AND pk=1))-1 FROM pragma_table_info(%Q, ?)\x00SELECT rowid, * FROM %Q %s %lld\x00WHERE _rowid_ <=\x00-- \x00%z%sSELECT rowid, * FROM %s%q%s%Q\x00 UNION ALL \x00%z WHERE rowid=%lld\x00WHERE\x00%z WHERE rowid>=%lld\x00AND\x00%z %s rowid<=%lld\x00CREATE TABLE x(value)\x00wholenumber\x00rbu_delta\x00step\x00close\x00create_rbu_delta\x00savestate\x00dbMain_eval\x00SQL\x00bp_progress\x00db\x00RBU\x00state\x00progress\x00close_no_error\x00temp_size_limit\x00LIMIT\x00temp_size\x00dbRbu_eval\x00METHOD\x00method\x00 - \x00oal\x00move\x00checkpoint\x00done\x00error\x00NAME TARGET-DB RBU-DB ?STATE-DB?\x00NAME TARGET-DB ?STATE-DB?\x00?-default? NAME PARENT\x00NAME\x00sqlite3rbu_db(0, 0)!=0\x00sqlite3rbu\x00sqlite3rbu_vacuum\x00sqlite3rbu_create_vfs\x00sqlite3rbu_destroy_vfs\x00sqlite3rbu_internal_test\x00%p\x00zero\x00user\x00user_is_zero\x00box\x00DB SCRIPT\x00partly\x00fully\x00aParam\x00aCoord\x00anQueue\x00iLevel\x00mxLevel\x00iRowid\x00rParentScore\x00eParentWithin\x00value\x00qbox\x00register_box_geom\x00register_box_query\x00DB SQL\x00error in sql_exec_changeset()\x00sqlite3session_streams\x00attach\x00changeset\x00delete\x00enable\x00BOOL\x00indirect\x00isempty\x00table_filter\x00SCRIPT\x00patchset\x00diff\x00FROMDB TBL\x00memory_used\x00changeset_size\x00object_config_size\x00CMD DB-HANDLE DB-NAME\x00n\x00i\x00f\x00t\x00FOREIGN_KEY\x00INSERT\x00UPDATE\x00DELETE\x00DATA\x00NOTFOUND\x00CONFLICT\x00CONSTRAINT\x00OMIT\x00-nosavepoint\x00-invert\x00?-nosavepoint? ?-inverse? DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET\x00CHANGESET\x00LEFT RIGHT\x00-next\x00?-next? ?-invert? VARNAME CHANGESET SCRIPT\x00configure\x00REBASE-BLOB\x00rebase\x00OP VALUE\x00strm_size\x00sqlite3session\x00sqlite3session_foreach\x00sqlite3changeset_invert\x00sqlite3changeset_concat\x00sqlite3changeset_apply\x00sqlite3changeset_apply_v2\x00sqlite3changeset_apply_replace_all\x00sql_exec_changeset\x00sqlite3rebaser_create\x00sqlite3session_config\x00incrblob\x00incrblob_%d\x00sqlite_unlock_notify_arg\x00sqlite_unlock_notify_argcount\x00SQLITE_COPY\x00SQLITE_CREATE_INDEX\x00SQLITE_CREATE_TABLE\x00SQLITE_CREATE_TEMP_INDEX\x00SQLITE_CREATE_TEMP_TABLE\x00SQLITE_CREATE_TEMP_TRIGGER\x00SQLITE_CREATE_TEMP_VIEW\x00SQLITE_CREATE_TRIGGER\x00SQLITE_CREATE_VIEW\x00SQLITE_DELETE\x00SQLITE_DROP_INDEX\x00SQLITE_DROP_TABLE\x00SQLITE_DROP_TEMP_INDEX\x00SQLITE_DROP_TEMP_TABLE\x00SQLITE_DROP_TEMP_TRIGGER\x00SQLITE_DROP_TEMP_VIEW\x00SQLITE_DROP_TRIGGER\x00SQLITE_DROP_VIEW\x00SQLITE_INSERT\x00SQLITE_PRAGMA\x00SQLITE_READ\x00SQLITE_SELECT\x00SQLITE_TRANSACTION\x00SQLITE_UPDATE\x00SQLITE_ATTACH\x00SQLITE_DETACH\x00SQLITE_ALTER_TABLE\x00SQLITE_REINDEX\x00SQLITE_ANALYZE\x00SQLITE_CREATE_VTABLE\x00SQLITE_DROP_VTABLE\x00SQLITE_FUNCTION\x00SQLITE_SAVEPOINT\x00SQLITE_RECURSIVE\x00????\x00SQLITE_DENY\x00SQLITE_IGNORE\x00RELEASE _tcl_transaction\x00COMMIT\x00ROLLBACK TO _tcl_transaction ; RELEASE _tcl_transaction\x00option\x00?CALLBACK?\x00?DATABASE? FILENAME\x00cannot open target database: \x00backup failed: \x00CALLBACK\x00cache option ?arg?\x00flush\x00size\x00size n\x00cannot convert \"\x00\" to integer\x00bad option \"\x00\": must be flush or size\x00NAME SCRIPT\x00?OPTION? ?BOOLEAN?\x00unknown config option: \"\x00\"\x00CONFLICT-ALGORITHM TABLE FILENAME ?SEPARATOR? ?NULLINDICATOR?\x00\t\x00Error: non-null separator required for copy\x00rollback\x00abort\x00fail\x00ignore\x00replace\x00Error: \"\x00\", conflict-algorithm must be one of: rollback, abort, fail, ignore, or replace\x00SELECT * FROM '%q'\x00Error: no such table: \x00Error: \x00Error: can't malloc()\x00INSERT OR %q INTO '%q' VALUES(?\x00Error: cannot open file: \x00BEGIN\x00Error: %s line %d: expected %d columns of data but found %d\x00, failed while processing line: \x00?DATABASE? VALUE\x00-maxsize\x00-readonly\x00unknown option: \x00unable to set MEMDB content\x00extension loading is turned off at compile-time\x00-withoutnulls\x00unknown option: \"\x00?OPTIONS? SQL ?ARRAY-NAME? ?SCRIPT?\x00NAME ?SWITCHES? SCRIPT\x00-argcount\x00option requires an argument: \x00number of arguments must be non-negative\x00-deterministic\x00-directonly\x00-innocuous\x00-returntype\x00real\x00text\x00blob\x00any\x00type\x00\": must be -argcount, -deterministic, -directonly, -innocuous, or -returntype\x00?-readonly? ?DB? TABLE COLUMN ROWID\x00NULLVALUE\x00N CALLBACK\x00KEY\x00cannot open source database: \x00restore failed: \x00restore failed: source database busy\x00?DATABASE?\x00(step|sort|autoindex)\x00sort\x00autoindex\x00vmstep\x00bad argument: should be autoindex, step, sort or vmstep\x00MILLISECONDS\x00?CALLBACK? ?MASK?\x00trace type\x00SAVEPOINT _tcl_transaction\x00[TYPE] SCRIPT\x00transaction type\x00BEGIN EXCLUSIVE\x00BEGIN IMMEDIATE\x00?SCRIPT?\x00SUB-COMMAND ?ARGS?\x00hook ?SCRIPT?\x00INDEX\x00-use-legacy-prepare\x00-last-stmt-ptr\x00unknown argument: \x00authorizer\x00backup\x00bind_fallback\x00busy\x00cache\x00changes\x00collate\x00collation_needed\x00commit_hook\x00complete\x00config\x00copy\x00deserialize\x00enable_load_extension\x00errorcode\x00erroroffset\x00exists\x00function\x00interrupt\x00last_insert_rowid\x00nullvalue\x00onecolumn\x00preupdate\x00profile\x00rekey\x00restore\x00rollback_hook\x00serialize\x00status\x00timeout\x00total_changes\x00trace\x00trace_v2\x00transaction\x00unlock_notify\x00update_hook\x00version\x00wal_hook\x00defensive\x00dqs_ddl\x00dqs_dml\x00enable_fkey\x00enable_qpsg\x00enable_trigger\x00enable_view\x00fts3_tokenizer\x00legacy_alter_table\x00legacy_file_format\x00load_extension\x00no_ckpt_on_close\x00reset_database\x00trigger_eqp\x00trusted_schema\x00writable_schema\x00statement\x00row\x00deferred\x00exclusive\x00immediate\x00depth\x00hook\x00new\x00old\x00HANDLE ?FILENAME? ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nofollow BOOLEAN? ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN? ?-uri BOOLEAN?\x00-version\x00-sourceid\x00-has-codec\x000\x00-key\x00-vfs\x00-create\x00-nofollow\x00-nomutex\x00-fullmutex\x00-uri\x00-translatefilename\x00sqlite3\x00sqlite\x003.39.3\x00if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewline \"% \"\n}\nflush stdout\nappend line [gets stdin]\nif {[info complete $line]} {\nif {[catch {uplevel #0 $line} result]} {\nputs stderr \"Error: $result\"\n} elseif {$result!=\"\"} {\nputs $result\n}\nset line {}\n} else {\nappend line \\n\n}\n}\n}\n\x00SQLITE_DEBUG_BREAK\x00attach debugger to process %d and press any key to continue.\n\x00utf-8\x00argc\x00argv0\x00argv\x00errorInfo\x00%s: %s\n\x00SQLITE-CONNECTION\x00command not found: \x00error code %s (%d) does not match sqlite3_errcode %s (%d)\x00OMIT_MISUSE\x00wrong # args: should be \"\x00 DB FORMAT STRING\x00 DB HEX\x00 DB\x00 DB SQL\x00%z%s%s\x00%s%n\x00abcdefghijklmnopqrstuvwxyz\x00 DB FORMAT STRING ?COUNT?\x00 DB\"\x00 FILENAME\"\x00%04x\x00tkt2213 is not fixed\x00text16\x00bytes\x00bytes16\x00noop\x00x_coalesce\x00hex8\x00hex16\x00tkt2213func\x00pointer_change\x00counter1\x00counter2\x00intreal\x00x_sqlite_exec\x00value of 40 handed to x_count\x00x_count totals to 42\x00x_count\x00legacy_count\x00 TEXT\"\x00 FORMAT INT INT INT\"\x00argument is not a valid 64-bit integer\x00 FORMAT INT INT ?STRING?\"\x00 INT FORMAT INT INT ?STRING?\"\x00N must be non-negative\x00 FORMAT INT INT DOUBLE\"\x00 FORMAT DOUBLE DOUBLE\"\x00 FORMAT STRING\"\x00%08x%08x\x002nd argument should be 16-characters of hex\x00?BOOLEAN?\x00DB BOOLEAN\x00DB dbname tblname colname\x00CHANNEL ROWID\x00DB-HANDLE NAME CMP-PROC DEL-PROC\x00sqlite3_create_collate_v2() failed to detect an invalid encoding\x00utf8\x00utf16\x00utf16le\x00utf16be\x00DB NAME NARG ENC SWITCHES...\x00encoding\x00-func\x00-step\x00-final\x00-destroy\x00switch\x00DB-HANDLE FILE ?PROC?\x00this build omits sqlite3_load_extension()\x00DB-HANDLE ONOFF\x00string\x00first argument should be one of: int int64 string double null value\x00 DB FUNCTION-NAME\x00 <STMT>\x00STMT PARAMETER RESETFLAG\x00SQLITE_STMTSTATUS_FULLSCAN_STEP\x00SQLITE_STMTSTATUS_SORT\x00SQLITE_STMTSTATUS_AUTOINDEX\x00SQLITE_STMTSTATUS_VM_STEP\x00SQLITE_STMTSTATUS_REPREPARE\x00SQLITE_STMTSTATUS_RUN\x00SQLITE_STMTSTATUS_MEMUSED\x00NBYTE\x00DB DBNAME\x00DB DBNAME SNAPSHOT\x00SNAPSHOT\x00SNAPSHOT1 SNAPSHOT2\x00bad SNAPSHOT\x00FILE\x00PATH\x00 DB STMT\x00 STMT\x00 FROM-STMT TO-STMT\x00 VM IDX VALUE (null|static|normal)\"\x00static\x00static-nbytes\x00normal\x00blob10\x00abc\x00xyz\x00pq\x004th argument should be \"null\" or \"static\" or \"normal\"\x00(%d) \x00test_collate\x00UTF-8\x00UTF-16LE\x00UTF-16BE\x00 <DB> <utf8> <utf16le> <utf16be>\x00utf16bin\x00utf16_unaligned\x00utf16_aligned\x00test_function\x00<error code>\x00STMT IDX N\x00 STMT N VALUE\x00NaN\x00SNaN\x00-NaN\x00-SNaN\x00+Inf\x00-Inf\x00Epsilon\x00-Epsilon\x00NaN0\x00-NaN0\x00 STMT N\x00 STMT N VALUE BYTES\x00 STMT N DATA BYTES\x00cannot use %d blob bytes, have %d\x00STMT N NEW|OLD IDX\x00expected new or old, got: \x00STMT N SELECT\x00error in SQL: \x00error runnning SQL: \x00-transient\x00-static\x00-int32\x00-int64\x00-double\x00-text\x00--\x00text data must be either -static or -transient\x00cannot be both -static and -transient\x00[OPTIONS] STMT IDX VALUE ...\x00STMT\x00STMT N\x00STMT NAME\x00 DB sql bytes ?tailvar?\x00 DB sql bytes tailvar\x00 DB sql bytes flags tailvar\x00\x00SELECT 1\x00 filename options-list\x00FILENAME FLAGS VFS\x00SQLITE_OPEN_READONLY\x00SQLITE_OPEN_READWRITE\x00SQLITE_OPEN_CREATE\x00SQLITE_OPEN_DELETEONCLOSE\x00SQLITE_OPEN_EXCLUSIVE\x00SQLITE_OPEN_AUTOPROXY\x00SQLITE_OPEN_MAIN_DB\x00SQLITE_OPEN_TEMP_DB\x00SQLITE_OPEN_TRANSIENT_DB\x00SQLITE_OPEN_MAIN_JOURNAL\x00SQLITE_OPEN_TEMP_JOURNAL\x00SQLITE_OPEN_SUBJOURNAL\x00SQLITE_OPEN_SUPER_JOURNAL\x00SQLITE_OPEN_NOMUTEX\x00SQLITE_OPEN_FULLMUTEX\x00SQLITE_OPEN_SHAREDCACHE\x00SQLITE_OPEN_PRIVATECACHE\x00SQLITE_OPEN_WAL\x00SQLITE_OPEN_URI\x00SQLITE_OPEN_EXRESCODE\x00flag\x00<utf-16 sql>\x00 STMT column\x00FLOAT\x00TEXT\x00BLOB\x00 DB function-name\x00VARIABLE\x00?N?\x001234567890000000\x00__one\x00__two\x00notadatabase\x00Unexpected non-zero errno: \x00DB [DBNAME]\x00%u\x00DB DBNAME SIZE\x00 DB PWD\x00 DB FLAG\x00%d %d\x00 DB ?AUXDB?\x00DB N\x00 DB ID VALUE\x00unknown limit type: \x00SQLITE_LIMIT_LENGTH\x00SQLITE_LIMIT_SQL_LENGTH\x00SQLITE_LIMIT_COLUMN\x00SQLITE_LIMIT_EXPR_DEPTH\x00SQLITE_LIMIT_COMPOUND_SELECT\x00SQLITE_LIMIT_VDBE_OP\x00SQLITE_LIMIT_FUNCTION_ARG\x00SQLITE_LIMIT_ATTACHED\x00SQLITE_LIMIT_LIKE_PATTERN_LENGTH\x00SQLITE_LIMIT_VARIABLE_NUMBER\x00SQLITE_LIMIT_TRIGGER_DEPTH\x00SQLITE_LIMIT_WORKER_THREADS\x00SQLITE_LIMIT_TOOSMALL\x00SQLITE_LIMIT_TOOBIG\x00SEED ?DB?\x00BOOLEAN\x00current\x00max\x00min\x00recyclable\x00DB ?NAME?\x00passive\x00full\x00restart\x00truncate\x00DB MODE ?NAME?\x00mode\x00DB VALUE\x00COMMAND ...\x00command has no objProc: \x00%d %d %d %s\n\x00SQLITE_TESTCTRL_LOCALTIME_FAULT\x00SQLITE_TESTCTRL_SORTER_MMAP\x00SQLITE_TESTCTRL_IMPOSTER\x00SQLITE_TESTCTRL_INTERNAL_FUNCTIONS\x00VERB ARGS...\x00VERB\x000|1|2\x00DB LIMIT\x00DB dbName onOff tnum\x00ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d\x00DB OPT BOOLEAN\x00unknown optimization - should be one of:\x00all\x00none\x00query-flattener\x00groupby-order\x00factor-constants\x00distinct-opt\x00cover-idx-scan\x00order-by-idx-join\x00transitive\x00omit-noop-join\x00stat4\x00skip-scan\x00push-down\x00balanced-merge\x00DB NAME ...\x00no such extension: \x00initialization of \x00 failed: \x00amatch\x00appendvfs\x00closure\x00fileio\x00nextchar\x00series\x00spellfix\x00totype\x00DB SQL1 NSTEP SQL2\x00data error: (a!=b)\x00checksum mismatch\x00sql error: \x00TYPE\x00Deliberate panic\x00DB SETTING [VALUE]\x00SQLITE_*\x00DBCONFIG_*\x00ENABLE_*\x00unknown sqlite3_db_config setting\x00FKEY\x00TRIGGER\x00FTS3_TOKENIZER\x00LOAD_EXTENSION\x00NO_CKPT_ON_CLOSE\x00QPSG\x00TRIGGER_EQP\x00RESET_DB\x00DEFENSIVE\x00WRITABLE_SCHEMA\x00LEGACY_ALTER_TABLE\x00DQS_DML\x00DQS_DDL\x00LEGACY_FILE_FORMAT\x00DB ?SCHEMA?\x00icecube\x00DB ?DBNAME?\x00DB OFFSET DATA\x00HEXDB\x00| size %d pagesize %d\x00bad 'pagesize' field\x00bad 'size' field\x00| page %d offset %d\x00| %d: %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x\x00DB ?SCRIPT?\x00sqlite3_autovacuum_pages() returns %d\x00sqlite_search_count\x00sqlite_found_count\x00sqlite_sort_count\x00sqlite3_max_blobsize\x00sqlite_like_count\x00sqlite_interrupt_count\x00sqlite_open_file_count\x00sqlite_current_time\x00sqlite3_xferopt_count\x00sqlite3_pager_readdb_count\x00sqlite3_pager_writedb_count\x00sqlite3_pager_writej_count\x00unaligned_string_counter\x00sqlite_last_needed_collation\x00sqlite_query_plan\x00sqlite_opentemp_count\x00sqlite_static_bind_value\x00sqlite_static_bind_nbyte\x00sqlite_temp_directory\x00sqlite_data_directory\x00bitmask_size\x00longdouble_size\x00sqlite_sync_count\x00sqlite_fullsync_count\x00db_enter\x00db_leave\x00sqlite3_mprintf_int\x00sqlite3_mprintf_int64\x00sqlite3_mprintf_long\x00sqlite3_mprintf_str\x00sqlite3_snprintf_str\x00sqlite3_mprintf_stronly\x00sqlite3_mprintf_double\x00sqlite3_mprintf_scaled\x00sqlite3_mprintf_hexdouble\x00sqlite3_mprintf_z_test\x00sqlite3_mprintf_n_test\x00sqlite3_snprintf_int\x00sqlite3_last_insert_rowid\x00sqlite3_exec_printf\x00sqlite3_exec_hex\x00sqlite3_exec\x00sqlite3_exec_nr\x00sqlite3_get_table_printf\x00sqlite3_close\x00sqlite3_close_v2\x00sqlite3_create_function\x00sqlite3_create_aggregate\x00sqlite3_drop_modules\x00sqlite_register_test_function\x00sqlite_abort\x00sqlite_bind\x00breakpoint\x00sqlite3_key\x00sqlite3_rekey\x00sqlite3_interrupt\x00sqlite_delete_function\x00sqlite_delete_collation\x00sqlite3_get_autocommit\x00sqlite3_busy_timeout\x00printf\x00sqlite3IoTrace\x00clang_sanitize_address\x00sqlite3_db_config\x00sqlite3_txn_state\x00bad_behavior\x00register_dbstat_vtab\x00sqlite3_connection_pointer\x00intarray_addr\x00int64array_addr\x00doublearray_addr\x00textarray_addr\x00sqlite3_bind_int\x00sqlite3_bind_zeroblob\x00sqlite3_bind_zeroblob64\x00sqlite3_bind_int64\x00sqlite3_bind_double\x00sqlite3_bind_null\x00sqlite3_bind_text\x00sqlite3_bind_text16\x00sqlite3_bind_blob\x00sqlite3_bind_value_from_select\x00sqlite3_bind_value_from_preupdate\x00sqlite3_carray_bind\x00sqlite3_bind_parameter_count\x00sqlite3_bind_parameter_name\x00sqlite3_bind_parameter_index\x00sqlite3_clear_bindings\x00sqlite3_sleep\x00sqlite3_errcode\x00sqlite3_extended_errcode\x00sqlite3_errmsg\x00sqlite3_error_offset\x00sqlite3_errmsg16\x00sqlite3_open\x00sqlite3_open16\x00sqlite3_open_v2\x00sqlite3_complete16\x00sqlite3_normalize\x00sqlite3_prepare\x00sqlite3_prepare16\x00sqlite3_prepare_v2\x00sqlite3_prepare_v3\x00sqlite3_prepare_tkt3134\x00sqlite3_prepare16_v2\x00sqlite3_finalize\x00sqlite3_stmt_status\x00sqlite3_reset\x00sqlite3_expired\x00sqlite3_transfer_bindings\x00sqlite3_changes\x00sqlite3_step\x00sqlite3_sql\x00sqlite3_expanded_sql\x00sqlite3_next_stmt\x00sqlite3_stmt_readonly\x00sqlite3_stmt_isexplain\x00sqlite3_stmt_busy\x00uses_stmt_journal\x00sqlite3_release_memory\x00sqlite3_db_release_memory\x00sqlite3_db_cacheflush\x00sqlite3_system_errno\x00sqlite3_db_filename\x00sqlite3_db_readonly\x00sqlite3_soft_heap_limit\x00sqlite3_soft_heap_limit64\x00sqlite3_hard_heap_limit64\x00sqlite3_thread_cleanup\x00sqlite3_pager_refcounts\x00sqlite3_load_extension\x00sqlite3_enable_load_extension\x00sqlite3_extended_result_codes\x00sqlite3_limit\x00dbconfig_maindbname_icecube\x00save_prng_state\x00restore_prng_state\x00reset_prng_state\x00prng_seed\x00extra_schema_checks\x00database_never_corrupt\x00database_may_be_corrupt\x00optimization_control\x00tcl_objproc\x00sqlite3_column_count\x00sqlite3_data_count\x00sqlite3_column_type\x00sqlite3_column_blob\x00sqlite3_column_double\x00sqlite3_column_int64\x00sqlite3_column_text\x00sqlite3_column_name\x00sqlite3_column_int\x00sqlite3_column_bytes\x00sqlite3_column_decltype\x00sqlite3_column_database_name\x00sqlite3_column_table_name\x00sqlite3_column_origin_name\x00sqlite3_column_bytes16\x00sqlite3_column_text16\x00sqlite3_column_name16\x00add_alignment_test_collations\x00sqlite3_column_decltype16\x00sqlite3_column_database_name16\x00sqlite3_column_table_name16\x00sqlite3_column_origin_name16\x00sqlite3_create_collation_v2\x00sqlite3_global_recover\x00working_64bit_int\x00vfs_unlink_test\x00vfs_initfail_test\x00vfs_unregister_all\x00vfs_reregister_all\x00file_control_test\x00file_control_lasterrno_test\x00file_control_lockproxy_test\x00file_control_chunksize_test\x00file_control_sizehint_test\x00file_control_data_version\x00file_control_persist_wal\x00file_control_powersafe_overwrite\x00file_control_vfsname\x00file_control_reservebytes\x00file_control_tempfilename\x00file_control_external_reader\x00sqlite3_vfs_list\x00sqlite3_create_function_v2\x00add_test_collate\x00add_test_collate_needed\x00add_test_function\x00add_test_utf16bin_collate\x00sqlite3_test_errstr\x00tcl_variable_type\x00sqlite3_enable_shared_cache\x00sqlite3_shared_cache_report\x00sqlite3_libversion_number\x00sqlite3_table_column_metadata\x00sqlite3_blob_reopen\x00pcache_stats\x00sqlite3_unlock_notify\x00sqlite3_wal_checkpoint\x00sqlite3_wal_checkpoint_v2\x00sqlite3_wal_autocheckpoint\x00test_sqlite3_log\x00print_explain_query_plan\x00sqlite3_test_control\x00getrusage\x00load_static_extension\x00sorter_test_fakeheap\x00sorter_test_sort4_helper\x00vfs_current_time_int64\x00sqlite3_snapshot_get\x00sqlite3_snapshot_open\x00sqlite3_snapshot_free\x00sqlite3_snapshot_cmp\x00sqlite3_snapshot_recover\x00sqlite3_snapshot_get_blob\x00sqlite3_snapshot_open_blob\x00sqlite3_snapshot_cmp_blob\x00sqlite3_delete_database\x00atomic_batch_write\x00sqlite3_mmap_warm\x00sqlite3_config_sorterref\x00sqlite3_autovacuum_pages\x00decode_hexdb\x00test_write_db\x00sqlite3_register_cksumvfs\x00sqlite3_unregister_cksumvfs\x00*** OBSOLETE VARIABLE ***\x00 FILENAME N-PAGE\"\x00 ID\"\x00ref\x00page\x00err\x00hit\x00miss\x00ovfl\x00 ID PGNO\"\x00 PAGE\"\x00 PAGE DATA\"\x00 N-MEGABYTES FILE\"\x00open failed: \x00Hello, World!\x00write failed: \x00 PENDING-BYTE\"\x00fault simulator script failed: [%s]\x00 SCRIPT\"\x00 SIZE PROGRAM\"\x00sqlite_io_error_pending\x00sqlite_io_error_persist\x00sqlite_io_error_hit\x00sqlite_io_error_hardhit\x00sqlite_diskfull_pending\x00sqlite_diskfull\x00sqlite_pending_byte\x00pager_open\x00pager_close\x00pager_commit\x00pager_rollback\x00pager_stmt_begin\x00pager_stmt_commit\x00pager_stmt_rollback\x00pager_stats\x00pager_pagecount\x00page_get\x00page_lookup\x00page_unref\x00page_read\x00page_write\x00page_number\x00pager_truncate\x00fake_big_file\x00sqlite3BitvecBuiltinTest\x00sqlite3_test_control_pending_byte\x00sqlite3_test_control_fault_install\x00 FILENAME NCACHE FLAGS\"\x00read\x00write\x00 ID TABLENUM WRITEABLE\"\x00 START MULTIPLIER COUNT INCREMENT\"\x00putVarint returned %d - should be between 1 and 9\x00putVarint returned %d and getVarint returned %d\x00Wrote 0x%016llx and got back 0x%016llx\x00putVarint returned %d and GetVarint32 returned %d\x00Wrote 0x%016llx and got back 0x%016llx from GetVarint32\x00 DB-HANDLE ?N?\"\x00No such db-handle: \"\x00 BT NCACHE\"\x00?-intkey? CSR KEY VALUE\x00btree_insert\x00btree_open\x00btree_close\x00btree_begin_transaction\x00btree_pager_stats\x00btree_cursor\x00btree_close_cursor\x00btree_next\x00btree_eof\x00btree_payload_size\x00btree_first\x00btree_varint_test\x00btree_from_db\x00btree_ismemdb\x00btree_set_cache_size\x00thread ID must be an upper case letter\x00 ID FILENAME\x00thread \x00 is already running\x00failed to create the thread\x00 ID\x00no such thread\x00 ID N\x00column number out of range\x00no database is open\x00 ID SQL\x00no virtual machine available\x00 IDL\x00 ID1 ID2\x00 ID DB\x00thread_create\x00thread_wait\x00thread_halt\x00thread_argc\x00thread_argv\x00thread_colname\x00thread_result\x00thread_error\x00thread_compile\x00thread_step\x00thread_finalize\x00thread_swap\x00thread_db_get\x00thread_db_put\x00thread_stmt_get\x00 <repeat-count> <do-calls>\x00hello world\x00UTF8\x00UTF16LE\x00UTF16BE\x00UTF16\x00No such encoding: \x00 <string/blob> <from enc> <to enc>\x00binarize\x00test_value_overhead\x00test_translate\x00translate_selftest\x00out of memory in the crash simulator\n\x00atomic\x00atomic512\x00atomic1k\x00atomic2k\x00atomic4k\x00atomic8k\x00atomic16k\x00atomic32k\x00atomic64k\x00sequential\x00safe_append\x00powersafe_overwrite\x00batch-atomic\x00-sectorsize\x00-characteristics\x00Bad option: \"\x00\" - must be \"-characteristics\" or \"-sectorsize\"\x00Option requires an argument: \"\x00no such flag\x00ENABLE ?DEFAULT?\x00crash\x00?OPTIONS? DELAY CRASHFILE\x00Filename is too long: \"\x00NWRITE\x00?-default? PARENT-VFS\x00-default\x00\": must be -default\x00Error in jt_register\x00sqlite3_crash_enable\x00sqlite3_crashparams\x00sqlite3_crash_now\x00sqlite3_simulate_device\x00sqlite3_crash_on_write\x00unregister_devsim\x00register_jt_vfs\x00unregister_jt_vfs\x00client_create\x00client_wait\x00client_halt\x00client_argc\x00client_argv\x00client_colname\x00client_result\x00client_error\x00client_compile\x00client_step\x00client_reset\x00client_finalize\x00client_swap\x00echo_module_fail(%s,%s)\x00echo-vtab-error: %s\x00SELECT * FROM %Q\x00PRAGMA index_list(%s)\x00PRAGMA index_info(%s)\x00echo_module\x00SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?\x00%s%s\x00xCreate\x00CREATE TABLE %Q(logmsg)\x00xConnect\x00xDisconnect\x00xDestroy\x00DROP TABLE %Q\x00xOpen\x00xNext\x00xColumn\x00xFilter\x00, *\x00%z, %s\x00%z, NULL\x00echo_module_ignore_usable\x00xBestIndex\x00echo_module_cost\x00SELECT count(*) FROM %Q\x00SELECT rowid%z FROM %Q\x00=\x00<\x00>\x00<=\x00>=\x00LIKE\x00like\x00glob\x00 %s %s LIKE (SELECT '%%'||?||'%%')\x00 %s %s %s ?\x00DESC\x00ASC\x00 ORDER BY %s %s\x00xUpdate\x00 SET\x00UPDATE %Q\x00 SET rowid=?1 \x00%s %Q=?%d\x00 WHERE rowid=?%d\x00DELETE FROM %Q WHERE rowid = ?1\x00INSERT INTO %Q (\x00%s%Q\x00%s?%d\x00) VALUES(\x00echo(%s)\x00xBegin\x00echo_module_begin_fail\x00xSync\x00echo_module_sync_fail\x00xCommit\x00xRollback\x00::echo_glob_overload\x00xRename\x00ALTER TABLE %s RENAME TO %s%s\x00function_that_does_not_exist_0982ma98\x00echo\x00echo_v2\x00register_echo_module\x00sqlite3_declare_vtab\x00N/A\x00sqlite3_create_collation\x00Error testing function: \x00sqlite3_malloc\x00sqlite3_realloc\x00c_misuse_test\x00c_realloc_test\x00c_collation_test\x00sqlite3_reset_auto_extension\x00npage\x00finish\x00remaining\x00pagecount\x00CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME\x00sqlite3_backup_init() failed\x00sqlite3_backup\x00wrong number of arguments\x00unexpected: %s\x00eq\x00gt\x00le\x00lt\x00ge\x00match\x00ne\x00isnot\x00isnotnull\x00isnull\x00limit\x00offset\x00column\x00usable\x00desc\x00constraints\x00orderby\x00mask\x00distinct\x00in\x00rhs_value\x00INDEX BOOLEAN\x00INDEX ?DEFAULT?\x00bestindex%d\x00cost\x00idxnum\x00idxstr\x00rows\x00use\x00omit\x00unexpected: %d\x00tcl\x00register_tcl_module\x00incrblob_\x00DB DATABASE TABLE COLUMN ROWID FLAGS VARNAME\x00HANDLE\x00CHANNEL OFFSET N\x00out of memory in testdata/sqlite-src-3390300/src/test_blob.c\x00HANDLE OFFSET DATA ?NDATA?\x00sqlite3_blob_open\x00sqlite3_blob_close\x00sqlite3_blob_bytes\x00sqlite3_blob_read\x00sqlite3_blob_write\x00sqlite_options\x00malloc_usable_size\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x001\x00win32malloc\x00debug\x00default_ckptfullfsync\x00direct_read\x00dirsync\x00lfs\x00pagecache_overflow_stats\x00mmap\x00worker_threads\x008\x00memdebug\x008_3_names\x00cursorhints\x00hiddencolumns\x00mathlib\x00mem3\x00mem5\x00offset_sql_func\x00snapshot\x00mutex\x00mutex_noop\x00altertable\x00api_armor\x00atomicwrite\x00geopoly\x00json1\x00has_codec\x00like_match_blobs\x00auth\x00autoinc\x00autoreset\x00autovacuum\x00default_autovacuum\x00between_opt\x00builtin_test\x00bloblit\x00cast\x00check\x00cte\x00columnmetadata\x00oversize_cell_check\x00compileoption_diags\x00compound\x00conflict\x00crashtest\x00datetime\x00decltype\x00deprecated\x00diskio\x00floatingpoint\x00foreignkey\x00fts1\x00fts2\x00fts3\x00fts5\x00fts3_unicode\x00fts4_deferred\x00gettable\x00icu\x00icu_collations\x00integrityck\x00legacyformat\x00like_opt\x00load_ext\x00localtime\x00lookaside\x00long_double\x00memorydb\x00memorymanage\x00mergesort\x00null_trim\x00or_opt\x00rbu\x00pager_pragmas\x00pragma\x00reindex\x00rtree\x00rtree_int_only\x00schema_pragmas\x00schema_version\x00session\x00stmtvtab\x00scanstatus\x00lock_proxy_pragmas\x00prefer_proxy_locking\x00shared_cache\x00subquery\x00tclvar\x00threadsafe\x00threadsafe1\x00threadsafe2\x00tempdb\x00trigger\x00truncate_opt\x00vacuum\x00view\x00vtab\x00wal\x00wsd\x00update_delete_limit\x00fast_secure_delete\x00secure_delete\x00userauth\x00multiplex_ext_overwrite\x00yytrackmaxstackdepth\x00sqllog\x00uri_00_error\x00normalize\x00windowfunc\x00SQLITE_MAX_LENGTH\x00SQLITE_MAX_COLUMN\x00SQLITE_MAX_SQL_LENGTH\x00SQLITE_MAX_EXPR_DEPTH\x00SQLITE_MAX_COMPOUND_SELECT\x00SQLITE_MAX_VDBE_OP\x00SQLITE_MAX_FUNCTION_ARG\x00SQLITE_MAX_VARIABLE_NUMBER\x00SQLITE_MAX_PAGE_SIZE\x00SQLITE_MAX_PAGE_COUNT\x00SQLITE_MAX_LIKE_PATTERN_LENGTH\x00SQLITE_MAX_TRIGGER_DEPTH\x00SQLITE_DEFAULT_CACHE_SIZE\x00SQLITE_DEFAULT_PAGE_SIZE\x00SQLITE_DEFAULT_FILE_FORMAT\x00SQLITE_DEFAULT_SYNCHRONOUS\x00SQLITE_DEFAULT_WAL_SYNCHRONOUS\x00SQLITE_MAX_ATTACHED\x00SQLITE_MAX_DEFAULT_PAGE_SIZE\x00SQLITE_MAX_WORKER_THREADS\x00TEMP_STORE\x00__GNUC__\x00%s-journal\x00%s-wal\x00%s-shm\x00%s%03d\x00%s-journal%03d\x00%s-wal%03d\x00devsym\x00writecrash\x00CREATE TABLE xyz(dir, name);\x00CREATE TABLE xyz(path, size, data);\x00WITH r(d) AS (  SELECT CASE WHEN dir=?2 THEN ?3 ELSE dir END || '/' || name     FROM fsdir WHERE dir=?1 AND name NOT LIKE '.%'  UNION ALL  SELECT dir || '/' || name FROM r, fsdir WHERE dir=d AND name NOT LIKE '.%') SELECT d FROM r;\x00/\x00CREATE TABLE x(path TEXT, data TEXT)\x00SELECT * FROM %Q.%Q WHERE rowid=?\x00fs\x00fstree\x00register_fs_module\x00abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-!,:*^+=_|?/<> \x00sqlite3_prepare_v2() error: %s\x000123456789abcdef\x00test_agg_errmsg16\x00randstr\x00test_destructor\x00test_destructor16\x00hex_to_utf16be\x00hex_to_utf16le\x00hex_to_utf8\x00test_destructor_count\x00test_auxdata\x00test_error\x00test_eval\x00test_isolation\x00test_counter\x00real2hex\x00test_decode\x00test_extract\x00test_zeroblob\x00test_getsubtype\x00test_setsubtype\x00test_frombind\x00tx\x00funcxx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00sqlite3_create_function abused test failed\x00invalid matchinfo blob passed to function rank()\x00wrong number of arguments to function rank()\x00rank\x00autoinstall_test_functions\x00abuse_create_function\x00install_fts3_rank_function\x000123456789ABCDEF\x00FILENAME OFFSET AMT\x00r\x00cannot open input file \x00FILENAME OFFSET HEXDATA\x00r+b\x00r+\x00cannot open output file \x00HEXDATA\x00[utf8_to_utf8] unavailable - SQLITE_DEBUG not defined\x00BLOB VARNAME\x00LIST\x00hexio_read\x00hexio_write\x00hexio_get_int\x00hexio_render_int16\x00hexio_render_int32\x00utf8_to_utf8\x00read_fts3varint\x00make_fts3record\x00mem\x00pcache\x00Unknown argument: \"\x00init_wrapper_install\x00init_wrapper_query\x00init_wrapper_uninstall\x00init_wrapper_clear\x00CREATE TABLE x(value INTEGER PRIMARY KEY)\x00CREATE VIRTUAL TABLE temp.%Q USING %Q\x00INTARRAY\x00SQLITE_NOMEM\x00sqlite3_intarray_create\x00sqlite3_intarray_bind\x00jt\x00-journal\x00NBYTES\x00PRIOR NBYTES\x00bad pointer: \x00PRIOR\x00ADDRESS SIZE HEX\x00size must be positive\x00no data\x00ADDRESS SIZE\x00?RESET?\x00DEPT\x00FILENAME\x00COUNTER ?OPTIONS?\x00-repeat\x00-benigncnt\x00TITLE\x00SUB-COMMAND ...\x00start\x00stop\x00dump\x00clear\x00sync\x00SIZE N\x00INSTALLFLAG DISCARDCHANCE PRNGSEEED HIGHSTRESS\x00discard-chance should be between 0 and 100\x00SIZE COUNT\x00BUFID SIZE COUNT\x00illegal arguments - see documentation\x00NBYTE NMINALLOC\x00[DB]\x00sqlite3_db_config(db, 99999) does not return SQLITE_ERROR\x00sqlite3_config(99999) does not return SQLITE_ERROR\x00PARAMETER RESETFLAG\x00SQLITE_STATUS_MEMORY_USED\x00SQLITE_STATUS_MALLOC_SIZE\x00SQLITE_STATUS_PAGECACHE_USED\x00SQLITE_STATUS_PAGECACHE_OVERFLOW\x00SQLITE_STATUS_PAGECACHE_SIZE\x00SQLITE_STATUS_SCRATCH_USED\x00SQLITE_STATUS_SCRATCH_OVERFLOW\x00SQLITE_STATUS_SCRATCH_SIZE\x00SQLITE_STATUS_PARSER_STACK\x00SQLITE_STATUS_MALLOC_COUNT\x00DB PARAMETER RESETFLAG\x00SQLITE_\x00DBSTATUS_\x00LOOKASIDE_USED\x00CACHE_USED\x00SCHEMA_USED\x00STMT_USED\x00LOOKASIDE_HIT\x00LOOKASIDE_MISS_SIZE\x00LOOKASIDE_MISS_FULL\x00CACHE_HIT\x00CACHE_MISS\x00CACHE_WRITE\x00DEFERRED_FKS\x00CACHE_USED_SHARED\x00CACHE_SPILL\x00?INTEGER?\x00sqlite3_free\x00memset\x00memget\x00sqlite3_memory_used\x00sqlite3_memory_highwater\x00sqlite3_memdebug_backtrace\x00sqlite3_memdebug_dump\x00sqlite3_memdebug_fail\x00sqlite3_memdebug_pending\x00sqlite3_memdebug_settitle\x00sqlite3_memdebug_malloc_count\x00sqlite3_memdebug_log\x00sqlite3_config_pagecache\x00sqlite3_config_alt_pcache\x00sqlite3_status\x00sqlite3_db_status\x00install_malloc_faultsim\x00sqlite3_config_heap\x00sqlite3_config_heap_size\x00sqlite3_config_memstatus\x00sqlite3_config_lookaside\x00sqlite3_config_error\x00sqlite3_config_uri\x00sqlite3_config_cis\x00sqlite3_config_pmasz\x00sqlite3_db_config_lookaside\x00sqlite3_dump_memsys3\x00sqlite3_dump_memsys5\x00sqlite3_install_memsys3\x00sqlite3_memdebug_vfs_oom_test\x00%05u\x00 FILENAME [OFFSET AMT]\"\x00unable to open file \"\x00\" for reading\x00md5\x00md5-10x8\x00md5file\x00md5file-10x8\x00md5sum\x00%03d\x00multiplexor.xAccess failure on %s\x00multiplexor.xOpen failure on %s\x00multiplex_control\x00chunksize\x00multiplex_\x00multiplex_truncate\x00multiplex_enabled\x00multiplex_chunksize\x00multiplex_filecount\x00multiplex/%z\x00multiplex\x00NAME MAKEDEFAULT\x00-force\x00?-force?\x00chunk_size\x00max_chunks\x00HANDLE DBNAME SUB-COMMAND INT-VALUE\x00expected database handle, got \"\x00sqlite3_multiplex_initialize\x00sqlite3_multiplex_shutdown\x00sqlite3_multiplex_control\x00fast\x00recursive\x00static_main\x00static_mem\x00static_open\x00static_prng\x00static_lru\x00static_pmem\x00static_app1\x00static_app2\x00static_app3\x00static_vfs1\x00static_vfs2\x00static_vfs3\x00mutex counters are \x00already installed\x00not installed\x00singlethread\x00multithread\x00serialized\x00mutex name\x00disable_mutex_init\x00disable_mutex_try\x00sqlite3_shutdown\x00sqlite3_initialize\x00sqlite3_config\x00enter_static_mutex\x00leave_static_mutex\x00enter_db_mutex\x00leave_db_mutex\x00alloc_dealloc_mutex\x00install_mutex_counters\x00read_mutex_counters\x00clear_mutex_counters\x00\x00\x00\x00\x00\x00\x00\x00vfslog/%z\x00sqlite_ostrace1.....\x00xClose\x00xRead\x00xWrite\x00xTruncate\x00xFilesize\x00xLock\x00xUnlock\x00xCheckResLock\x00xFileControl\x00xSectorSize\x00xDeviceChar\x00xDelete\x00xAccess\x00xFullPathname\x00xRandomness\x00xSleep\x00xCurrentTime\x00xShmUnmap\x00xShmLock\x00xShmBarrier\x00xShmMap\x00annotation\x00CREATE TABLE xxx(event, file, click, rc, size, offset)\x00vfslog\x00VFS\x00failed\x00VFS PARENT LOGFILE\x00bad sqlite3 handle: \x00annotate\x00finalize\x00register\x00quota/%z\x00quota\x00::piLimit_\x00PATTERN LIMIT SCRIPT\x00FILENAME MODE\x00HANDLE SIZE NELEM\x00HANDLE SIZE NELEM CONTENT\x00HANDLE ?HARDSYNC?\x00HANDLE OFFSET WHENCE\x00SEEK_SET\x00SEEK_CUR\x00SEEK_END\x00WHENCE should be SEEK_SET, SEEK_CUR, or SEEK_END\x00HANDLE SIZE\x00PATTERN TEXT\x00sqlite3_quota_initialize\x00sqlite3_quota_shutdown\x00sqlite3_quota_set\x00sqlite3_quota_file\x00sqlite3_quota_dump\x00sqlite3_quota_fopen\x00sqlite3_quota_fread\x00sqlite3_quota_fwrite\x00sqlite3_quota_fclose\x00sqlite3_quota_fflush\x00sqlite3_quota_fseek\x00sqlite3_quota_rewind\x00sqlite3_quota_ftell\x00sqlite3_quota_ftruncate\x00sqlite3_quota_file_size\x00sqlite3_quota_file_truesize\x00sqlite3_quota_file_mtime\x00sqlite3_quota_remove\x00sqlite3_quota_glob\x00sqlite3_quota_file_available\x00sqlite3_quota_ferror\x00cube\x00circle\x00Qcircle\x00breadthfirstsearch\x00register_cube_geom\x00register_circle_geom\x00CREATE TABLE x(database,tablename,cid,name,type,not_null,dflt_value,pk)\x00SELECT name FROM sqlite_temp_schema WHERE type='table'\x00SELECT name FROM %Q.sqlite_schema WHERE type='table'\x00PRAGMA %Q.table_info(%Q)\x00PRAGMA database_list\x00register_schema_module\x00PRAGMA main.journal_mode\x00CMDNAME PATH ?VFS? ?BUSY-HANDLER-SCRIPT?\x00sqlite3demo_superlock\x00open\x00access\x00getcwd\x00stat\x00fstat\x00ftruncate\x00fcntl\x00pread\x00pread64\x00pwrite\x00pwrite64\x00fchmod\x00fallocate\x00mremap\x00SYSCALL-LIST\x00system-call\x00?COUNT PERSIST?\x00EACCES\x00EINTR\x00EIO\x00EOVERFLOW\x00ENOMEM\x00EAGAIN\x00ETIMEDOUT\x00EBUSY\x00EPERM\x00EDEADLK\x00ENOLCK\x00SYSCALL ERRNO\x00errno\x00PGSZ\x00getpagesize\x00pgsz out of range\x00fault\x00install\x00uninstall\x00list\x00defaultvfs\x00pagesize\x00VFS does not support xSetSystemCall\x00test_syscall\x00load_testfixture_extensions\x00SLAVE\x00CREATE TABLE x(  name TEXT,  arrayname TEXT,  value TEXT,  fullname TEXT PRIMARY KEY) WITHOUT ROWID\x00array names\x00tclvar_filter_cmd\x00%s(%s)\x00expr {[info exists ::tclvar_set_omit] && $::tclvar_set_omit}\x00the 'fullname' column must be TEXT\x00prohibited TCL variable change\x00proc like {pattern str} {\n  set p [string map {% * _ ?} $pattern]\n  string match $p $str\n}\nproc tclvar_filter_cmd {eq match glob regexp like} {\n  set res {}\n  set pattern $eq\n  if {$pattern=={}} { set pattern $match }\n  if {$pattern=={}} { set pattern * }\n  foreach v [uplevel #0 info vars $pattern] {\n    if {($glob=={} || [string match $glob [uplevel #0 set $v]])\n     && ($like=={} || [like $like [uplevel #0 set $v]])\n     && ($regexp=={} || [regexp $regexp [uplevel #0 set $v]])\n    } {\n      lappend res $v\n    }\n  }\n  set res\n}\n\x00register_tclvar_module\x00clock_seconds\x00sqlthread\x00sqlite3_blocking_step\x00sqlite3_blocking_prepare_v2\x00sqlite3_nonblocking_prepare_v2\x00set\x00Error in Tcl_CreateThread()\x00no parent thread\x00parent\x00spawn\x00VARNAME SCRIPT\x00DBNAME\x00id\x00%s \x00SQLITE_IOERR\x00SQLITE_LOCKED\x00SQLITE_BUSY\x00SQLITE_READONLY\x00SQLITE_READONLY_CANTINIT\x00SQLITE_NOTFOUND\x00SQLITE_OMIT\x00normal|dataonly\x00full|dataonly\x00xCheckReservedLock\x00BEGIN_ATOMIC_WRITE\x00COMMIT_ATOMIC_WRITE\x00ZIPVFS\x00anon\x00SQLITE_ACCESS_EXISTS\x00SQLITE_ACCESS_READWRITE\x00SQLITE_ACCESS_READ\x00xShmOpen\x00 lock\x00 unlock\x00 shared\x00 exclusive\x00shm\x00filter\x00ioerr\x00fullerr\x00cantopenerr\x00script\x00devchar\x00sectorsize\x00subcommand\x00FILE ?VALUE?\x00failed to get full path: \x00no such file: \x00unknown method: \x00?CNT PERSIST?\x00default\x00undeletable_when_open\x00immutable\x00?ATTR-LIST?\x00bad flags: \x00?VALUE?\x00-noshm\x00-szosfile\x00-mxpathname\x00-iversion\x00-fullshm\x00VFSNAME ?-noshm BOOL? ?-fullshm BOOL? ?-default BOOL? ?-mxpathname INT? ?-szosfile INT? ?-iversion INT?\x00shared\x00lock\x00unlock\x00DB DBNAME (shared|exclusive) (lock|unlock) OFFSET N\x00ARG\x00DB DBNAME SLOT ?VALUE?\x00*-shm is not yet mapped\x00testvfs\x00vfs_shmlock\x00vfs_set_readmark\x00DB NAME XSTEP XFINAL XVALUE XINVERSE\x00fff\x00misuse test error\x00invalid argument\x00sumint\x00sum\x00sqlite3_create_window_function\x00test_create_window_function_misuse\x00test_create_sumint\x00test_override_sum\x00"
 60962  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data